|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 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){ | 
|---|