trigger ConsumableOrderDetail1Trigger on Consumable_Orderdetails__c (after insert, after update, after delete) { //add by rentx 20210618 start if (StaticParameter.ConsumableOrderTrigger) { return ; } //ad by rentx 20210618 end List orderList = new List(); List updorderList = new List(); double total_amount=0; double consumable_count=0; double invoice_Cost_RMB = 0; double invoiced_Procount = 0; //已发票数量 double invoicedProCost_RMB = 0; //已发票金额 double shipment_amount; //出货金额 double rrturnPro_count; //返品数量 double rrturnPro_Cost_RMB; //返品金额 if (trigger.isInsert || trigger.isUpdate){ for (Consumable_Orderdetails__c local : Trigger.New) { //if (local.RecordType.DeveloperName == 'Detail1_Order' || // local.RecordType.DeveloperName == 'Detail1_Shipment' || // local.RecordType.DeveloperName == 'Detail1_Sale'){ orderList.add(local.Consumable_order__c); //} } if(orderList.size() >0){ AggregateResult[] results = [SELECT Consumable_order__c, sum(Sum_of_money__c) Sum_of_money, sum(Consumable_count__c) Consumable_count, sum(Invoice_Cost_RMB__c) Invoice_Cost_RMB, sum(Invoiced_Procount__c) Invoiced_Procount, sum(InvoicedProCost_RMB__c) InvoicedProCost_RMB, sum(Shipment_amount__c) Shipment_amount, sum(RrturnPro_count__c) RrturnPro_count, sum(RrturnPro_Cost_RMB__c) RrturnPro_Cost_RMB FROM Consumable_Orderdetails__c WHERE Consumable_order__c in :orderList GROUP BY Consumable_order__c]; for(AggregateResult ar: results){ Consumable_Order__c consumableOrder = new Consumable_Order__c(); consumableOrder.Id = String.valueOf(ar.get('Consumable_order__c')); consumableOrder.Total_amount__c = double.valueOf(ar.get('Sum_of_money')); consumableOrder.Total_num__c = double.valueOf(ar.get('Consumable_count')); consumableOrder.InvoiceNotPro_total_amount__c = double.valueOf(ar.get('Invoice_Cost_RMB')); consumableOrder.Total_Invoiced_Procount__c = double.valueOf(ar.get('Invoiced_Procount')); consumableOrder.InvoicedPro_total_amount__c = double.valueOf(ar.get('InvoicedProCost_RMB')); consumableOrder.Shipment_total_amount__c = double.valueOf(ar.get('Shipment_amount')); consumableOrder.RrturnPro_total_count__c = double.valueOf(ar.get('RrturnPro_count')); consumableOrder.RrturnPro_total_amount__c = double.valueOf(ar.get('RrturnPro_Cost_RMB')); consumableOrder.Invoice_total_amount__c = double.valueOf(ar.get('InvoicedProCost_RMB')); updorderList.add(consumableOrder); } update updorderList; } } if (trigger.isDelete){ orderList = new List(); updorderList = new List(); for (Consumable_Orderdetails__c local : Trigger.old) { if (local.Consumable_order__c!=null) orderList.add(local.Consumable_order__c); } if (orderList.size() > 0){ AggregateResult[] results = [SELECT Consumable_order__c, sum(Sum_of_money__c) Sum_of_money, sum(Consumable_count__c) Consumable_count, sum(Invoice_Cost_RMB__c) Invoice_Cost_RMB, sum(Invoiced_Procount__c) Invoiced_Procount, sum(InvoicedProCost_RMB__c) InvoicedProCost_RMB, sum(Shipment_amount__c) Shipment_amount, sum(RrturnPro_count__c) RrturnPro_count, sum(RrturnPro_Cost_RMB__c) RrturnPro_Cost_RMB FROM Consumable_Orderdetails__c WHERE Consumable_order__c in :orderList GROUP BY Consumable_order__c]; for(AggregateResult ar: results){ total_amount = double.valueOf(ar.get('Sum_of_money')); consumable_count = double.valueOf(ar.get('Consumable_count')); invoice_Cost_RMB = double.valueOf(ar.get('Invoice_Cost_RMB')); invoiced_Procount = double.valueOf(ar.get('Invoiced_Procount')); invoicedProCost_RMB = double.valueOf(ar.get('InvoicedProCost_RMB')); shipment_amount = double.valueOf(ar.get('Shipment_amount')); rrturnPro_count = double.valueOf(ar.get('RrturnPro_count')); rrturnPro_Cost_RMB = double.valueOf(ar.get('RrturnPro_Cost_RMB')); Consumable_Order__c consumableOrder = new Consumable_Order__c(); consumableOrder.Id = String.valueOf(ar.get('Consumable_order__c')); consumableOrder.Total_amount__c = total_amount; consumableOrder.Total_num__c = consumable_count; consumableOrder.InvoiceNotPro_total_amount__c = invoice_Cost_RMB; consumableOrder.Total_Invoiced_Procount__c = invoiced_Procount; consumableOrder.InvoicedPro_total_amount__c = invoicedProCost_RMB; consumableOrder.Shipment_total_amount__c = shipment_amount; consumableOrder.RrturnPro_total_count__c = rrturnPro_count; consumableOrder.RrturnPro_total_amount__c = rrturnPro_Cost_RMB; consumableOrder.Invoice_total_amount__c = invoicedProCost_RMB; updorderList.add(consumableOrder); } update updorderList; } } }