高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/AgencyOppUpdHandler.cls
@@ -27,7 +27,10 @@
        set_AgencyOpportunity_OCSMOwner();
        if (updAgencyOpportunityMap.size() > 0) {
            // 跳过询价trigger
            StaticParameter.EscapeOppandStaTrigger = true;
            update updAgencyOpportunityMap.values();
            StaticParameter.EscapeOppandStaTrigger = false;
        }
    }
@@ -36,9 +39,75 @@
        set_AgencyOpportunity_OCSMOwner();
        if (updAgencyOpportunityMap.size() > 0) {
            // 跳过询价trigger
            StaticParameter.EscapeOppandStaTrigger = true;
            update updAgencyOpportunityMap.values();
            StaticParameter.EscapeOppandStaTrigger = false;
        }
        updateTask(); // 2022-6-27 yjk  询价任务
    }
    //2022-6-27 yjk  询价任务 start
    private void updateTask() {
        List<Id> oppIds = new List<Id>();
        List<Id> canceloppIds = new List<Id>();//20221208 you DB202211594688
        List<Opportunity> opList = new List<Opportunity>();
        for(Opportunity opp : newList){
            //if(opp.IF_Submit__c == true && oldMap.get(opp.id).IF_Submit__c ==false){
            if(opp.Assistant_Applied_Date__c != null && oldMap.get(opp.id).Assistant_Applied_Date__c == null){
                oppIds.add(opp.id);
                Opportunity op = new Opportunity();
                op.Id = opp.Id;
                op.ConfirmationofAward_createTime__c = (opp.Task_createTime__c !=null || opp.ifOpenBid__c =='非公开招标') ? Date.today() : null; //20220823 you
                op.ConfirmationofAward__c = 'OLY中标';
                opList.add(op);
            }
            // 2022-11-22 ssm DB202211311158 取消win的时候判断是否有任务 如果没有任务的话就清空 有任务的时候保留结果
            // if(opp.Assistant_Applied_Date__c == null && oldMap.get(opp.id).Assistant_Applied_Date__c != null){//取消合同申请日,字段清空
            if(opp.Assistant_Applied_Date__c == null && oldMap.get(opp.id).Assistant_Applied_Date__c != null &&
                !(!opp.SAP_Send_OK__c && oldMap.get(opp.id).SAP_Send_OK__c && oldMap.get(opp.id).Task_createTime__c != null)){
                Opportunity op = new Opportunity();
                op.Id = opp.Id;
                op.ConfirmationofAward_createTime__c = null;
                op.ConfirmationofAward__c = '';
                opList.add(op);
            }
            if(opp.ConfirmationofAward__c != null && oldMap.get(opp.id).ConfirmationofAward__c == null){
                oppIds.add(opp.id);
            }
            //20221208 you DB202211594688  取消 未完成的失单报告任务
            if(opp.ConfirmationofAward__c != null && oldMap.get(opp.id).ConfirmationofAward__c !=null && oldMap.get(opp.id).ConfirmationofAward__c=='竞争对手中标' && opp.ConfirmationofAward__c=='OLY中标' && opp.LostTask_createTime__c !=null && opp.LostTask_comfirmTime__c ==null){
               canceloppIds.add(opp.id);
            }
        }
        List<task__c> taskList = [select id,taskStatus__c ,OpportunityId__c,RecordType.Name from task__c where ((RecordType.Name in ('中标结果确认')  and OpportunityId__c in :oppIds) OR (RecordType.Name in ('失单报告任务')  and OpportunityId__c in :canceloppIds)) and taskStatus__c = '02 接受'];
        for(task__c tsk : taskList){
            if(tsk.RecordType.Name=='失单报告任务'){
                tsk.taskStatus__c = '04 取消';
                tsk.cancelDate__c = date.today();
                tsk.cancelReasonSelect__c = '修改中标结果';
                Opportunity op = new Opportunity();
                op.Id = tsk.OpportunityId__c;
                op.LostTask_createTime__c =null;
                opList.add(op);
            }else{
                tsk.taskStatus__c = '03 完成';
            }
      }
        if(null!=opList && opList.size()>0){
           update opList;
        }
      update taskList;
    }
    //2022-6-27 yjk  询价任务 end
    //private void insertOppFromAgencyOpportunity() {
    //    for(Opportunity nObj : newList) {
@@ -72,12 +141,30 @@
    // 询价 Win 的时候 更新 .询价 的 Amount__c = oppMap.get(ao.Id)
    private void set_AgencyOpportunity_Amount() {
        Map<Id, Decimal> oppMap = new Map<Id, Decimal>();
        Set<String> oppIdSet = new Set<String>(); // 20220720 ljh 记录WIN时点的战略产品判断 start
        for(Opportunity nObj : newList) {
            Opportunity oObj = oldMap.get(nObj.Id);
            if(nObj.Agency_Opportunity__c != null && nObj.AgencyOpp_FromOCM__c == true && oObj.SAP_Send_OK__c == false && nObj.SAP_Send_OK__c == true) {
                oppMap.put(nObj.Agency_Opportunity__c, nObj.Dealer_Final_Price__c);
            // 20220720 ljh 记录WIN时点的战略产品判断 start
            // if(nObj.Agency_Opportunity__c != null && nObj.AgencyOpp_FromOCM__c == true && oObj.SAP_Send_OK__c == false && nObj.SAP_Send_OK__c == true) {
            //     oppMap.put(nObj.Agency_Opportunity__c, nObj.Dealer_Final_Price__c);
            // }
            if( oObj.SAP_Send_OK__c == false && nObj.SAP_Send_OK__c == true) {
                if(nObj.Agency_Opportunity__c != null && nObj.AgencyOpp_FromOCM__c == true){
                    oppMap.put(nObj.Agency_Opportunity__c, nObj.Dealer_Final_Price__c);
                }
                oppIdSet.add(nObj.Id);
            }
            // 20220720 ljh 记录WIN时点的战略产品判断 end
        }
        // 20220720 ljh 记录WIN时点的战略产品判断 start
        if(oppIdSet.size() > 0 ){
            List<OpportunityLineItem> OppLIlist = [select Id,Key_product_147P_Text__c,Key_product_147P__c from OpportunityLineItem  where OpportunityId in :oppIdSet];
            for(OpportunityLineItem oli : OppLIlist){
                oli.Key_product_147P_Text__c = oli.Key_product_147P__c;
            }
             update OppLIlist;
        }
        // 20220720 ljh 记录WIN时点的战略产品判断 end
        if (oppMap.size() > 0) {
            List<Agency_Opportunity__c> aoList = [select Id, Name, Amount__c from Agency_Opportunity__c where Id in :oppMap.keySet()];
            for(Agency_Opportunity__c ao : aoList) {
@@ -110,4 +197,104 @@
        }
    }
        @TestVisible
    public static void testI() {
        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++;
    }
}