// 科室担当者が変更されたら询价担当者を更新する 
 | 
// 询价の「询价担当人单独维护」がfalseの場合のみ更新を行う 
 | 
// 2016-03-09 tamaru@sunbridge 
 | 
trigger ChangedDepartmentOwner on Account (before update) { 
 | 
    Map<Id, Id> acMap = new Map<Id, Id>(); // Account, User 
 | 
    if (Trigger.isUpdate && Trigger.isBefore) { 
 | 
        System.debug('ChangedDepartmentOwner in'); 
 | 
        // 担当者更新対象リストアップ 
 | 
        //20161107::::将“战略科室-其他”的客户所有人,变更为普外科的客户所有人 
 | 
        //List<Id> Parlist = new List<Id>(); 
 | 
        //for (Account a : Trigger.old) { 
 | 
        //    Parlist.add(a.Parentid); 
 | 
        //} 
 | 
        //if(Trigger.old.size()==1){ 
 | 
        //    List<Account> Acclist = [SELECT OwnerId  
 | 
        //                            from Account  
 | 
        //                            where Parentid  
 | 
        //                                in :Parlist  
 | 
        //                            AND Department_Class_Label__c = '普外科']; 
 | 
        //    String accOwnerId =''; 
 | 
        //    if(Acclist.size()>0){ 
 | 
        //       accOwnerId = Acclist[0].OwnerId; 
 | 
        //    } 
 | 
        //    for (Account ac : Trigger.new) { 
 | 
             
 | 
        //        if(ac.Department_Class_Label__c=='其他'&&ac.OwnerId!=accOwnerId){ 
 | 
        //            ac.ownerid = accOwnerId; 
 | 
        //        } 
 | 
        //    } 
 | 
        //} 
 | 
         
 | 
        /* 
 | 
            HWAG-BG682M start 
 | 
            1、如果各种担当值发生变化,则记录下之前的数据; 
 | 
            2、增加静态变量,用于accountdailyUpdatebatch 跳过用; 
 | 
            3、 只更新询价主担当和各科主担当不一样的数据。 
 | 
         */ 
 | 
        for (Account ac : Trigger.new) { 
 | 
            if (ac.OwnerId != Trigger.Oldmap.get(ac.Id).OwnerId) { 
 | 
                acMap.put(ac.Id, ac.OwnerId); 
 | 
            } 
 | 
            if(ac.FSE_Main__c != Trigger.Oldmap.get(ac.Id).FSE_Main__c ){ 
 | 
                ac.FSE_Main_Old__c = Trigger.Oldmap.get(ac.Id).FSE_Main__c; 
 | 
            } 
 | 
            if(ac.FSE_Extend_viceLeaderStr__c != Trigger.Oldmap.get(ac.Id).FSE_Extend_viceLeaderStr__c ){ 
 | 
                ac.FSE_Extend_viceLeaderStr_Old__c = Trigger.Oldmap.get(ac.Id).FSE_Extend_viceLeaderStr__c; 
 | 
            } 
 | 
            if(ac.GI_Main__c != Trigger.Oldmap.get(ac.Id).GI_Main__c ){ 
 | 
                ac.GI_Main_Old__c = Trigger.Oldmap.get(ac.Id).GI_Main__c; 
 | 
            } 
 | 
            if(ac.GI_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GI_Product_Leader__c ){ 
 | 
                ac.GI_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GI_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.SP_Main__c != Trigger.Oldmap.get(ac.Id).SP_Main__c ){ 
 | 
                ac.SP_Main_Old__c = Trigger.Oldmap.get(ac.Id).SP_Main__c; 
 | 
            } 
 | 
            if(ac.GS_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GS_Product_Leader__c ){ 
 | 
                ac.GS_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GS_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.BF_owner__c != Trigger.Oldmap.get(ac.Id).BF_owner__c ){ 
 | 
                ac.BF_owner_Old__c = Trigger.Oldmap.get(ac.Id).BF_owner__c; 
 | 
            } 
 | 
            if(ac.BF_Product_Leader__c != Trigger.Oldmap.get(ac.Id).BF_Product_Leader__c ){ 
 | 
                ac.BF_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).BF_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.GYN_owner__c != Trigger.Oldmap.get(ac.Id).GYN_owner__c ){ 
 | 
                ac.GYN_owner_Old__c = Trigger.Oldmap.get(ac.Id).GYN_owner__c; 
 | 
            } 
 | 
            if(ac.GYN_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GYN_Product_Leader__c ){ 
 | 
                ac.GYN_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GYN_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.ET_owner__c != Trigger.Oldmap.get(ac.Id).ET_owner__c ){ 
 | 
                ac.ET_owner_Old__c = Trigger.Oldmap.get(ac.Id).ET_owner__c; 
 | 
            } 
 | 
            if(ac.ET_Product_Leader__c != Trigger.Oldmap.get(ac.Id).ET_Product_Leader__c ){ 
 | 
                ac.ET_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).ET_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.ENT_owner_ID__c != Trigger.Oldmap.get(ac.Id).ENT_owner_ID__c ){ 
 | 
                ac.ENT_owner_ID_Old__c = Trigger.Oldmap.get(ac.Id).ENT_owner_ID__c; 
 | 
            } 
 | 
            if(ac.ENT_Product_Leader__c != Trigger.Oldmap.get(ac.Id).ENT_Product_Leader__c ){ 
 | 
                ac.ENT_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).ENT_Product_Leader__c; 
 | 
            } 
 | 
            if(ac.URO_owner_ID__c != Trigger.Oldmap.get(ac.Id).URO_owner_ID__c ){ 
 | 
                ac.URO_owner_ID_Old__c = Trigger.Oldmap.get(ac.Id).URO_owner_ID__c; 
 | 
            } 
 | 
            if(ac.URO_Produc_Leader__c != Trigger.Oldmap.get(ac.Id).URO_Produc_Leader__c ){ 
 | 
                ac.URO_Produc_Leader_Old__c = Trigger.Oldmap.get(ac.Id).URO_Produc_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_GI_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_GI_Main_Leader__c ){ 
 | 
                ac.FSE_GI_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_GI_Main_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_GI_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_GI_Vice_Leader__c ){ 
 | 
                ac.FSE_GI_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_GI_Vice_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_SP_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_SP_Main_Leader__c ){ 
 | 
                ac.FSE_SP_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_SP_Main_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_SP_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_SP_Vice_Leader__c ){ 
 | 
                ac.FSE_SP_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_SP_Vice_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_ENG_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_ENG_Main_Leader__c ){ 
 | 
                ac.FSE_ENG_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_ENG_Main_Leader__c; 
 | 
            } 
 | 
            if(ac.FSE_ENG_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_ENG_Vice_Leader__c ){ 
 | 
                ac.FSE_ENG_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_ENG_Vice_Leader__c; 
 | 
            } 
 | 
            if(ac.Extend_Leader_Str__c != Trigger.Oldmap.get(ac.Id).Extend_Leader_Str__c ){ 
 | 
                ac.Extend_Leader_Str_Old__c = Trigger.Oldmap.get(ac.Id).Extend_Leader_Str__c; 
 | 
            } 
 | 
            if(ac.Energy_LeaderStr__c != Trigger.Oldmap.get(ac.Id).Energy_LeaderStr__c ){ 
 | 
                ac.Energy_LeaderStr_Old__c = Trigger.Oldmap.get(ac.Id).Energy_LeaderStr__c; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
     
 | 
    // 対象の询价取得 
 | 
    if (acMap.size() > 0 && !StaticParameter.EscapeOpportunityownerUpdate) { 
 | 
        List<Opportunity> updateList = [ 
 | 
                SELECT Id, OwnerId, AccountId 
 | 
                  FROM Opportunity 
 | 
                WHERE AccountId IN :acMap.keyset() 
 | 
                  AND owner_not_automatically_update__c = FALSE 
 | 
        ]; 
 | 
        //System.debug('updateList : ' + updateList.size()); 
 | 
        list<Opportunity> opUpdateList = new list<Opportunity>(); 
 | 
        for (Opportunity op : updateList) { 
 | 
            if(op.OwnerId != acMap.get(op.AccountId)){ 
 | 
                op.OwnerId = acMap.get(op.AccountId); 
 | 
                opUpdateList.add(op); 
 | 
            } 
 | 
  
 | 
        } 
 | 
        if (opUpdateList.size() > 0) { 
 | 
            ControllerUtil.updOppList(opUpdateList); 
 | 
        } 
 | 
    } 
 | 
    // HWAG-BG682M end 
 | 
} 
 |