binxie
2023-06-26 de9565270a88b0749d17c1961cd41399c8483c96
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/**
 * 客户同步 在SP、GI主担当变化时更新询价权限
 */
trigger AccountTrigger on Account (after insert, after update, before delete, before insert, before update, after delete ) {
    
    if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isAfter && Trigger.isUpdate) || (Trigger.isBefore && Trigger.isDelete)) {
        // 同步到 Account2__c
        AccountTrigger.syncAccount2(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
//        // 同步到 MB_Account__c
        //AccountTrigger.syncMBAccount(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    if ((Trigger.isAfter && Trigger.isInsert) || Trigger.isUpdate || (Trigger.isAfter && Trigger.isDelete)) {
        // 经销商有效协议判断 BY GAO
        AccountEffectiveContract.syncAccountContract(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
 
    //CHAN-ADE32V 检查战略科室中的科室名是否重复 by wei
    if (Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {
        System.debug('=============> checkDepartment start');
        AccountTrigger.checkDepartment(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        /**20221013 you LLIU-CK53S4  
        if(Trigger.isUpdate){
            for(Account acc : Trigger.new){
                if( acc.Is_Active__c == '無効' && acc.OwnerId == UserInfo.getUserId()){
                    acc.Is_Active__c = '草案中';
 
                }
        
            }
        }
        **/
    }   
    if (System.Test.isRunningTest()) {
        if(Trigger.isInsert & Trigger.isAfter){
            AfterCreateHospitalTrigger.generateDepartmentClass(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        }
    }
    if(Trigger.isUpdate && Trigger.isBefore){
    }
    
    if(Trigger.isAfter && Trigger.isUpdate){
        System.debug('+++====+++===+++== OwnerId Start');
        AccountTrigger.changeOwnerId(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AccountTrigger.setDepartmentOwner(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AfterCreateHospitalTrigger.generateDepartmentClass(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AccountTrigger.fseChangeToUpdRepair(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        /**
         * HWAG-B4PCZ5 2018-09-19 start 如果客户更新SP,GI 主担当,
         * 则删除原来的用户在所对应询价的共享规则,并根据新主担当创建新共享规则
         */
        list<Account> updateAcc = new list<Account>();
        list<ID> RemoveUsers = new list<ID>();
        list<string> allViceAliasList = new list<string>();
        for(Account NewAcc : Trigger.new) {
            Account OldAcc =  Trigger.oldMap.get(NewAcc.id);
            if(NewAcc.FSE_GI_Main_Leader__c != OldAcc.FSE_GI_Main_Leader__c 
                || NewAcc.FSE_SP_Main_Leader__c != OldAcc.FSE_SP_Main_Leader__c
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                || NewAcc.FSE_ENG_Main_Leader__c != OldAcc.FSE_ENG_Main_Leader__c
                || NewAcc.FSE_ENG_Vice_Leader__c != OldAcc.FSE_ENG_Vice_Leader__c
                || NewAcc.FSE_GI_Vice_Leader__c != OldAcc.FSE_GI_Vice_Leader__c
                || NewAcc.FSE_SP_Vice_Leader__c != OldAcc.FSE_SP_Vice_Leader__c
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                )
            {
                updateAcc.add(NewAcc);
                if(OldAcc.FSE_GI_Main_Leader__c !=null && NewAcc.FSE_GI_Main_Leader__c != OldAcc.FSE_GI_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_GI_Main_Leader__c);
                }
                if(OldAcc.FSE_SP_Main_Leader__c !=null && NewAcc.FSE_SP_Main_Leader__c != OldAcc.FSE_SP_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_SP_Main_Leader__c);
                }
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                if(OldAcc.FSE_ENG_Main_Leader__c !=null && NewAcc.FSE_ENG_Main_Leader__c != OldAcc.FSE_ENG_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_ENG_Main_Leader__c);
                }
                if( OldAcc.FSE_ENG_Vice_Leader__c != null && NewAcc.FSE_ENG_Vice_Leader__c != OldAcc.FSE_ENG_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_ENG_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
 
                 }
                if(OldAcc.FSE_GI_Vice_Leader__c != null &&  NewAcc.FSE_GI_Vice_Leader__c != OldAcc.FSE_GI_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_GI_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
                 }
                if(OldAcc.FSE_SP_Vice_Leader__c != null && NewAcc.FSE_SP_Vice_Leader__c != OldAcc.FSE_SP_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_SP_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
                 }
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
            }
 
        }
        //throw new ControllerUtil.myException('Anydatatype_msgaaaaaaaa:'+allViceAliasList);
 
        if(updateAcc.size() > 0){
            if(allViceAliasList.size() > 0){
                 List<User> loopUser = [select id from user where Alias__c in:allViceAliasList];
                 for(User temUser : loopUser){
                    RemoveUsers.add(temUser.id);
                 }
            }
            list<Statu_Achievements__c> updateSA = 
            [select id,Opportunity__c from Statu_Achievements__c where 
            Opportunity__r.Hospital__c in : updateAcc
            and DeliveryDate__c != null 
            and ForecastAccuracyObject__c = true
             ];    
            //throw new ControllerUtil.myException('Anydatatype_msgaaaaaaaa:'+updateSA);
            if(updateSA != null || updateSA.size() > 0){
                list<ID> temOpportunity = new list<ID>();
                for(Statu_Achievements__c TemSA :updateSA){
                    temOpportunity.add(TemSA.Opportunity__c);
                }
                list<OpportunityShare> deleteOS = 
                [select id from OpportunityShare 
                    where UserOrGroupId in: RemoveUsers 
                    and OpportunityId in: temOpportunity
                    and RowCause = 'Manual' 
                ];
                if(deleteOS != null &&deleteOS.size() > 0){
                    delete deleteOS;
                }
                StaticParameter.EscapeNFM010UpsertStatuAchievementsTrigger = true;
                upsert updateSA;
            }
        }
        //HWAG-B4PCZ5 2018-09-19 end 
        if (StaticParameter.EscapeAccountTrigger) {
            System.debug('Escape、EscapeAccountTrigger:::::' + StaticParameter.EscapeAccountTrigger);   
            return;
        }
        //NFM112 2021/11/10 start
        List<String> IdList = new List<String>();
        for(Account account : Trigger.new){
           Account old = Trigger.oldMap.get(account.Id);
           if(old.FirstParagraph__c != account.FirstParagraph__c  || old.MonthlyPayment__c != account.MonthlyPayment__c){
                IdList.add(account.Id);
            }
        }
        if(IdList.size()>0){
            for(String Id : IdList){
                BatchIF_Log__c iflog = new BatchIF_Log__c();
                iflog.Type__c = 'NFM112';
                iflog.Log__c  = 'callout start\n';
                insert iflog;
                //iflog = [Select Id, Name from BatchIF_Log__c where Id = :iflog.Id];
                //System.debug(Logginglevel.DEBUG, 'NFM112_' + iflog.Name + ' start');                  
                NFM112Controller.executeNotFuture(iflog.Id, Id);
            }
        }
        //NFM112 2021/11/10 end
    }
 //add            wangweipeng              2022/02/10                            start
    //经销商的性质发生变化,那么需要发邮件,其中一个收件人为大区助理
    //大区助理:根据此经销商所在的那个大区,来判断到底发给谁,每个大区助理都有一个人,目前是存到自定义源数据里面了
    if(Trigger.isBefore){
        //用于存放此经销商是那个大区
        Set<String> setStaff = new Set<String>();
        if(Trigger.isUpdate){
            for (Account acc : Trigger.new) {
                //判断当前修改的客户是否为经销商
                if(acc.RecordTypeId == '01210000000Qem1'){
                    //如果是修改经销商,那么判断此经销商的先款标识是否发生变化,如果发送变化,那么就更新一下大区
                    if(acc.FirstParagraphEnd__c != Trigger.oldMap.get(acc.Id).FirstParagraphEnd__c){
                        setStaff.add(acc.Salesdepartment_HP__c);                    
                    }
                }
            }
        }else if(Trigger.isInsert){
            for (Account acc : Trigger.new) {
                //判断当前新增的客户是否为经销商
                if(acc.RecordTypeId == '01210000000Qem1'){
                    setStaff.add(acc.Salesdepartment_HP__c);
                }
            }
        }
        if(setStaff.size() > 0){
            //获取对应的自定义元数据
            List<FSE_Regional_Assistant_Account__mdt> usrList = [select id,MasterLabel,DeveloperName,UserName__c,UserId__c from FSE_Regional_Assistant_Account__mdt where MasterLabel in :setStaff];
            if(usrList != null && usrList.size() > 0){
                //获取大区对应的助理人的id
                if(Trigger.isUpdate){
                    for (Account acc : Trigger.new) {
                        for(FSE_Regional_Assistant_Account__mdt fraam : usrList){
                            if(acc.FirstParagraphEnd__c != Trigger.oldMap.get(acc.Id).FirstParagraphEnd__c){
                                if(fraam.MasterLabel == acc.Salesdepartment_HP__c){
                                    acc.FSE_Regional_Assistant_Account__c = fraam.UserId__c;
                                }
                            }
                        }
                    }
                }else if(Trigger.isInsert){
                    for (Account acc : Trigger.new) {
                       for(FSE_Regional_Assistant_Account__mdt fraam : usrList){
                            if(fraam.MasterLabel == acc.Salesdepartment_HP__c){
                                acc.FSE_Regional_Assistant_Account__c = fraam.UserId__c;
                            }
                        } 
                    }
                }
            }
        }
    }
    //add            wangweipeng              2022/02/10                            end
    
    // if(Trigger.isUpdate){
    //     List<String> IdList = new List<String>();
    //     for(Account account : Trigger.new){
    //        Account old = Trigger.oldMap.get(account.Id);
    //        if(old.FirstParagraph__c != account.FirstParagraph__c  || old.MonthlyPayment__c != account.MonthlyPayment__c){
    //                 IdList.add(account.Id);
    //         }
    //     }
    //     if(IdList.size()>0){
    //         UpdateContractAimAmountHandler.sendToSAP(IdList);
    //     }
    // }
}