You need to sign in to do that
Don't have an account?
Lakshmi S
How to reduce(bulkify) this code using Map ?
Hi Team,
How to reduce (bulkify) code using Map?
Trigger
---------------
--------------------------------
Regards
Lakshmi
How to reduce (bulkify) code using Map?
Trigger
---------------
trigger FinancialsRollupSummary on Financials__c (after insert, after update, after delete, after undelete) { // If condition for After insert and undelete records. if(Trigger.isAfter && (Trigger.isInsert || Trigger.isUndelete)){ // Calling Handler class Insert method. FinancialsRollupSummaryHandlerCls.insertFinancials((List<Financials__c>)Trigger.New); } // If condition for After delete records. if(Trigger.isAfter && Trigger.isDelete){ // Calling Handler class Delete method. FinancialsRollupSummaryHandlerCls.deleteFinancials((List<Financials__c>)Trigger.Old); } // If condition for After Update records. if(Trigger.isAfter && Trigger.isUpdate){ // Calling Handler class Update method. FinancialsRollupSummaryHandlerCls.updateFinancials((List<Financials__c>)Trigger.old); } }Trigger Handler Class
--------------------------------
public class FinancialsRollupSummaryHandlerCls { Public static String recordYear = 'FY-2016'; Public static Decimal grsum ; Public static Decimal gesum ; Public static Decimal amsgrsum ; Public static Decimal amsgesum ; // Static method for insert Financial records public static void insertFinancials(List<Financials__c> newrecs){ List<Account> updateAccs = new List<Account>(); Set<Id> accIds = new Set<Id>(); for(Financials__c fin : newrecs){ if(fin.AccountName__c != null){ accIds.add(fin.AccountName__c); } } if(accIds.size() > 0){ for(Account acc : [Select id,name,RS_Global_EBITDA_Sum__c,RS_Global_Revenue_Sum__c,RS_AMS_Global_Revenue_Sum__c,RS_AMS_Global_EBITDA_B4_Sum__c, (Select id,Global_Revenue_Total__c,Global_EBITDA_B4_Total__c,AMS_Global_Rev__c,AMS_Global_EBITDA_B4__c,Year__c from Financial__r) from Account where Id In :accIds]){ for(AggregateResult ag : [Select sum(Global_Revenue_Total__c)rev,sum(Global_EBITDA_B4_Total__c)ebsum,sum(AMS_Global_Rev__c)amsrev,sum(AMS_Global_EBITDA_B4__c)amsgesum from Financials__c where AccountName__c =: acc.id and Year__c=: recordYear]){ grsum = (Decimal)ag.get('rev'); gesum = (Decimal)ag.get('ebsum'); amsgrsum = (Decimal)ag.get('amsrev'); amsgesum = (Decimal)ag.get('amsgesum'); } acc.RS_Global_Revenue_Sum__c = grsum; acc.RS_Global_EBITDA_Sum__c = gesum; acc.RS_AMS_Global_Revenue_Sum__c = amsgrsum; acc.RS_AMS_Global_EBITDA_B4_Sum__c = amsgesum; updateAccs.add(acc); } update updateAccs; } } // Static method for delete financial records public static void deleteFinancials(List<Financials__c> delrecs){ List<Account> updateAccs = new List<Account>(); Set<Id> accIds = new Set<Id>(); for(Financials__c fin : delrecs){ if(fin.AccountName__c != null){ accIds.add(fin.AccountName__c); } } if(accIds.size() > 0){ for(Account acc : [Select id,name,RS_Global_EBITDA_Sum__c,RS_Global_Revenue_Sum__c,RS_AMS_Global_Revenue_Sum__c,RS_AMS_Global_EBITDA_B4_Sum__c, (Select id,Global_Revenue_Total__c,Global_EBITDA_B4_Total__c,AMS_Global_Rev__c,AMS_Global_EBITDA_B4__c,Year__c from Financial__r) from Account where Id In :accIds]){ for(AggregateResult ag : [Select sum(Global_Revenue_Total__c)rev,sum(Global_EBITDA_B4_Total__c)ebsum,sum(AMS_Global_Rev__c)amsrev,sum(AMS_Global_EBITDA_B4__c)amsgesum from Financials__c where AccountName__c =: acc.id and Year__c=: recordYear]){ grsum = (Decimal)ag.get('rev'); gesum = (Decimal)ag.get('ebsum'); amsgrsum = (Decimal)ag.get('amsrev'); amsgesum = (Decimal)ag.get('amsgesum'); } acc.RS_Global_Revenue_Sum__c = grsum; acc.RS_Global_EBITDA_Sum__c = gesum; acc.RS_AMS_Global_Revenue_Sum__c = amsgrsum; acc.RS_AMS_Global_EBITDA_B4_Sum__c = amsgesum; updateAccs.add(acc); } update updateAccs; } } // Static method for update Financial records. public static void updateFinancials(List<Financials__c> updaterecs){ List<Account> updateAccs = new List<Account>(); Set<Id> accIds = new Set<Id>(); for(Financials__c fin : updaterecs){ if(fin.AccountName__c != null){ accIds.add(fin.AccountName__c); } } if(accIds.size() > 0){ for(Account acc : [Select id,name,RS_Global_EBITDA_Sum__c,RS_Global_Revenue_Sum__c,RS_AMS_Global_Revenue_Sum__c,RS_AMS_Global_EBITDA_B4_Sum__c, (Select id,Global_Revenue_Total__c,Global_EBITDA_B4_Total__c,AMS_Global_Rev__c,AMS_Global_EBITDA_B4__c,Year__c from Financial__r) from Account where Id In :accIds]){ for(AggregateResult ag : [Select sum(Global_Revenue_Total__c)rev,sum(Global_EBITDA_B4_Total__c)ebsum,sum(AMS_Global_Rev__c)amsrev,sum(AMS_Global_EBITDA_B4__c)amsgesum from Financials__c where AccountName__c =: acc.id and Year__c=: recordYear]){ grsum = (Decimal)ag.get('rev'); gesum = (Decimal)ag.get('ebsum'); amsgrsum = (Decimal)ag.get('amsrev'); amsgesum = (Decimal)ag.get('amsgesum'); } acc.RS_Global_Revenue_Sum__c = grsum; acc.RS_Global_EBITDA_Sum__c = gesum; acc.RS_AMS_Global_Revenue_Sum__c = amsgrsum; acc.RS_AMS_Global_EBITDA_B4_Sum__c = amsgesum; updateAccs.add(acc); } update updateAccs; } }Can anyone let me know how to do this using Map?
Regards
Lakshmi
I work on insertFinancials method same concept you can use in other methods
Regards
Ashif