涂煌豪
2022-05-23 78ac43791ac9e9d75ce4c33e9dddbdffa88fec2f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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<String> orderList = new List<String>();
    List<Consumable_Order__c> updorderList = new List<Consumable_Order__c>();
    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<String>();
        updorderList = new List<Consumable_Order__c>();
 
        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;
        }
    }
}