Li Jun
2022-04-19 ced601e566d84624364f8e3a698eddd427a85f85
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
trigger MaintenanceContractTrigger on Maintenance_Contract__c (after insert, before update, before delete) {
    if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isBefore && Trigger.isUpdate)) {
        NFM106Controller.NFM106Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
 
    if (Trigger.isBefore) {
        if (Trigger.isDelete) {
            List<String> mcIds = new List<String>();
            List<SFDelete__c> dlist = new List<SFDelete__c>();
            for (Maintenance_Contract__c mc : Trigger.old) {
                mcIds.add(mc.Id);
                // SFDelete__c にデータを追加
                dlist.add(new SFDelete__c(
                    delSfId__c = mc.Id,
                    tableName__c = 'Maintenance_Contract__c',
                    dataOwnerId__c = mc.Service_Contract_Staff__c
                ));
            }
            ControllerUtil.insSFDelete(dlist);
            // 活動_サビコンを削除
            ControllerUtil.delEvent3ForTrigger(mcIds);
        }
        //add                    wangweipeng         2021/11/29              start
        //判断认款是否完成
        if(Trigger.isUpdate){
            for (Maintenance_Contract__c nmc : Trigger.new) {
                //判断 上传认款合同时间 是否为空,如果不为空,那么证明此合同需要认款,并且认款金额需要和 第一次计划付款金额 做对比
                if(nmc.upload_to_RM_time__c != null){
                    if(nmc.All_Amount__c != Trigger.oldMap.get(nmc.Id).All_Amount__c || nmc.Payment_Plan_Sum_First__c != Trigger.oldMap.get(nmc.Id).Payment_Plan_Sum_First__c){
                        if(nmc.Payment_Plan_Sum_First__c != null || nmc.Payment_Plan_Sum_First__c > 0.0 ){
                            nmc.Is_Recognition_Model_True__c = nmc.All_Amount__c >= nmc.Payment_Plan_Sum_First__c ? true : false;
                        }else{
                            if(nmc.All_Amount__c > 0.0 && nmc.All_Amount__c != null){
                                nmc.Is_Recognition_Model_True__c = true;
                            }else{
                                nmc.Is_Recognition_Model_True__c = false;
                            }
                        }
                    }
                }
            }
        }
        //FSE所在大区助理 赋值  根据主担当人 的本部
        //华北:洪贺男  东北:刘莹莹  西北:祝琪雪  西南:何学琼  华东:陈明赟  华南:闻静
        Set<String> setStaff = new Set<String>();
        if(Trigger.isUpdate){
            for (Maintenance_Contract__c nmc : Trigger.new) {
                if(nmc.Service_Contract_Staff__c != Trigger.oldMap.get(nmc.Id).Service_Contract_Staff__c || String.isBlank(nmc.FSE_Regional_Assistant__c)){
                    setStaff.add(nmc.Service_Contract_Staff_Salesdepartment__c);//主担当本部(大区)
                }
            }
        }else if(Trigger.isInsert){
            for (Maintenance_Contract__c nmc : Trigger.new) {
                if(String.isNotBlank(nmc.Service_Contract_Staff__c)){
                    setStaff.add(nmc.Service_Contract_Staff_Salesdepartment__c);//主担当本部(大区)
                }
            }
        }
        if(setStaff.size() > 0){
            //获取对应的自定义元数据
            List<FSE_Regional_Assistant__mdt> usrList = [select id,MasterLabel,DeveloperName,UserName__c,UserId__c from FSE_Regional_Assistant__mdt where MasterLabel in :setStaff];
            if(usrList != null && usrList.size() > 0){
                for (Maintenance_Contract__c nmc : Trigger.new) {
                    //如果是更新,那么判断主担当人是否有变化或FSE大区助理是否为空,如果满足其中一条,那么更新大区助理
                    if(Trigger.isUpdate){
                       if(!(nmc.Service_Contract_Staff__c != Trigger.oldMap.get(nmc.Id).Service_Contract_Staff__c 
                        || String.isBlank(nmc.FSE_Regional_Assistant__c)))
                       {
                            continue;
                       }
                    }
                    if(String.isNotBlank(nmc.Service_Contract_Staff__c)){
                        for(FSE_Regional_Assistant__mdt fram : usrList){
                            if(String.isNotBlank(fram.MasterLabel) && nmc.Service_Contract_Staff_Salesdepartment__c == fram.MasterLabel){
                                nmc.FSE_Regional_Assistant__c = fram.UserId__c;
                            }
                        }
                    }
                }
            }
        }
        //add                    wangweipeng         2021/11/29              end
    }
}