| /** | 
|  * 客户同步 在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; | 
|     } | 
|     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); | 
|         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  | 
|         //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); | 
|     //     } | 
|     // } | 
| } |