binxie
2024-01-18 0e0dd1e20e7211f3c3c11d77a41090d998dfd06c
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
112
113
114
115
116
117
118
119
trigger ConsumableOrderTrigger on Consumable_order__c (before insert, before update) {
 
    //deloitte-zhj 20231124 本地化导入 start
    if((!Test.isRunningTest())&&System.Label.ByPassTrigger.contains(UserInfo.getUserId())){
        return;
    }
    //deloitte-zhj 20231124 本地化导入 end
 
    // CHAN-CBYBBF 【委托】经销商ET账号显示界面维护-广东汇晨 start
    // 注释跳过 发货时要计算 SAP合同号
    // if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
    //     return;
    // }
    // CHAN-CBYBBF 【委托】经销商ET账号显示界面维护-广东汇晨 end
    //add by rentx 20210618 start
    if (StaticParameter.ConsumableOrderTrigger) {
        return;
    }
    //ad by rentx 20210618 end
    Set<String> contactIdSet = new Set<String>();
    Map<String, String> rprIdList = new Map<String, String>();
    Map<String, String> contactIdMap = new Map<String, String>();
    List<Statu_Achievements__c> sAlist = new List<Statu_Achievements__c>();
    if (Trigger.isBefore) {
        Account contactdet = null;
        List<Account> contactList = new List<Account>();
        Consumable_order__c old = null;
        for (Consumable_order__c local : Trigger.New) {
            if(String.isNotBlank(local.Order_effective_contact__c)) {
                contactIdSet.add(local.Order_effective_contact__c);
            }
        }
        // contactList = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id in :contactIdSet];
        // for(Account acc :contactList){
        //     if(String.isNotBlank(acc.Business_Assistant__c)){
        //         contactIdMap.put(acc.Id, acc.Business_Assistant__c);
        //     }
        // }
 
        Map<String,List<Statu_Achievements__c> > sAmap = new Map<String,List<Statu_Achievements__c> >();
        Map<String,String> zMaps = new Map<String,String>();
 
        for (Consumable_order__c local : Trigger.New) {
            if(String.isNotBlank(local.Opportunity__c) && String.isNotBlank(local.name)) {
                zMaps.put(local.Opportunity__c,local.name);
            }
        }
 
 
        sAlist = [SELECT ContractNO__c,Opportunity__c FROM Statu_Achievements__c WHERE Opportunity__c = :zMaps.keySet()];
 
        for(Statu_Achievements__c sa : sAlist) {
            List<Statu_Achievements__c> ssList = sAmap.get(zMaps.get(sa.Opportunity__c));
            if(ssList == null) {
                ssList = new List<Statu_Achievements__c>();
            }
            ssList.add(sa);
            sAmap.put(zMaps.get(sa.Opportunity__c),ssList);
        }
 
        // sAlist = [SELECT ContractNO__c FROM Statu_Achievements__c WHERE Opportunity__c = :opps];
        // sAmap.put(name,sAlist);
 
        for (Consumable_order__c local : Trigger.New) {
            if (Trigger.isInsert) {
                rprIdList.put(local.Id, local.Id);
            }
            if (Trigger.isUpdate) {
                old = Trigger.oldMap.get(local.Id);
            }
            if ((Trigger.isInsert
                 || old.Order_status__c != local.Order_status__c)
                && local.Order_status__c == '批准'
                )   {
                if(local.Order_date__c < Date.newInstance(2022, 04, 01)) {
                    local.addError('4/1之前的订单只能驳回并重新提交。');
                    continue;
                }
            }
            // 「消耗品订单」になったとき、ログインユーザーからプロセス用の上司を設定
            if ((Trigger.isInsert
                 || old.Order_status__c != local.Order_status__c)
                && local.Order_status__c == '附件上传完成'
                )   {
                //if (contactdet == null) {
                //    contactdet = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id = :local.Order_effective_contact__c];
                //}
                if(local.Business_Assistant__c == null) {
                    local.addError('合同没有有效的营业助理。');
                    continue;
                }else{
                    local.SalesManager__c = local.Business_Assistant__c;
                }
                // 項目の新規追加したくない、API名も変更したくない、ラベル名を変更、User.服务→修理.服务
                //local.SalesManager__c = contactdet.SalesManager__c == null ? contactdet.Id : contactdet.SalesManager__c;
                //local.BuchangApprovalManagerSales__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c;
                //local.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c;
                //local.TongkuoZongjian__c = loginUser.TongkuoZongjian__c == null ? loginUser.Id : loginUser.TongkuoZongjian__c;
            }
 
            //更新or插入 前
            if(Trigger.isInsert || Trigger.isUpdate ) {
                List<String> cNList = new List<String>();
                List<Statu_Achievements__c> sas = sAmap.get(local.name);
 
                if(sas != null) {
                    for (Statu_Achievements__c sa : sas) {
                        //保存合同编号
                        cNList.add(sa.ContractNO__c);
                    }
 
                    //拼接合同编号
                    String cNs = String.join(cNList,',');
                    local.ContractNo__c = cNs;
                }
            }
        }
    }
}