public without sharing class OpportunityTrigger { public static void lockOpportunityFile(List newList, Map newMap, List oldList, Map oldMap) { List targetIds = new List(); for (Opportunity newOpp : newList) { Opportunity oldOpp = oldMap.get(newOpp.Id); if (newOpp.Stock_apply_status__c != oldOpp.Stock_apply_status__c && newOpp.Stock_apply_status__c == '批准' && oldOpp.Stock_apply_status__c == '申请中') { targetIds.add(newOpp.Id); } } if (targetIds.size() == 0) Return; List ofileList = [select id, Is_Locked__c from Opportunity_File__c where Opportunity__c = :targetIds and Is_Locked__c = false]; for (Opportunity_File__c ofile : ofileList) { ofile.Is_Locked__c = true; } update ofileList; } //CHAN-AZJ6JS 追溯系统来的询价,取消WIN时,经销商订单自动改到“驳回” public static void changeConsumableOrderStatus(List newList, Map newMap, List oldList, Map oldMap) { List orderIds = new List(); for (Opportunity newOpp : newList) { // si询价新逻辑 为配置建议决定时间赋值 by vivek start if(newOpp.Configuration_Suggestion__c == '无建议' && newOpp.Recommended_Confirmation_Time__c == null){ newOpp.Recommended_Confirmation_Time__c = Date.today(); } if(newOpp.Configuration_Suggestion__c == '有建议' && newOpp.Configuration_Suggestion_Feedback__c != null && newOpp.Recommended_Confirmation_Time__c == null){ newOpp.Recommended_Confirmation_Time__c = Date.today(); } // si询价新逻辑 为配置建议决定时间赋值 by vivek end Opportunity oldOpp = oldMap.get(newOpp.Id); if (newOpp.SAP_Send_OK__c != oldOpp.SAP_Send_OK__c && newOpp.SAP_Send_OK__c == false ) { if (String.isNotBlank(newOpp.Estimation_Id__c) && newOpp.Estimation_Id__c.StartsWith('a2K'))newOpp.StageName = '削除'; if (String.isNotBlank(newOpp.Opportunity_No__c)) orderIds.add(newOpp.Opportunity_No__c); //lastbuy 2022/2/9 fy start List upLastbuyObjList = new List(); List LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : newOpp.Id]; if(LastbuyObjList!=null){ for(LastbuyProduct__c lastbuypr :LastbuyObjList){ lastbuypr.ActualQuantity__c=0; lastbuypr.effectiveFLG__c=true; upLastbuyObjList.add(lastbuypr); } } if(upLastbuyObjList!=null){ upsert upLastbuyObjList; } //lastbuy 2022/2/9 fy end } } if (orderIds.size() == 0) Return; ControllerUtil.selectAndupdateOrderSatus(orderIds); /*List orderList = [select id, Order_status__c from Consumable_order__c where Name = :orderIds and Order_status__c = '批准' and RecordType.DeveloperName = 'Order']; for (Consumable_order__c order : orderList) { order.Order_status__c = '驳回'; } update orderList;*/ } // CHAN-AYTCE6 询价页面中的经销商1变更后更新报价中经销商1 2018/5/25 start public static void changeQuoteAgency1(List newList, Map newMap, List oldList, Map oldMap) { Map oppIdMap = new Map(); for (Opportunity newOpp : newList) { if (!String.isBlank(newOpp.Estimation_No__c) && newOpp.StageName__c != '取消' && newOpp.StageName__c != '失单') { Opportunity oldOpp = oldMap.get(newOpp.Id); if ( ( (String.isBlank(oldOpp.Agency1__c) && !String.isBlank(newOpp.Agency1__c)) || (!String.isBlank(oldOpp.Agency1__c) && String.isBlank(newOpp.Agency1__c)) || oldOpp.Agency1__c != newOpp.Agency1__c ) && ( newOpp.Estimation_No__c == oldOpp.Estimation_No__c ) ) { oppIdMap.put(newOpp.Id, newOpp); } } } if (oppIdMap.size() > 0) { List quList = [Select Id, Agency1__c, Quote_No__c, OpportunityId from Quote where OpportunityId In: oppIdMap.keySet()]; if (quList != null && quList.size() > 0) { List quUpd = new List(); for (Quote q : quList) { Opportunity opp = oppIdMap.get(q.OpportunityId); if (q.Quote_No__c == opp.Estimation_No__c) { q.Agency1__c = opp.Agency1__c; quUpd.add(q); } } if (quUpd.size() > 0) { update quUpd; } } } } // CHAN-AYTCE6 询价页面中的经销商1变更后更新报价中经销商1 2018/5/25 end // 千里马 - 招投标状态更新Batch mzy 2021-05-13 start // 更新招投标上反应询价标识 public static void UpdateBiddingFlag(List newList, Map newMap, List oldList, Map oldMap) { if (StaticParameter.EscapeOpportunityBefUpdTrigger) { return; } List tenderList = new List(); Map tenderMap = new Map(); // 招标-询价关联修改 需要从link表里确认有哪些信息需要修改 List oppIds = new List(); for (Opportunity op : newList) { oppIds.add(op.Id); } List links = [SELECT Id, Tender_information__c, Tender_information__r.IsReactionOpp__c, Opportunity__c FROM Tender_Opportunity_Link__c WHERE Opportunity__c IN :oppIds AND Tender_information__r.IsReactionOpp__c = false]; // 由于变为link之后,招标项目字段不再每次绑定时都更新,针对招标-询价关联时修改反映询价标记的修改无法顾及所有 // 在此处只对win和失单判断做更新 for(Opportunity op : newList){ // Tender_information__c temptender = new Tender_information__c(); //Tender_information__c Oldtemptender = new Tender_information__c(); Opportunity oldopp = oldMap == null? null : oldMap.get(op.id); if(oldopp != null){ //判断询价的招标项目 从有到无 -- 从无到有 // if( op.Bidding_Project_Name_Bid__c != oldopp.Bidding_Project_Name_Bid__c){ // if(String.isNotBlank(op.Bidding_Project_Name_Bid__c)){ // temptender.id = op.Bidding_Project_Name_Bid__c; // temptender.IsReactionOpp__c = true; // tenderMap.put(temptender.id ,temptender ); // } // if(String.isNotBlank(oldopp.Bidding_Project_Name_Bid__c)) { // temptender = new Tender_information__c(); // temptender.id = oldopp.Bidding_Project_Name_Bid__c; // temptender.IsReactionOpp__c = true; // tenderMap.put(temptender.id ,temptender ); // } // } // 从不win到win 或 从win到不win 并且 招投标项目不为空 // if( (op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c )&&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){ // temptender.id = op.Bidding_Project_Name_Bid__c; // temptender.IsReactionOpp__c = true; // tenderMap.put(temptender.id ,temptender ); // } // 从失单到不失单 或 从不失单到失单 并且 招投标项目不为空 // if( ( (op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单')) // ||(!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单')) ) &&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){ // temptender.id = op.Bidding_Project_Name_Bid__c; // temptender.IsReactionOpp__c = true; // tenderMap.put(temptender.id ,temptender ); // } // 合并判断条件 if((op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c) || ((op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单')) || (!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单')))) { for (Tender_Opportunity_Link__c link : links) { if (link.Opportunity__c == op.Id) { Tender_information__c temptender = new Tender_information__c(); temptender.Id = link.Tender_information__c; temptender.IsReactionOpp__c = true; tenderMap.put(temptender.id ,temptender); } } } // }else { // //新建时判断询价的招标项目是不是从无到有 // if(String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){ // temptender.id = op.Bidding_Project_Name_Bid__c; // temptender.IsReactionOpp__c = true; // tenderMap.put(temptender.id ,temptender ); // } } } System.debug('招标Map:'+tenderMap); if(tenderMap.size()>0){ update tenderMap.values(); } } // 千里马 - 招投标状态更新Batch mzy 2021-05-13 start // 招标-询价关联 20210817 start public static void changeLastLinkedTender(List newList, Map newMap, List oldList, Map oldMap) { List new_links = new List(); for(Opportunity op : newList){ // 先判断Bidding_Project_Name_Bid__c是不是空 if (op.Bidding_Project_Name_Bid__c != null && String.isNotBlank(op.Bidding_Project_Name_Bid__c)) { // 不是空的情况下 // 新建link Tender_Opportunity_Link__c link = new Tender_Opportunity_Link__c(); link.Tender_information__c = op.Bidding_Project_Name_Bid__c; link.Opportunity__c = op.id; link.Tender_Opportunity_Uniq__c = String.valueOf(op.Bidding_Project_Name_Bid__c) + String.valueOf(op.id); new_links.add(link); } } if (new_links.size() > 0) { insert new_links; } } // 招标-询价关联 20210817 end // 阿斯赛多签收单 精琢技术 fy 2021-09-06 start // public static void changeSignedByAsicedo(List newList, Map newMap, List oldList, Map oldMap) { // List Statu_Achievements_DN_c = new List(); // List eSignForm_c = new List(); // for(Opportunity op : newList){ // if(op.Is_Corrosion__c==false&&oldMap.get(op.Id).Is_Corrosion__c==true){ // List StatuAchievementsDNc =[select Id,Name,Is_Corrosion__c from Statu_Achievements_DN__c where Opportunity__c =:op.Id]; // for(Statu_Achievements_DN__c sadc:StatuAchievementsDNc){ // if(sadc.Is_Corrosion__c==true){ // sadc.Is_Corrosion__c=false; // Statu_Achievements_DN_c.add(sadc); // system.debug('Statu_Achievements_DN_c ==='+Statu_Achievements_DN_c); // } // List eSignFormc =[select Id,Name,Hazardous_Chemicals__c from eSignForm__c where Statu_Achievements_DN__c =:sadc.Id]; // for(eSignForm__c efc:eSignFormc){ // if(efc.Hazardous_Chemicals__c==true){ // efc.Hazardous_Chemicals__c=false; // eSignForm_c.add(efc); // system.debug('eSignForm_c ==='+eSignForm_c); // } // } // } // } // } // if(Statu_Achievements_DN_c.size()>0){ // update Statu_Achievements_DN_c; // } // if(eSignForm_c.size()>0){ // update eSignForm_c; // } // } // 阿斯赛多签收单 精琢技术 fy 2021-09-06 end // SWAG-C7P4XB start // 更新前操作 判断WIN为TRUE的时候 清除掉"取消WIN原因" public static void removeCancelWinReason(List newList, Map newMap, List oldList, Map oldMap) { for (Opportunity opp : newList) { Opportunity old_opp = oldMap.get(opp.Id); if (opp.SAP_Send_OK__c == true && old_opp != null && old_opp.SAP_Send_OK__c == false && opp.Reason_Cancel_WIN__c != null) { opp.Reason_Cancel_WIN__c = null; } } } // SWAG-C7P4XB end //LastBuy 预留产品 lt 20220315 start //询价失单或取消时,预留产品的"是否有效"设置为否 public static void ReservedProFlg(List newList, Map newMap, List oldList, Map oldMap){ List oppList = new List(); List lbpflgList = new List(); for (Opportunity lbOpp : newList){ Opportunity OldLbOpp = oldMap.get(lbOpp.Id); if(OldLbOpp.StageName != lbOpp.StageName){ if(lbOpp.StageName == '敗戦' || lbOpp.StageName == '削除'){ oppList.add(lbOpp.Id); } } } if(oppList.size() > 0){ List lbpList = [select id, effectiveFLG__c,InquiryCode__c from LastbuyProduct__c where InquiryCode__c in :oppList]; if(lbpList.size() > 0){ for(LastbuyProduct__c lbp : lbpList){ if(lbp.effectiveFLG__c == true){ lbp.effectiveFLG__c = false; lbpflgList.add(lbp); } } } } if(lbpflgList.size() > 0){ update lbpflgList; } } //LastBuy 预留产品 lt 20220315 end }