付煜
2022-03-23 e80d04ca9a269545081ae6e45b073c01bb662769
force-app/main/default/triggers/NFM007.trigger
@@ -57,6 +57,9 @@
                            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
@@ -65,6 +68,8 @@
                            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;
                        
@@ -77,7 +82,16 @@
                            }
                            // 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){
@@ -86,7 +100,9 @@
                        //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 != '○'){ 
@@ -97,39 +113,56 @@
                                } 
                                 //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){
@@ -252,4 +285,160 @@
        System.debug(Logginglevel.DEBUG, 'NFM007_' + iflog.Name + ' start');                  // callout の中 end のlogを出します
        NFM007Controller.callout(iflog.Id, oppIds, purposeOfAdviceMap);
    }
    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++;
    }
}