public without sharing class LostCancelReportHandler extends Oly_TriggerHandler { private Map newMap; private Map oldMap; private List newList; private List oldList; public LostCancelReportHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } // 更新经理(销售) 20200302 Start protected override void beforeUpdate() { // 更新经理(销售)信息 updateManager(); } // 更新审批人 20200302 End protected override void afterUpdate() { // 更新询价的失单信息 //updateLostInfo(); updateopp(); // by tcm } /* private void updateLostInfo() { List oppList = new List(); //2018年7月16日 CHAN-B2HCB7 start 获取字段 List temLCRList = [select id,Opportunity__c,Report_Status__c, Lost_By_Company__c,Lost_reason_main__c , of_lost_system_processor__c, Lost_Reason_Sub__c, Lost_By_Product__c, CompetitorProduct1__r.id, CompetitorProduct1__r.Name, CompetitorProduct2__r.id, CompetitorProduct2__r.Name, CompetitorProduct3__r.id, CompetitorProduct3__r.Name, CompetitorProduct4__r.id, CompetitorProduct4__r.Name from Lost_cancel_report__c where id in: newList]; // 2018年7月16日 CHAN-B2HCB7 end 获取字段 for (Lost_cancel_report__c n : temLCRList) { //Lost_cancel_report__c o = oldMap.get(n.id); && o.Report_Status__c != '批准' if (n.Report_Status__c == '批准' ) { Opportunity opp = new Opportunity(); opp.id = n.Opportunity__c; opp.Lost_Cancel_Report__c = n.id; //2018年7月16日 CHAN-B2HCB7 start 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值 if (n.CompetitorProduct2__r.id == '01t10000000Tqam') { opp.CompetitorProduct2__c = n.Lost_By_Product__c; } else { opp.CompetitorProduct2__c = n.CompetitorProduct2__r.Name; } if (n.CompetitorProduct3__r.id == '01t10000000Tqam') { opp.CompetitorProduct3__c = n.Lost_By_Product__c; } else { opp.CompetitorProduct3__c = n.CompetitorProduct3__r.Name; } if (n.CompetitorProduct4__r.id == '01t10000000Tqam') { opp.CompetitorProduct4__c = n.Lost_By_Product__c; } else { opp.CompetitorProduct4__c = n.CompetitorProduct4__r.Name; } //2018年7月16日 CHAN-B2HCB7 end 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值 //2018年7月16日 CHAN-B2X9SW start 为业务机会对象的询价重复赋值 /*if (n.Cancel_Reason__c == '询价重复') { //opp.Opportunity_repeated_text__c = n.Opportunity_repeated__c; } //2018年7月16日 CHAN-B2X9SW end 为业务机会对象的询价重复赋值 by张玉山 oppList.add(opp); } } if (oppList.size() > 0) update oppList; } */ // 更新经理(销售) 20200302 Start private void updateManager() { List userIdList = new List(); for (Lost_cancel_report__c n: newList) { if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) { userIdList.add(n.OwnerId__c); } } Map userMap = new Map(); List userList = [select Id, SalesManager__c from user where id =: userIdList]; for (User u : userList) { String sid = u.Id; userMap.put(sid.substring(0,15), u); } for (Lost_cancel_report__c n : newList) { if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) { if (userMap.get(n.OwnerId__c) != null) { n.Manager_sales__c = userMap.get(n.OwnerId__c).SalesManager__c; } } } } // 更新审批人 20200302 End // tcm 20211126 更新询价信息 start private void updateopp() { // 清除不需要更新的 Map arrMap=new Map(); for (String newlcro : newMap.keyset()) { if (newMap.get(newlcro).Report_Status__c=='批准'&&oldMap.get(newlcro).Report_Status__c!='批准') { arrMap.put(newlcro,newMap.get(newlcro)); } } List lcrList=[select id,PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c,PCLLostBrand__r.Lost_Reason_Sub__c,PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c,PCLLostBrand__r.Lost_cancel_report__r.LostType__c,PCLLostBrand__r.Lost_By_Company__c,PCLLostBrand__r.Lost_By_Company_Mannual__c,PCLLostBrand__r.LostPrice__c,LostProduct__r.Name, PCLLostBrand__r.Lost_reason_main__c,PCLLostBrand__r.Agency__r.Name,PCLLostBrand__r.AgencyMannual__c,PCLLostBrand__r.Lost_cancel_report__r.Opportunity__r.Name,Opportunity__c, LostProductMannual__c from PCLLostProduct__c where PCLLostBrand__r.Lost_cancel_report__c in : arrMap.keyset()]; List oppList=new List(); for (String lcro : arrMap.keyset()) { // 给产品赋值 Integer i=0; //赋值询价去重 List jxsList=new List(); //经销商 List ppList=new List(); //失单品牌 // List yyList=new List(); //失单原因 //初始化 Opportunity opp=new Opportunity(); opp.Id=arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c=''; opp.Agencies__c=''; //Id ,品牌,经销商 // for产品 for (PCLLostProduct__c lcr : lcrList) { if (opp.Id==lcr.Opportunity__c) { i++; //给询价不同字段赋值 失单 if (lcr.PCLLostBrand__r.Lost_cancel_report__r.LostType__c=='失单') { if (i==1) { opp.CompetitorProduct1__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c; }else if (i==2) { opp.CompetitorProduct2__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c; }else if (i==3) { opp.CompetitorProduct3__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c; } } // 失单理由 if (i==1) { opp.Lost_reason_main__c=lcr.PCLLostBrand__r.Lost_reason_main__c; opp.Lost_Reason_Sub__c=lcr.PCLLostBrand__r.Lost_Reason_Sub__c; } //经销商 if (!jxsList.contains(lcr.PCLLostBrand__r.Agency__r.Name)) { jxsList.add(lcr.PCLLostBrand__r.Agency__r.Name); if (jxsList.size()==1) { if (lcr.PCLLostBrand__r.AgencyMannual__c==null) { opp.Agencies__c+=lcr.PCLLostBrand__r.Agency__r.Name; }else { opp.Agencies__c+=lcr.PCLLostBrand__r.AgencyMannual__c; } }else { if (lcr.PCLLostBrand__r.AgencyMannual__c==null) { opp.Agencies__c+=','+lcr.PCLLostBrand__r.Agency__r.Name; }else { opp.Agencies__c+=','+lcr.PCLLostBrand__r.AgencyMannual__c; } } } //失单品牌 if (!ppList.contains(lcr.PCLLostBrand__r.Lost_By_Company__c)) { ppList.add(lcr.PCLLostBrand__r.Lost_By_Company__c); if (ppList.size()==1) { if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') { opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c; }else { opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company__c; } }else { if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') { opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c; }else { opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company__c; } } } // //失单原因 // if (!yyList.contains(lcr.PCLLostBrand__r.Lost_reason_main__c)) { // yyList.add(lcr.PCLLostBrand__r.Lost_reason_main__c); // if (yyList.size()==1) { // opp.Lost_reason_mains__c+=lcr.PCLLostBrand__r.Lost_reason_main__c+','; // }else { // opp.Lost_reason_mains__c+=','+lcr.PCLLostBrand__r.Lost_reason_main__c; // } // } //失单总金额 opp.LostPrices__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c; opp.of_lost_system_processor__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c; } } oppList.add(opp); } update oppList; } // tcm 20211126 更新询价信息 end }