public with sharing class MCAEHandler extends Oly_TriggerHandler{ private Map newMap; private Map oldMap; private List newList; private List oldList; public MCAEHandler () { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void afterUpdate() { updateMainContract(); } public void updateMainContract(){ System.debug(LoggingLevel.INFO, '*** in update: '); Map> mcaMap = new Map>(); for (Maintenance_Contract_Asset_Estimate__c mca: newList) { if(mca.Repair_Price__c!=0){ List mcaList = new List(); mcaList.add(mca); if(mcaMap.containsKey(mca.Maintenance_Contract_Estimate__c)){ List mlist = mcaMap.get(mca.Maintenance_Contract_Estimate__c); mlist.add(mca); mcaMap.put(mca.Maintenance_Contract_Estimate__c,mlist); }else{ mcaMap.put(mca.Maintenance_Contract_Estimate__c,mcaList); } } } List upMContractList = new List(); for (Maintenance_Contract_Estimate__c mc : [SELECT Id, Maintenance_Contract__c FROM Maintenance_Contract_Estimate__c WHERE Id IN:mcaMap.keySet()]) { Boolean hasThirdPartyReturnc = false; for (Maintenance_Contract_Asset_Estimate__c mca: mcaMap.get(mc.Id)) { if(mca.Third_Party_Return__c == true){ hasThirdPartyReturnc = true; } System.debug(LoggingLevel.INFO, '*** boolean: ' + hasThirdPartyReturnc); } if(mc.Maintenance_Contract__c != null){ Maintenance_Contract__c mContract = new Maintenance_Contract__c(); mContract.Id = mc.Maintenance_Contract__c; if(hasThirdPartyReturnc == true){ mContract.Third_Party_Return_Contract__c = true; } System.debug(LoggingLevel.INFO, '*** upMContractList: ' + upMContractList); upMContractList.add(mContract); } } System.debug(LoggingLevel.INFO, '*** upMContractList: ' + upMContractList); update upMContractList; } protected override void beforeUpdate() { } }