游畅
2022-03-23 ebd93af9feabaa132f6d780262d2db2ce0066275
force-app/main/default/triggers/ConsumableOrderTrigger.trigger
@@ -1,95 +1,103 @@
trigger ConsumableOrderTrigger on Consumable_order__c (before insert, before update) {
    if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
        return ;
    }
    Set<String> contactIdSet = new Set<String>();
    Map<String, String> rprIdList = new Map<String, String>();
    Map<String, String> contactIdMap = new Map<String, String>();
    List<Statu_Achievements__c> sAlist = new List<Statu_Achievements__c>();
    if (Trigger.isBefore) {
    Account contactdet = null;
    List<Account> contactList = new List<Account>();
    Consumable_order__c old = null;
    for (Consumable_order__c local : Trigger.New) {
        if(String.isNotBlank(local.Order_effective_contact__c)){
            contactIdSet.add(local.Order_effective_contact__c);
        }
    }
    // contactList = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id in :contactIdSet];
    // for(Account acc :contactList){
    //     if(String.isNotBlank(acc.Business_Assistant__c)){
    //         contactIdMap.put(acc.Id, acc.Business_Assistant__c);
    //     }
    // }
   // CHAN-CBYBBF 【委托】经销商ET账号显示界面维护-广东汇晨 start
   // 注释跳过 发货时要计算 SAP合同号
   // if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
   //    return;
   // }
   // CHAN-CBYBBF 【委托】经销商ET账号显示界面维护-广东汇晨 end
   //add by rentx 20210618 start
   if (StaticParameter.ConsumableOrderTrigger) {
      return;
   }
   //ad by rentx 20210618 end
   Set<String> contactIdSet = new Set<String>();
   Map<String, String> rprIdList = new Map<String, String>();
   Map<String, String> contactIdMap = new Map<String, String>();
   List<Statu_Achievements__c> sAlist = new List<Statu_Achievements__c>();
   if (Trigger.isBefore) {
      Account contactdet = null;
      List<Account> contactList = new List<Account>();
      Consumable_order__c old = null;
      for (Consumable_order__c local : Trigger.New) {
         if(String.isNotBlank(local.Order_effective_contact__c)) {
            contactIdSet.add(local.Order_effective_contact__c);
         }
      }
      // contactList = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id in :contactIdSet];
      // for(Account acc :contactList){
      //     if(String.isNotBlank(acc.Business_Assistant__c)){
      //         contactIdMap.put(acc.Id, acc.Business_Assistant__c);
      //     }
      // }
    Map<String,List<Statu_Achievements__c>> sAmap = new Map<String,List<Statu_Achievements__c>>();
    Map<String,String> zMaps = new Map<String,String>();
      Map<String,List<Statu_Achievements__c> > sAmap = new Map<String,List<Statu_Achievements__c> >();
      Map<String,String> zMaps = new Map<String,String>();
    for (Consumable_order__c local : Trigger.New) {
        if(String.isNotBlank(local.Opportunity__c) && String.isNotBlank(local.name)){
            zMaps.put(local.Opportunity__c,local.name);
        }
    }
      for (Consumable_order__c local : Trigger.New) {
         if(String.isNotBlank(local.Opportunity__c) && String.isNotBlank(local.name)) {
            zMaps.put(local.Opportunity__c,local.name);
         }
      }
    sAlist = [SELECT ContractNO__c,Opportunity__c FROM Statu_Achievements__c WHERE Opportunity__c = :zMaps.keySet()];
    for(Statu_Achievements__c sa : sAlist){
        List<Statu_Achievements__c> ssList = sAmap.get(zMaps.get(sa.Opportunity__c));
        if(ssList == null){
            ssList = new List<Statu_Achievements__c>();
        }
        ssList.add(sa);
        sAmap.put(zMaps.get(sa.Opportunity__c),ssList);
    }
    // sAlist = [SELECT ContractNO__c FROM Statu_Achievements__c WHERE Opportunity__c = :opps];
    // sAmap.put(name,sAlist);
      sAlist = [SELECT ContractNO__c,Opportunity__c FROM Statu_Achievements__c WHERE Opportunity__c = :zMaps.keySet()];
    for (Consumable_order__c local : Trigger.New) {
        if (Trigger.isInsert) {
                rprIdList.put(local.Id, local.Id);
        }
        if (Trigger.isUpdate) {
            old = Trigger.oldMap.get(local.Id);
        }
        // 「消耗品订单」になったとき、ログインユーザーからプロセス用の上司を設定
        if ((Trigger.isInsert
            || old.Order_status__c != local.Order_status__c)
             && local.Order_status__c == '附件上传完成'
        )   {
                //if (contactdet == null) {
                //    contactdet = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id = :local.Order_effective_contact__c];
                //}
                if(local.Business_Assistant__c == null){
                    local.addError('合同没有有效的营业助理。');
                    continue;
                }else{
                    local.SalesManager__c = local.Business_Assistant__c;
                }
                // 項目の新規追加したくない、API名も変更したくない、ラベル名を変更、User.服务→修理.服务
                //local.SalesManager__c = contactdet.SalesManager__c == null ? contactdet.Id : contactdet.SalesManager__c;
                //local.BuchangApprovalManagerSales__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c;
                //local.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c;
                //local.TongkuoZongjian__c = loginUser.TongkuoZongjian__c == null ? loginUser.Id : loginUser.TongkuoZongjian__c;
            }
      for(Statu_Achievements__c sa : sAlist) {
         List<Statu_Achievements__c> ssList = sAmap.get(zMaps.get(sa.Opportunity__c));
         if(ssList == null) {
            ssList = new List<Statu_Achievements__c>();
         }
         ssList.add(sa);
         sAmap.put(zMaps.get(sa.Opportunity__c),ssList);
      }
            //更新or插入 前
            if(Trigger.isInsert || Trigger.isUpdate ){
                List<String> cNList = new List<String>();
                List<Statu_Achievements__c> sas = sAmap.get(local.name);
      // sAlist = [SELECT ContractNO__c FROM Statu_Achievements__c WHERE Opportunity__c = :opps];
      // sAmap.put(name,sAlist);
                if(sas != null){
                    for (Statu_Achievements__c sa : sas) {
                        //保存合同编号
                        cNList.add(sa.ContractNO__c);
                    }
                    //拼接合同编号
                    String cNs = String.join(cNList,',');
                    local.ContractNo__c = cNs;
                }
            }
        }
    }
      for (Consumable_order__c local : Trigger.New) {
         if (Trigger.isInsert) {
            rprIdList.put(local.Id, local.Id);
         }
         if (Trigger.isUpdate) {
            old = Trigger.oldMap.get(local.Id);
         }
         // 「消耗品订单」になったとき、ログインユーザーからプロセス用の上司を設定
         if ((Trigger.isInsert
              || old.Order_status__c != local.Order_status__c)
             && local.Order_status__c == '附件上传完成'
             )   {
            //if (contactdet == null) {
            //    contactdet = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id = :local.Order_effective_contact__c];
            //}
            if(local.Business_Assistant__c == null) {
               local.addError('合同没有有效的营业助理。');
               continue;
            }else{
               local.SalesManager__c = local.Business_Assistant__c;
            }
            // 項目の新規追加したくない、API名も変更したくない、ラベル名を変更、User.服务→修理.服务
            //local.SalesManager__c = contactdet.SalesManager__c == null ? contactdet.Id : contactdet.SalesManager__c;
            //local.BuchangApprovalManagerSales__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c;
            //local.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c;
            //local.TongkuoZongjian__c = loginUser.TongkuoZongjian__c == null ? loginUser.Id : loginUser.TongkuoZongjian__c;
         }
         //更新or插入 前
         if(Trigger.isInsert || Trigger.isUpdate ) {
            List<String> cNList = new List<String>();
            List<Statu_Achievements__c> sas = sAmap.get(local.name);
            if(sas != null) {
               for (Statu_Achievements__c sa : sas) {
                  //保存合同编号
                  cNList.add(sa.ContractNO__c);
               }
               //拼接合同编号
               String cNs = String.join(cNList,',');
               local.ContractNo__c = cNs;
            }
         }
      }
   }
}