You need to sign in to do that
Don't have an account?
Zoren Domingo
Apex trigger, how to map the old record created in the custom object Campaign_Scorecard__c, to avoid creating duplicate record in opportunity?
Here's my current code.
trigger AdworksTriggerForCampaignScoreCard on OpportunityLineItem (after insert, after update, after delete) { List<Campaign_Scorecard__c> scorecardToInsert = new List<Campaign_Scorecard__c>(); public class applicationException extends Exception {} try{ if(trigger.isUpdate) { for (OpportunityLineItem oli: trigger.new){ OpportunityLineItem oldOli = Trigger.oldMap.get(oli.ID); if(oli.Reporting_Length__c != trigger.oldMap.get(oli.ID).Reporting_Length__c){ if(oli.Reporting_Length__c.contains('Closed Loop Analysis (Client Data) Acxiom 0 Days')) { Campaign_Scorecard__c cs = new Campaign_Scorecard__c(Opportunity__c=oli.opportunityId); cs.Vendor_Measurement__c = 'Closed Loop Analysis (Client Data) Acxiom'; cs.Days__c = '0'; scorecardToInsert.add(cs); } if(oli.Reporting_Length__c.contains('Closed Loop Analysis (Client Data) Acxiom 30 Days')) { Campaign_Scorecard__c cs = new Campaign_Scorecard__c(Opportunity__c=oli.opportunityId); cs.Vendor_Measurement__c = 'Closed Loop Analysis (Client Data) Acxiom'; cs.Days__c = '30'; scorecardToInsert.add(cs); } if(oli.Reporting_Length__c.contains('Closed Loop Analysis (Client Data) Acxiom 60 Days')) { Campaign_Scorecard__c cs = new Campaign_Scorecard__c(Opportunity__c=oli.opportunityId); cs.Vendor_Measurement__c = 'Closed Loop Analysis (Client Data) Acxiom'; cs.Days__c = '60'; scorecardToInsert.add(cs); } if(oli.Reporting_Length__c.contains('Closed Loop Analysis (Client Data) Acxiom 90 Days')) { Campaign_Scorecard__c cs = new Campaign_Scorecard__c(Opportunity__c=oli.opportunityId); cs.Vendor_Measurement__c = 'Closed Loop Analysis (Client Data) Acxiom'; cs.Days__c = '90'; scorecardToInsert.add(cs); } } } } insert scorecardToInsert; } catch(Exception e) { system.debug(e.getMessage()); throw new applicationException(e.getLineNumber() + '.Please Contact your System Administrator'); } }
Hi Raj, these are the objects.
Campaign_Scorecard__c - custom object that has Master-Detail relationship with opportunity.
OpportunityLineItem - Reporting_Length__c is a multi-select picklist.
My problem here is when I modified the current values of the multi-select, and save it. Once the record is updated, the trigger fires again, so it will created another set of campaign scorecards.
I need to check if the scorecard is already existing or not inside opportunity, and delete/add a record if the previous values swap/change in the multi-select picklist.