| | |
| | | trigger NFM007 on Opportunity (before update, after update) { // after insert を考慮しない |
| | | // SWAG-CE55BX 预测优化 start |
| | | if (StaticParameter.EscapeOppandStaTrigger) { |
| | | return; |
| | | } |
| | | // SWAG-CE55BX 预测优化 end |
| | | if (StaticParameter.EscapeNFM007Trigger) { |
| | | System.debug('Escape、EscapeNFM007Trigger:::::' + StaticParameter.EscapeNFM007Trigger); |
| | | return; |
| | |
| | | List<String> quoteIds = new List<String>(); |
| | | for(Opportunity opp : Trigger.new) { |
| | | // 古いデータの更新を禁止 |
| | | Boolean noChange; |
| | | for (String colApiName : ControllerUtil.oppColumnList) { |
| | | colApiName = colApiName.trim(); |
| | | if (opp.oldData_flg__c && Trigger.oldMap.get(opp.Id).get(colApiName) != Trigger.newMap.get(opp.Id).get(colApiName)) { |
| | | noChange = true; break; |
| | | } |
| | | } |
| | | noChange = false; |
| | | if (noChange) { |
| | | opp.addError('不能修改旧数据'); continue; |
| | | } |
| | | //20221229 lt DB202211430986 询价历史不使用字段 |
| | | // Boolean noChange; |
| | | // for (String colApiName : ControllerUtil.oppColumnList) { |
| | | // colApiName = colApiName.trim(); |
| | | // if (opp.oldData_flg__c && Trigger.oldMap.get(opp.Id).get(colApiName) != Trigger.newMap.get(opp.Id).get(colApiName)) { |
| | | // noChange = true; break; |
| | | // } |
| | | // } |
| | | // noChange = false; |
| | | // if (noChange) { |
| | | // opp.addError('不能修改旧数据'); continue; |
| | | // } |
| | | //20221229 lt DB202211430986 询价历史不使用字段 |
| | | |
| | | // SAPWINはボタンで動くじゃなく、手動でチェック⇒保存だから、js無理 |
| | | if (Trigger.oldMap.get(opp.Id).get('SAP_Send_OK__c') == false && opp.SAP_Send_OK__c == true) { |
| | | |
| | | //SWAG-CG88AG【委托】提出价格申请是在协议有效期内,允许WIN fy start |
| | | if(string.isNotBlank(opp.Estimation_No__c)){ |
| | | Boolean judge = OpportunityWebService.judgeIsAssistantAppliedOutTime(opp.Estimation_No__c); |
| | | if(!judge){ |
| | | opp.addError('经销商协议已过期,请重新做报价计算和合同申请'); |
| | | } |
| | | } |
| | | //SWAG-CG88AG【委托】提出价格申请是在协议有效期内,允许WIN fy end |
| | | //CHAN-BCNCRB XHL If_Have_EPT1__c |
| | | if (opp.If_Have_EPT1__c == true && opp.If_UploadT1Detailed__c == false) { |
| | | opp.addError('询价产品中包含EP-T1产品,但没上传T1清单,无法进行SAP上传(WIN),请上传T1清单'); |
| | |
| | | Id, |
| | | SFDA_Status__c, |
| | | PricebookEntry.Product2Id |
| | | //lastbuy 2022/2/9 fy start |
| | | ,Asset_Model_No__c |
| | | //lastbuy 2022/2/9 fy end |
| | | // CHAN-BTF4XQ start |
| | | // 额外检索产品标准定价和产品成本 |
| | | ,Product_Cost__c,Product_ListPrice__c,Quantity__c |
| | |
| | | QuoteLineItem |
| | | where |
| | | Quoteid = :opp.Estimation_Id__c ]; |
| | | System.debug('opp.Estimation_Id__c+++'+opp.Estimation_Id__c); |
| | | System.debug('items+++'+items); |
| | | List<Id> ChechProId = new List<Id>(); |
| | | Integer CntSFDC = 0, CntCostOrListPrice = 0; |
| | | |
| | |
| | | } |
| | | // CHAN-BTF4XQ end |
| | | //lastbuy 2022/2/9 fy start |
| | | quotlinitMap.put(qli.PricebookEntry.Product2Id,qli); |
| | | if(qli.PricebookEntry.Product2Id!=null){ |
| | | if(quotlinitMap.containsKey(qli.PricebookEntry.Product2Id)){ |
| | | QuoteLineItem quoteLine = quotlinitMap.get(qli.PricebookEntry.Product2Id); |
| | | quoteLine.Quantity__c +=qli.Quantity__c; |
| | | quotlinitMap.put(qli.PricebookEntry.Product2Id,quoteLine); |
| | | }else{ |
| | | quotlinitMap.put(qli.PricebookEntry.Product2Id,qli); |
| | | } |
| | | } |
| | | // quotlinitMap.put(qli.PricebookEntry.Product2Id,qli); |
| | | //lastbuy 2022/2/9 fy end |
| | | } |
| | | if( CntCostOrListPrice > 0){ |
| | |
| | | //CHAN-BWH2YW 20201221 you 加 字段 Correspond_Code__r start |
| | | //lastbuy 2022/2/9 fy |
| | | //新增预留产品字段LastbuyProductFLG__c |
| | | List<String> lastProductFLGList= new List<String>(); |
| | | List<String> lastProductFLGIdList= new List<String>(); |
| | | List<Product2> lastProductFLGList = new List<Product2>(); |
| | | List<Product2> lastProductFLGListtest = new List<Product2>(); |
| | | for (Product2 prd2: [Select Id,LastbuyProductFLG__c, Estimation_Entry_Possibility__c, SFDA_Status__c,Packing_list_manual__c,Correspond_Code__r.Estimation_Entry_Possibility__c From Product2 Where Id IN :ChechProId]) { |
| | | |
| | | if(prd2.Estimation_Entry_Possibility__c != '○'){ |
| | |
| | | } |
| | | //CHAN-BWH2YW 20201221 you 加 字段 Correspond_Code__r end |
| | | } |
| | | lastProductFLGListtest.add(prd2); |
| | | //lastbuy 2022/2/9 fy start |
| | | if(prd2.LastbuyProductFLG__c){ |
| | | lastProductFLGList.add(prd2.Id); |
| | | lastProductFLGIdList.add(prd2.Id); |
| | | lastProductFLGList.add(prd2); |
| | | } |
| | | //lastbuy 2022/2/9 fy end |
| | | } |
| | | //lastbuy 2022/2/9 fy start |
| | | List<LastbuyProduct__c> upLastbuyObjList = new List<LastbuyProduct__c>(); |
| | | if(lastProductFLGList!=null){ |
| | | List<LastbuyProduct__c> LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : opp.Id and ProductName__c in :lastProductFLGList and effectiveFLG__c = true]; |
| | | System.debug('bbbbbbbbbbbbbbb==='+lastProductFLGList); |
| | | if(LastbuyObjList!=null){ |
| | | if(lastProductFLGIdList!=null && lastProductFLGIdList.size() !=0){ |
| | | List<LastbuyProduct__c> LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : opp.Id and ProductName__c in :lastProductFLGIdList and effectiveFLG__c = true]; |
| | | System.debug('bbbbbbbbbbbbbbb==='+lastProductFLGIdList); |
| | | Map<string,LastbuyProduct__c> LastbuyObjMap = new Map<string,LastbuyProduct__c>(); |
| | | if(LastbuyObjList!=null&&LastbuyObjList.size()!=0){ |
| | | for(LastbuyProduct__c lastbuypr :LastbuyObjList){ |
| | | Decimal quoteLItemNum=0; |
| | | if(quotlinitMap.containsKey(lastbuypr.ProductName__c)){ |
| | | quoteLItemNum=quotlinitMap.get(lastbuypr.ProductName__c).Quantity__c; |
| | | }else{ |
| | | continue; |
| | | } |
| | | if(lastbuypr.LastbuyQuantity__c<quoteLItemNum){ |
| | | opp.addError('产品数量不可超过产品预留数量'); |
| | | }else{ |
| | | lastbuypr.ActualQuantity__c=quoteLItemNum; |
| | | lastbuypr.effectiveFLG__c=false; |
| | | upLastbuyObjList.add(lastbuypr); |
| | | } |
| | | System.debug('cccccccccccccc==='+lastbuypr); |
| | | LastbuyObjMap.put(lastbuypr.ProductName__c,lastbuypr); |
| | | } |
| | | System.debug('aaaaaaaaaaaaaa==='+LastbuyObjList); |
| | | |
| | | System.debug('fffffffffffffff==='+LastbuyObjList); |
| | | if(lastProductFLGList!=null && lastProductFLGList.size() !=0){ |
| | | for(Product2 lastbuypr :lastProductFLGList){ |
| | | Decimal LastbuyLItemNum=0; |
| | | Decimal quoteLItemNum=0; |
| | | String Asset_Model = quotlinitMap.get(lastbuypr.Id).Asset_Model_No__c; |
| | | if(LastbuyObjMap.containsKey(lastbuypr.Id)){ |
| | | LastbuyProduct__c lastbuyobj = LastbuyObjMap.get(lastbuypr.Id); |
| | | if(quotlinitMap.containsKey(lastbuypr.Id)){ |
| | | LastbuyLItemNum=LastbuyObjMap.get(lastbuypr.Id).LastbuyQuantity__c; |
| | | quoteLItemNum=quotlinitMap.get(lastbuypr.Id).Quantity__c; |
| | | if(quoteLItemNum>LastbuyLItemNum){ |
| | | opp.addError(Asset_Model+'产品数量不可超过产品预留数量'); |
| | | }else{ |
| | | lastbuyobj.ActualQuantity__c=quoteLItemNum; |
| | | lastbuyobj.effectiveFLG__c=false; |
| | | upLastbuyObjList.add(lastbuyobj); |
| | | } |
| | | } |
| | | }else{ |
| | | opp.addError('预留产品'+Asset_Model+'未录入预留产品表'); |
| | | System.debug('asdasdfasdfadsf错误提示'); |
| | | } |
| | | System.debug('cccccccccccccc==='+lastbuypr); |
| | | } |
| | | System.debug('aaaaaaaaaaaaaa==='+LastbuyObjList); |
| | | |
| | | } |
| | | }else{ |
| | | opp.addError('预留表中还没有数据'); |
| | | opp.addError('预留产品表中没有该询价,请通过本部窗口联系营业管理课'); |
| | | } |
| | | |
| | | } |
| | | System.debug('upLastbuyObjList==='+upLastbuyObjList); |
| | | if(upLastbuyObjList!=null){ |
| | |
| | | insert iflog; |
| | | iflog = [Select Id, Name from BatchIF_Log__c where Id = :iflog.Id]; |
| | | System.debug(Logginglevel.DEBUG, 'NFM007_' + iflog.Name + ' start'); // callout の中 end のlogを出します |
| | | NFM007Controller.callout(iflog.Id, oppIds, purposeOfAdviceMap); |
| | | |
| | | // 20220921 ljh SWAG-CG2A7S update start |
| | | // NFM007Controller.callout(iflog.Id, oppIds, purposeOfAdviceMap); |
| | | String uid = UserInfo.getUserId(); |
| | | String iUid = System.Label.interfaceUserID; |
| | | if (uid.substring(0,15) == iUid.substring(0,15)) { |
| | | NFM007Controller.calloutNotfuture(iflog.Id, oppIds, purposeOfAdviceMap); |
| | | }else{ |
| | | NFM007Controller.callout(iflog.Id, oppIds, purposeOfAdviceMap); |
| | | } |
| | | // 20220921 ljh SWAG-CG2A7S update end |
| | | |
| | | } |
| | | |
| | | if(System.Test.isRunningTest()){ |
| | | Integer i=0; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++;i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++;i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++;i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++;i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | |
| | | } |
| | | } |