buli
2023-07-14 36d15f189de2e83ce2576715dac30c3c260388dd
force-app/main/default/triggers/NFM007.trigger
@@ -1,4 +1,9 @@
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;
@@ -27,21 +32,30 @@
                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清单');
@@ -57,6 +71,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 +82,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 +96,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 +114,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 +127,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){
@@ -250,6 +297,173 @@
        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++;
    }
}