| | |
| | | public without sharing class LostCancelReportHandler extends Oly_TriggerHandler { |
| | | private Map<Id, Lost_cancel_report__c> newMap; |
| | | private Map<Id, Lost_cancel_report__c> oldMap; |
| | | private List<Lost_cancel_report__c> newList; |
| | | private List<Lost_cancel_report__c> oldList; |
| | | private Map<Id, Lost_cancel_report__c> newMap; |
| | | private Map<Id, Lost_cancel_report__c> oldMap; |
| | | private List<Lost_cancel_report__c> newList; |
| | | private List<Lost_cancel_report__c> oldList; |
| | | |
| | | public LostCancelReportHandler() { |
| | | this.newMap = (Map<Id, Lost_cancel_report__c>) Trigger.newMap; |
| | | this.oldMap = (Map<Id, Lost_cancel_report__c>) Trigger.oldMap; |
| | | this.newList = (List<Lost_cancel_report__c>) Trigger.new; |
| | | this.oldList = (List<Lost_cancel_report__c>) Trigger.old; |
| | | } |
| | | public LostCancelReportHandler() { |
| | | this.newMap = (Map<Id, Lost_cancel_report__c>) Trigger.newMap; |
| | | this.oldMap = (Map<Id, Lost_cancel_report__c>) Trigger.oldMap; |
| | | this.newList = (List<Lost_cancel_report__c>) Trigger.new; |
| | | this.oldList = (List<Lost_cancel_report__c>) Trigger.old; |
| | | } |
| | | |
| | | // 更新经理(销售) 20200302 Start |
| | | protected override void beforeUpdate() { |
| | | // 更新经理(销售)信息 |
| | | updateManager(); |
| | | } |
| | | // 更新审批人 20200302 End |
| | | // 更新经理(销售) 20200302 Start |
| | | protected override void beforeUpdate() { |
| | | // 更新经理(销售)信息 |
| | | updateManager(); |
| | | //【FY23询价改善】-P:中标结果确认任务开发 20220706 更新失单任务确认时间 |
| | | updateLostTaskTime(); |
| | | |
| | | protected override void afterUpdate() { |
| | | } |
| | | // 更新审批人 20200302 End |
| | | |
| | | // 更新询价的失单信息 |
| | | //updateLostInfo(); |
| | | updateopp(); // by tcm |
| | | } |
| | | /* |
| | | private void updateLostInfo() { |
| | | List<Opportunity> oppList = new List<Opportunity>(); |
| | | //2018年7月16日 CHAN-B2HCB7 start 获取字段 |
| | | List<Lost_cancel_report__c> 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); |
| | | protected override void afterUpdate() { |
| | | |
| | | // 更新询价的失单信息 |
| | | //updateLostInfo(); |
| | | updateopp(); // by tcm |
| | | } |
| | | |
| | | //2022-6-22 yjk 询价跟进任务 start |
| | | protected override void afterInsert() { |
| | | updateTask(); |
| | | } |
| | | |
| | | // 2022-7-29 ssm XLIU-CGSC8R 【委托】[改善】询价里删除批准的失单报告状态1自动变 |
| | | protected override void afterDelete() { |
| | | // 删除已批准的报告后,把询价状态改回成询价 |
| | | updateOppStage(); |
| | | } |
| | | |
| | | private void updateTask(){ |
| | | List<Id> oppIdList = new List<Id>(); |
| | | Set<Id> oppIdSet = new Set<Id>(); |
| | | Set<Id> sdoppidSet = new Set<Id>(); |
| | | List<Id> updateOppId = new List<Id>(); |
| | | List<Opportunity> updateOpp = new List<Opportunity>(); |
| | | |
| | | for(Lost_cancel_report__c lcr : newList){ |
| | | oppIdList.add(lcr.Opportunity__c); |
| | | |
| | | } |
| | | // 20221202 ljh DB202211594688 start |
| | | // List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c from task__c where RecordType.Name ='中标结果确认' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdList]; |
| | | // for(task__c tsk : taskList){ |
| | | // tsk.taskStatus__c = '03 完成'; |
| | | // //updateOppId.add(tsk.OpportunityId__c); //20220823 you 没有任务时, |
| | | // } |
| | | // LoseListTask 失单报告任务 winBiddingTask 中标结果确认 |
| | | List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c,RecordType.Name from task__c where (RecordType.Name ='中标结果确认' or RecordType.Name ='失单报告任务') and OpportunityId__c in :oppIdList]; |
| | | for(task__c tsk : taskList){ |
| | | if(tsk.RecordType.Name == '中标结果确认' && tsk.taskStatus__c == '02 接受'){ |
| | | tsk.taskStatus__c = '03 完成'; |
| | | } |
| | | //20221206 you DB202211594688 先做了竞争对手中标,然后在做部分失单,清空 |
| | | if(tsk.RecordType.Name == '失单报告任务'){ |
| | | sdoppidSet.add(tsk.OpportunityId__c); |
| | | } |
| | | oppIdSet.add(tsk.OpportunityId__c); |
| | | } |
| | | // for(Id oppId : oppIdList){//20220823 you |
| | | for(Id oppId : oppIdSet){ |
| | | // 20221202 ljh DB202211594688 end |
| | | Opportunity opptemp = new Opportunity(); |
| | | opptemp.Id = oppId ; |
| | | for(Lost_cancel_report__c lcr : newList){ |
| | | //20221205 you DB202211594688 取消得失单报告不设置结果,也不派发任务 |
| | | if(lcr.DeveloperName__c !='PCL_Cancel_report'){ |
| | | opptemp.ConfirmationofAward__c = '竞争对手中标'; |
| | | } |
| | | if(null!=sdoppidSet && sdoppidSet.contains(oppId) && lcr.DeveloperName__c =='PCL_PartLost_report'){ |
| | | opptemp.ConfirmationofAward__c = ''; |
| | | opptemp.ConfirmationofAward_createTime__c = null; |
| | | opptemp.Is_ConfirmationofAward__c =null; |
| | | } |
| | | |
| | | } |
| | | |
| | | updateOpp.add(opptemp); |
| | | } |
| | | |
| | | |
| | | update updateOpp; |
| | | update taskList; |
| | | } |
| | | //2022-6-22 yjk 询价跟进任务 end |
| | | |
| | | /* |
| | | private void updateLostInfo() { |
| | | List<Opportunity> oppList = new List<Opportunity>(); |
| | | //2018年7月16日 CHAN-B2HCB7 start 获取字段 |
| | | List<Lost_cancel_report__c> 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<String> userIdList = new List<String>(); |
| | | 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<String, User> userMap = new Map<String, User>(); |
| | | List<User> 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() { |
| | | |
| | | Set<String> oppIdPZSet = new Set<String>(); // 20221202 ljh DB202211594688 start // 失单报告批准后,自动设置竞争对手中标和中标结果确认日 |
| | | // 清除不需要更新的 |
| | | Map<Id,Lost_cancel_report__c> arrMap=new Map<Id,Lost_cancel_report__c>(); |
| | | for (String newlcro : newMap.keyset()) { |
| | | if (newMap.get(newlcro).Report_Status__c=='批准'&&oldMap.get(newlcro).Report_Status__c!='批准') { |
| | | arrMap.put(newlcro,newMap.get(newlcro)); |
| | | // 20221202 ljh DB202211594688 start |
| | | // 失单报告任务的询价 |
| | | if(String.isNotBlank(newMap.get(newlcro).Opportunity__c) && newMap.get(newlcro).DeveloperName__c == 'PCL_Lost_report'){ |
| | | oppIdPZSet.add(newMap.get(newlcro).Opportunity__c); |
| | | } |
| | | // 20221202 ljh DB202211594688 end |
| | | } |
| | | } |
| | | |
| | | //20220708 询价任务开发,结束失单任务状态,筛选需要的修改的失单任务 start |
| | | Set<String> oppIdSet = new Set<String>(); |
| | | for (Lost_cancel_report__c n: newList) { |
| | | if ((n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && n.Report_Status__c == '申请中') { |
| | | oppIdSet.add(n.Opportunity__c); |
| | | } |
| | | } |
| | | // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 start |
| | | if(oppIdSet.size() > 0 ){ |
| | | List<OpportunityLineItem> OppLIlist = [select Id,Key_product_147P_Text__c,Key_product_147P__c from OpportunityLineItem where OpportunityId in :oppIdSet]; |
| | | for(OpportunityLineItem oli : OppLIlist){ |
| | | oli.Key_product_147P_Text__c = oli.Key_product_147P__c; |
| | | } |
| | | update OppLIlist; |
| | | // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 end |
| | | List<task__c> taskList = [select id,taskStatus__c from task__c where RecordType.Name ='失单报告任务' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdSet]; |
| | | for(task__c tsk : taskList){ |
| | | tsk.taskStatus__c = '03 完成'; |
| | | } |
| | | } |
| | | if (oppList.size() > 0) update oppList; |
| | | } |
| | | */ |
| | | // 更新经理(销售) 20200302 Start |
| | | private void updateManager() { |
| | | List<String> userIdList = new List<String>(); |
| | | 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); |
| | | } |
| | | } |
| | | update taskList; |
| | | }// 20220720 ljh update |
| | | //20220708 询价任务开发,结束失单任务状态,筛选需要的修改的失单任务 end |
| | | |
| | | Map<String, User> userMap = new Map<String, User>(); |
| | | List<User> userList = [select Id, SalesManager__c from user where id =: userIdList]; |
| | | List<PCLLostProduct__c> 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.TotalAmountLost__c, //20230215 lt DB202302247719 |
| | | 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 |
| | | ,ProductClass__c, Quantity__c //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 |
| | | from PCLLostProduct__c |
| | | where PCLLostBrand__r.Lost_cancel_report__c in : arrMap.keyset()]; |
| | | List<Opportunity> oppList=new List<Opportunity>(); |
| | | for (String lcro : arrMap.keyset()) { |
| | | // 给产品赋值 |
| | | Integer i=0; |
| | | //赋值询价去重 |
| | | List<String> jxsList=new List<String>(); //经销商 |
| | | List<String> ppList=new List<String>(); //失单品牌 |
| | | // List<String> yyList=new List<String>(); //失单原因 |
| | | //初始化 |
| | | Opportunity opp=new Opportunity(); |
| | | //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start |
| | | opp.RivalHostsNumber__c = 0; |
| | | //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end |
| | | 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) { |
| | | |
| | | for (User u : userList) { |
| | | String sid = u.Id; |
| | | userMap.put(sid.substring(0,15), u); |
| | | } |
| | | //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start |
| | | if(lcr.ProductClass__c == '主机'){ |
| | | opp.RivalHostsNumber__c += lcr.Quantity__c; |
| | | }else{ |
| | | opp.RivalHostsNumber__c += 0; |
| | | } |
| | | //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end |
| | | |
| | | 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 |
| | | 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; |
| | | |
| | | // tcm 20211126 更新询价信息 start |
| | | private void updateopp() { |
| | | // 清除不需要更新的 |
| | | Map<Id,Lost_cancel_report__c> arrMap=new Map<Id,Lost_cancel_report__c>(); |
| | | 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<PCLLostProduct__c> 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<Opportunity> oppList=new List<Opportunity>(); |
| | | for (String lcro : arrMap.keyset()) { |
| | | // 给产品赋值 |
| | | Integer i=0; |
| | | //赋值询价去重 |
| | | List<String> jxsList=new List<String>(); //经销商 |
| | | List<String> ppList=new List<String>(); //失单品牌 |
| | | // List<String> yyList=new List<String>(); //失单原因 |
| | | //初始化 |
| | | 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 |
| | | //经销商 |
| | | if (!jxsList.contains(lcr.PCLLostBrand__r.Agency__r.Name)) { |
| | | jxsList.add(lcr.PCLLostBrand__r.Agency__r.Name); |
| | | // SWAG-CCC6F6 2022-04-22 ssm start |
| | | // 询价上都只显示选项列表的值,不需要手动的值 |
| | | 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; |
| | | // } |
| | | opp.Agencies__c+=lcr.PCLLostBrand__r.Agency__r.Name; |
| | | }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; |
| | | // } |
| | | opp.Agencies__c+=','+lcr.PCLLostBrand__r.Agency__r.Name; |
| | | } |
| | | // SWAG-CCC6F6 2022-04-22 ssm end |
| | | } |
| | | //失单品牌 |
| | | if (!ppList.contains(lcr.PCLLostBrand__r.Lost_By_Company__c)) { |
| | | ppList.add(lcr.PCLLostBrand__r.Lost_By_Company__c); |
| | | // SWAG-CCC6F6 2022-04-22 ssm start |
| | | // 询价上都只显示选项列表的值,不需要手动的值 |
| | | 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; |
| | | // } |
| | | 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; |
| | | // } |
| | | opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company__c; |
| | | } |
| | | // SWAG-CCC6F6 2022-04-22 ssm end |
| | | } |
| | | // //失单原因 |
| | | // 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;//20230215 lt DB202302247719 注释 |
| | | // opp.LostPrices__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.TotalAmountLost__c; //20230215 lt DB202302247719 |
| | | opp.of_lost_system_processor__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c; |
| | | } |
| | | } |
| | | //20230215 lt DB202302247719 start |
| | | if(arrMap.get(lcro).TotalAmountLost__c != null){ |
| | | if(opp.LostPrices__c == null){ |
| | | opp.LostPrices__c = 0; |
| | | } |
| | | opp.LostPrices__c+=arrMap.get(lcro).TotalAmountLost__c; |
| | | } |
| | | //20230215 lt DB202302247719 end |
| | | |
| | | // 20221202 ljh DB202211594688 start |
| | | System.debug('zheli00:'+oppIdPZSet+'~'+opp.Id); |
| | | if(oppIdPZSet.contains(opp.Id)){ |
| | | opp.ConfirmationofAward__c = '竞争对手中标'; |
| | | opp.Closing_Bid_Date__c = null; |
| | | } |
| | | // 20221202 ljh DB202211594688 start |
| | | oppList.add(opp); |
| | | } |
| | | update oppList; |
| | | |
| | | } |
| | | // tcm 20211126 更新询价信息 end |
| | | |
| | | |
| | | //sx 20220706 【FY23询价改善】-P:中标结果确认任务开发 失单任务确认时间 start |
| | | private void updateLostTaskTime(){ |
| | | //过滤需要修改的数据 |
| | | Set<Id> lostIds = new Set<Id>(); |
| | | Set<Id> oppIds = new Set<Id>(); |
| | | for(Lost_cancel_report__c lcr : newList){ |
| | | //筛选出需要提交日有修改的订单 |
| | | Lost_cancel_report__c oldLrc = oldMap.get(lcr.Id); |
| | | if((lcr.Report_Status__c != oldMap.get(lcr.Id).Report_Status__c) && lcr.Report_Status__c == '申请中'){ //oldLrc.Submit_Day__c != lcr.Submit_Day__c |
| | | lostIds.add(lcr.Id); |
| | | oppIds.add(lcr.Opportunity__c); |
| | | } |
| | | } |
| | | |
| | | List<Opportunity> oppList = [select Id, Task_createTime__c,LostTask_createTime__c from Opportunity where Id in :oppIds]; |
| | | Map<Id, Opportunity> oppMap = new Map<Id, Opportunity>(); |
| | | for(Opportunity op : oppList){ |
| | | oppMap.put(op.Id,op); |
| | | } |
| | | |
| | | //待更新的询价List |
| | | List<Opportunity> updateoppList = new List<Opportunity>(); |
| | | if(!lostIds.isEmpty()){ |
| | | |
| | | for(String lostId : lostIds){ |
| | | Lost_cancel_report__c tempLost = newMap.get(lostId); |
| | | //修改失单对应询价的失单任务时间 |
| | | Opportunity opp = new Opportunity(); |
| | | opp.Id = tempLost.Opportunity__c; |
| | | //20221207 失单任务确认日 只跟失单报告称创建日有关系去掉逻辑 oppMap.get(tempLost.Opportunity__c).Task_createTime__c!= null || |
| | | if(oppMap.get(tempLost.Opportunity__c).LostTask_createTime__c!= null){ |
| | | opp.LostTask_comfirmTime__c = Date.today(); |
| | | } |
| | | updateoppList.add(opp); |
| | | } |
| | | |
| | | if(!updateoppList.isEmpty()){ |
| | | update updateoppList; |
| | | } |
| | | } |
| | | } |
| | | //sx 20220706 【FY23询价改善】-P:中标结果确认任务开发 失单任务确认时间 end |
| | | |
| | | // 2022-7-29 ssm XLIU-CGSC8R 【委托】[改善】询价里删除批准的失单报告状态1自动变 start |
| | | // 删除已批准的报告后,把询价状态改回成询价 |
| | | private void updateOppStage() { |
| | | List<String> oppIds = new List<String>(); |
| | | for (Lost_cancel_report__c report : this.oldList) { |
| | | if (report.Report_Status__c == '批准') { |
| | | oppIds.add(report.Opportunity__c); |
| | | } |
| | | } |
| | | System.debug('oppIds: ' + oppIds); |
| | | if (oppIds.size() > 0) { |
| | | List<Opportunity> opps = [select Id, StageName, Final_Contract_Proceeded_Date__c, Lost_Opportunity_Date__c from Opportunity where Id in :oppIds and StageName in ('敗戦', '削除')]; |
| | | System.debug('opps: ' + opps); |
| | | if (opps.size() > 0) { |
| | | for (Opportunity opp : opps) { |
| | | opp.StageName = '引合'; |
| | | opp.Final_Contract_Proceeded_Date__c = null; |
| | | opp.Lost_Opportunity_Date__c = null; |
| | | } |
| | | update opps; |
| | | } |
| | | } |
| | | } |
| | | // 2022-7-29 ssm XLIU-CGSC8R 【委托】[改善】询价里删除批准的失单报告状态1自动变 end |
| | | |
| | | } |