|  |  | 
 |  |  | /** | 
 |  |  |  * 客户同步 在SP、GI主担当变化时更新询价权限 | 
 |  |  |  */ | 
 |  |  | trigger AccountTrigger on Account (after insert, after update, before delete, before insert, before update, after delete ) { | 
 |  |  |     if (StaticParameter.EscapeAccountTrigger) { | 
 |  |  | System.debug('Escape、EscapeAccountTrigger:::::' + StaticParameter.EscapeAccountTrigger); | 
 |  |  |         return; | 
 |  |  | trigger AccountTrigger on Account (before insert, before update, after insert, after update) { | 
 |  |  |     if (Trigger.isBefore && Trigger.isInsert) { | 
 |  |  |         //新建之前就给赋值 gwy 2021-06-16 | 
 |  |  |         for (Account acc : Trigger.new) { | 
 |  |  |             if(acc.ProductSegment__c == 'IE' && acc.Sub_Use1__c != null){ | 
 |  |  |                 acc.Sub_Use__c  = acc.Sub_Use1__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'IE' && acc.Sub_UseA__c != null){ | 
 |  |  |                 acc.Sub_UseD__c = acc.Sub_UseA__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'BS' && acc.IndustryB__c != null){ | 
 |  |  |                 acc.IndustryC__c  = acc.IndustryB__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'BS' && acc.IndustryBD__c != null){ | 
 |  |  |                 acc.IndustryCD__c = acc.IndustryBD__c; | 
 |  |  |             }  | 
 |  |  |         } | 
 |  |  |         AccountTriggerHandler.setIsNew(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.setSubUse(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |     } | 
 |  |  |     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) { | 
 |  |  |         AccountTriggerHandler.setDealerGroup(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.updateCampaignRelationship(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap,'1'); | 
 |  |  |     } | 
 |  |  |     if ((Trigger.isAfter && Trigger.isInsert) || Trigger.isUpdate || (Trigger.isAfter && Trigger.isDelete)) { | 
 |  |  |         // 经销商有效协议判断 BY GAO | 
 |  |  |         AccountEffectiveContract.syncAccountContract(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |     if (Trigger.isBefore && Trigger.isUpdate) { | 
 |  |  |         //更新前就给赋值 gwy 2021-06-16 | 
 |  |  |         for (Account acc : Trigger.new) { | 
 |  |  |             if(acc.ProductSegment__c == 'IE' && acc.Sub_Use1__c != null){ | 
 |  |  |                 acc.Sub_Use__c  = acc.Sub_Use1__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'IE' && acc.Sub_UseA__c != null){ | 
 |  |  |                 acc.Sub_UseD__c = acc.Sub_UseA__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'BS' && acc.IndustryB__c != null){ | 
 |  |  |                 acc.IndustryC__c  = acc.IndustryB__c; | 
 |  |  |             } | 
 |  |  |             if(acc.ProductSegment__c == 'BS' && acc.IndustryBD__c != null){ | 
 |  |  |                 acc.IndustryCD__c = acc.IndustryBD__c; | 
 |  |  |             }   | 
 |  |  |         } | 
 |  |  |         AccountTriggerHandler.setSubUse(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.updateForDealer(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.dealerAccountApproval(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.CheckAccoutnNameChange(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); | 
 |  |  |         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.isAfter && Trigger.isUpdate) { | 
 |  |  |         AccountTriggerHandler.dealerAccountApproval2(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |         AccountTriggerHandler.setBusinesslicense(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |     } | 
 |  |  |     if(Trigger.isUpdate && Trigger.isBefore){ | 
 |  |  |     if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isBefore && Trigger.isUpdate)) { | 
 |  |  |         SBG001TriggerHandler.SBG001AccountTrigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     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  | 
 |  |  |         //NFM112 2021/11/10 start | 
 |  |  |         String Idbox; | 
 |  |  |         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){ | 
 |  |  |                     Idbox = account.Id; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if(Idbox != null){ | 
 |  |  |             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, Idbox); | 
 |  |  |         } | 
 |  |  |         //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); | 
 |  |  |     //     } | 
 |  |  |     // } | 
 |  |  | } |