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
trigger MaintenanceContractTrigger on Maintenance_Contract__c (after insert, before update, before delete) {
    
    //deloitte-zhj 20231124 本地化导入 start
    if((!Test.isRunningTest())&&System.Label.ByPassTrigger.contains(UserInfo.getUserId())){
        return;
    }
    //deloitte-zhj 20231124 本地化导入 end
    
    if (StaticParameter.MaintenanceContractTrigger) {
        if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isBefore && Trigger.isUpdate)) {
 
            NFM106Controller.NFM106Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        }
        // 新建新服务合同添加 20231019hql start
        if ((Trigger.isAfter && Trigger.isInsert)) {
            for(Maintenance_Contract__c mc : Trigger.new){
                if (mc.CopyFlg__c == true && mc.copyOfMc__c !=null) {
                    List<Maintenance_Contract_Asset__c> oldList = [select Asset__c from Maintenance_Contract_Asset__c where Maintenance_Contract__c = :mc.copyOfMc__c];
                    List<Maintenance_Contract_Asset__c> newList = new List<Maintenance_Contract_Asset__c>();
                    for (Maintenance_Contract_Asset__c mca : oldList) {
                        newList.add(new Maintenance_Contract_Asset__c(
                            Asset__c = mca.Asset__c,
                            Maintenance_Contract__c = mc.id
                        ));
                    }
                    
                    if (newList.size() > 0) insert newList;
                }
            }
            
        }
        // 新建新服务合同添加 20231019hql end
        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
        }
    }
}