public without sharing class OpportunitySpecialApplyHandler extends Oly_TriggerHandler { // 询价预测特殊对应 private Map newMap; private Map oldMap; private List newList; private List oldList; Id recordTypeOpp = Schema.SObjectType.OpportunitySpecialApply__c.getRecordTypeInfosByDeveloperName().get('OpportunityRecordType').getRecordTypeId(); public OpportunitySpecialApplyHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeInsert() { // 批准后,将内容和理由赋值到询价 updateWindow(); } // taoqz 2020/07/02 start protected override void afterInsert() { updateOpp(); } // taoqz 2020/07/02 end protected override void beforeUpdate() { // 批准后,将内容和理由赋值到询价 updateWindow(); } protected override void afterUpdate() { // 批准后,将内容和理由赋值到询价 updateOpp(); } private void updateWindow() { List mpList = [select id, Name, Window1__c from OCM_Management_Province__c]; // 取得OCSM管理省的营业窗口 Map mpMap = new Map(); for (OCM_Management_Province__c mp : mpList) { mpMap.put(mp.Name, mp); } // 设置审批人 for (OpportunitySpecialApply__c n : newList) { OCM_Management_Province__c omp = mpMap.get(n.OCM_man_province_no_dealer__c); if (omp != null) { n.OCM_Window__c = omp.Window1__c; } } } // taoqz 2020/07/02 start // 更新注残预测 // taoqz 2020/07/02 end private void updateOpp() { // 有重复更新询价 最新特殊对应 的情况,list 变map Gzw 20201030 update // List oppList = new List(); Map oppMap = new Map(); List achList = new List(); for (OpportunitySpecialApply__c n : newList) { Opportunity opp = new Opportunity(); Statu_Achievements__c ach = new Statu_Achievements__c(); //if (oldMap.get(n.Id).get('Status__c') != n.Status__c && n.Status__c == '已批准') { if ((Trigger.isInsert && n.Status__c == '已批准') || (Trigger.isUpdate && oldMap.get(n.Id).get('Status__c') != n.Status__c && n.Status__c == '已批准')) { String strMemo; strMemo = '特殊对应:' + n.Apply_Content__c + ' ' + n.NMApply_Content_c__c; strMemo += '; 理由:' + n.Apply_Reason__c + ((n.Apply_Memo__c == null) ? '' : n.Apply_Memo__c); strMemo += '; 批准日期:' + n.Approval_Date__c.format(); //if (n.recordType.DeveloperName == 'OpportunityRecordType') { if (n.RecordTypeId == recordTypeOpp) { // 询价特殊申请记录类型 opp.Id = n.Opportunity__c; opp.SpecialApply__c = n.Id; opp.SpecialApplyMemo__c = strMemo; opp.Special_Apply_Content__c = n.Apply_Content__c; opp.Special_Approval_Date__c = n.Approval_Date__c; opp.Special_Apply_Reason__c = n.Apply_Reason__c + ((n.Apply_Memo__c == null) ? '' : n.Apply_Memo__c); if (n.Apply_Content__c == '删除本月订货预测' || n.Apply_Content__c == '删除本月订发货预测') { opp.Forecast_this_month__c = ''; } else if (n.Apply_Content__c == '新增本月订货预测') { opp.Forecast_this_month__c = '本月订货预测'; } else if (n.Apply_Content__c == '新增本月订发货预测') { opp.Forecast_this_month__c = '本月订发货预测'; } // oppList.add(opp); oppMap.put(opp.Id, opp); } else { // 注残特殊申请记录类型 ach.Id = n.Achievements__c; ach.SpecialApply__c = n.Id; ach.Special_Apply_Content__c = n.Apply_Content__c; ach.Special_NMApply_Content__c = n.NMApply_Content_c__c; ach.Special_Approval_Date__c = n.Approval_Date__c; ach.Special_Apply_Reason__c = n.Apply_Reason__c + ((n.Apply_Memo__c == null) ? '' : n.Apply_Memo__c); ach.SpecialApplyMemo__c = strMemo; // 2020/07/06 taoqz start 与月末判断有关,表明注残为手动审批,月末判断时跳过 ach.isManualApprove__c = true; // 2020/07/06 taoqz end if (n.Apply_Content__c == '新增本月发货预测') { ach.Monthly_forecast_shipping__c = '本月发货预测'; } else if (n.Apply_Content__c == '删除本月发货预测') { ach.Monthly_forecast_shipping__c = ''; } // if (n.NMApply_Content_c__c == '新增次月发货预测') { ach.NM_forecast_shipping__c = '次月发货预测'; } else if (n.NMApply_Content_c__c == '删除次月发货预测') { ach.NM_forecast_shipping__c = ''; } // achList.add(ach); opp.Id = n.Opportunity__c; opp.SpecialApply__c = n.Id; // oppList.add(opp); oppMap.put(opp.Id, opp); } } } // if (oppList.size() > 0) { // update oppList; // } if (oppMap.size() > 0) { update oppMap.values(); } if (achList.size() > 0) { update achList; } } }