trigger MaintenanceContractTrigger on Maintenance_Contract__c (after insert, before update, before delete) { 
 | 
    if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isBefore && Trigger.isUpdate)) { 
 | 
        NFM106Controller.NFM106Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); 
 | 
    } 
 | 
  
 | 
    if (Trigger.isBefore) { 
 | 
        if (Trigger.isDelete) { 
 | 
            List<String> mcIds = new List<String>(); 
 | 
            List<SFDelete__c> dlist = new List<SFDelete__c>(); 
 | 
            for (Maintenance_Contract__c mc : Trigger.old) { 
 | 
                mcIds.add(mc.Id); 
 | 
                // SFDelete__c にデータを追加 
 | 
                dlist.add(new SFDelete__c( 
 | 
                    delSfId__c = mc.Id, 
 | 
                    tableName__c = 'Maintenance_Contract__c', 
 | 
                    dataOwnerId__c = mc.Service_Contract_Staff__c 
 | 
                )); 
 | 
            } 
 | 
            ControllerUtil.insSFDelete(dlist); 
 | 
            // 活動_サビコンを削除 
 | 
            ControllerUtil.delEvent3ForTrigger(mcIds); 
 | 
        } 
 | 
        //add                    wangweipeng         2021/11/29              start 
 | 
        //判断认款是否完成 
 | 
        if(Trigger.isUpdate){ 
 | 
            for (Maintenance_Contract__c nmc : Trigger.new) { 
 | 
                //判断 上传认款合同时间 是否为空,如果不为空,那么证明此合同需要认款,并且认款金额需要和 第一次计划付款金额 做对比 
 | 
                if(nmc.upload_to_RM_time__c != null){ 
 | 
                    if(nmc.All_Amount__c != Trigger.oldMap.get(nmc.Id).All_Amount__c || nmc.Payment_Plan_Sum_First__c != Trigger.oldMap.get(nmc.Id).Payment_Plan_Sum_First__c){ 
 | 
                        if(nmc.Payment_Plan_Sum_First__c != null || nmc.Payment_Plan_Sum_First__c > 0.0 ){ 
 | 
                            nmc.Is_Recognition_Model_True__c = nmc.All_Amount__c >= nmc.Payment_Plan_Sum_First__c ? true : false; 
 | 
                        }else{ 
 | 
                            if(nmc.All_Amount__c > 0.0 && nmc.All_Amount__c != null){ 
 | 
                                nmc.Is_Recognition_Model_True__c = true; 
 | 
                            }else{ 
 | 
                                nmc.Is_Recognition_Model_True__c = false; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        //FSE所在大区助理 赋值  根据主担当人 的本部 
 | 
        //华北:洪贺男  东北:刘莹莹  西北:祝琪雪  西南:何学琼  华东:陈明赟  华南:闻静 
 | 
        Set<String> setStaff = new Set<String>(); 
 | 
        if(Trigger.isUpdate){ 
 | 
            for (Maintenance_Contract__c nmc : Trigger.new) { 
 | 
                if(nmc.Service_Contract_Staff__c != Trigger.oldMap.get(nmc.Id).Service_Contract_Staff__c || String.isBlank(nmc.FSE_Regional_Assistant__c)){ 
 | 
                    setStaff.add(nmc.Service_Contract_Staff_Salesdepartment__c);//主担当本部(大区) 
 | 
                } 
 | 
            } 
 | 
        }else if(Trigger.isInsert){ 
 | 
            for (Maintenance_Contract__c nmc : Trigger.new) { 
 | 
                if(String.isNotBlank(nmc.Service_Contract_Staff__c)){ 
 | 
                    setStaff.add(nmc.Service_Contract_Staff_Salesdepartment__c);//主担当本部(大区) 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        if(setStaff.size() > 0){ 
 | 
            //获取对应的自定义元数据 
 | 
            List<FSE_Regional_Assistant__mdt> usrList = [select id,MasterLabel,DeveloperName,UserName__c,UserId__c from FSE_Regional_Assistant__mdt where MasterLabel in :setStaff]; 
 | 
            if(usrList != null && usrList.size() > 0){ 
 | 
                for (Maintenance_Contract__c nmc : Trigger.new) { 
 | 
                    //如果是更新,那么判断主担当人是否有变化或FSE大区助理是否为空,如果满足其中一条,那么更新大区助理 
 | 
                    if(Trigger.isUpdate){ 
 | 
                       if(!(nmc.Service_Contract_Staff__c != Trigger.oldMap.get(nmc.Id).Service_Contract_Staff__c  
 | 
                        || String.isBlank(nmc.FSE_Regional_Assistant__c))) 
 | 
                       { 
 | 
                            continue; 
 | 
                       } 
 | 
                    } 
 | 
                    if(String.isNotBlank(nmc.Service_Contract_Staff__c)){ 
 | 
                        for(FSE_Regional_Assistant__mdt fram : usrList){ 
 | 
                            if(String.isNotBlank(fram.MasterLabel) && nmc.Service_Contract_Staff_Salesdepartment__c == fram.MasterLabel){ 
 | 
                                nmc.FSE_Regional_Assistant__c = fram.UserId__c; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        //add                    wangweipeng         2021/11/29              end 
 | 
    } 
 | 
} 
 |