/** * 测试类:PaymentMaintenanceContractTriggerHTest */ public with sharing class PaymentMaintenanceContractTriggerHandler extends Oly_TriggerHandler { private Map newMap; private Map oldMap; private List newList; private List oldList; public PaymentMaintenanceContractTriggerHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void afterUpdate() { //add wangweipeng 2021/11/12 start //统计维修合同的所有认款金额 countAllAmount(); //add wangweipeng 2021/11/12 end } protected override void afterInsert() { //add wangweipeng 2021/11/12 start //统计维修合同的所有认款金额 countAllAmount(); //add wangweipeng 2021/11/12 end } //add wangweipeng 2021/11/12 start //统计维修合同的所有认款金额 private void countAllAmount() { if(newList != null && newList.size() > 0){ List maintenanceContractId = new List(); for(Payment_Maintenance_Contract__c pmcc : newList){ if(Trigger.isUpdate){ //如果认款金额或认款删除标识有修改,那么重新汇总认款 if(pmcc.Amount__c != oldMap.get(pmcc.id).Amount__c || pmcc.DeleteFlag__c != oldMap.get(pmcc.id).DeleteFlag__c){ maintenanceContractId.add(pmcc.Find_Contact__c); } } if(Trigger.isInsert){ //判断 认款金额是否为空或不等于0 if(pmcc.Amount__c != null && pmcc.Amount__c != 0){ maintenanceContractId.add(pmcc.Find_Contact__c); } } } if(maintenanceContractId.size() > 0){ //查找对应的维修合同 List mccData = [select id,Contract_Amount__c,Is_Recognition_Model_True__c from Maintenance_Contract__c where id in :maintenanceContractId]; if(mccData != null && mccData.size() > 0){ List mccList = new List(); for(Maintenance_Contract__c mcc : mccData){ mccList.add(mcc.id); } //查找维修合同的所有认款信息 List allPMCc = [select id,name,Amount__c,DeleteFlag__c from Payment_Maintenance_Contract__c where Amount__c != 0.0 and Amount__c != null and Find_Contact__c in :mccList]; for(Maintenance_Contract__c mcc : mccData){ Decimal countAmount = 0.0; for(Payment_Maintenance_Contract__c pmcc : allPMCc){ if(pmcc.Amount__c != 0 || pmcc.Amount__c != null){//判断认款金额不为0 //如果删除标识为X,那么把认款金额转为负数,然后相加 if(pmcc.DeleteFlag__c == 'X' ){ countAmount += (pmcc.Amount__c - pmcc.Amount__c * 2); }else{ countAmount += pmcc.Amount__c; } } } mcc.All_Amount__c = countAmount; } update mccData; } } } } //add wangweipeng 2021/11/12 end }