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