You need to sign in to do that
Don't have an account?
John Neilan 18
Trigger not Updating Parent Account
Hello,
I have a custom object called Account_Addresses__c that has a master-detail relationship to the Account object. That object houses address information as each account may have multiple addresses, however, only one of those addresses can be marked "current". I have a field on the custom object called Current__c to capture which address is current.
I created a trigger (below) to mark and unmark the addresses whena user changes the Current__c field and I am trying (in the same trigger) to then update a checkbox field on the Account record (Left_CA__c) if the newly selected current address is not in California and the Left_CA__c field on the Account was not already checked off. However, this part of my trigger does not seem to be firing properly. From the logs, it looks like my Account map is initially null but then somehow gets populated. What am I doing wrong?
DEBUG|@@@### - parentAcct Map: {}
AcctAddrPrimCurr on Account_Addresses trigger event AfterUpdate|__sfdc_trigger/AcctAddrPrimCurr 0
DEBUG|@@@### - parentAcct Map: {0011h00000lC9vvAAC=Account:{Id=0011h00000lC9vvAAC, Left_NY__c=false}}
I have a custom object called Account_Addresses__c that has a master-detail relationship to the Account object. That object houses address information as each account may have multiple addresses, however, only one of those addresses can be marked "current". I have a field on the custom object called Current__c to capture which address is current.
I created a trigger (below) to mark and unmark the addresses whena user changes the Current__c field and I am trying (in the same trigger) to then update a checkbox field on the Account record (Left_CA__c) if the newly selected current address is not in California and the Left_CA__c field on the Account was not already checked off. However, this part of my trigger does not seem to be firing properly. From the logs, it looks like my Account map is initially null but then somehow gets populated. What am I doing wrong?
DEBUG|@@@### - parentAcct Map: {}
AcctAddrPrimCurr on Account_Addresses trigger event AfterUpdate|__sfdc_trigger/AcctAddrPrimCurr 0
DEBUG|@@@### - parentAcct Map: {0011h00000lC9vvAAC=Account:{Id=0011h00000lC9vvAAC, Left_NY__c=false}}
trigger AcctCurr on Account_Addresses__c(after update,after insert) { //Update Account Address for Current List<Account_Addresses__c> acctAddr2 = new List<Account_Addresses__c>(); // Sets holding Account IDs (unique) and Addresses IDs (unique) Set<Id> CurrAcctIds = new Set<Id>(); Set<Id> acctAddrIds2 = new Set<Id>(); for(Account_Addresses__c aa2 : trigger.new){ if(aa2.Current__c == TRUE){ CurrAcctIds.add(aa2.Account__c); acctAddrIds2.add(aa2.id); } } // get the records from Account Addresses that are under the Account but not meant to be Current acctAddr2 = [SELECT Id,Current__c FROM Account_Addresses__c WHERE Current__c = TRUE AND Account__c IN:CurrAcctIds AND Id NOT IN:acctAddrIds2]; for(Account_Addresses__c aa2:acctAddr2) aa2.Current__c = FALSE; update acctAddr2; //update related Account to check if new current address is not CA Map<ID, Account> parentAcct = new Map<ID, Account>(); parentAcct = new Map<Id, Account>([SELECT Id, Left_CA__c, Date_Left_CA__c FROM Account WHERE Id IN :CurrAcctIds AND Left_CA__c != TRUE]); system.debug('@@@### - parentAcct Map: '+parentAcct); if(parentAcct != null){ for(Account_Addresses__c ca: trigger.new){ Account myParentAcct = parentAcct.get(ca.Account__c); if(ca.Current__c == TRUE && ca.State__c != 'CA'){ myParentAcct.Left_CA__C = TRUE; myParentAcct.Date_Left_CA__C = system.TODAY(); } } } }
I don't see an update statement on the accounts where you are changing the values. You need to add a update DML to update the account values as you did for Account Addresses at line no. 25.
Let me know if you need more help on this.
Thanks,
Abhishek Bansal.
All Answers
I don't see an update statement on the accounts where you are changing the values. You need to add a update DML to update the account values as you did for Account Addresses at line no. 25.
Let me know if you need more help on this.
Thanks,
Abhishek Bansal.
Thanks so much, I completely missed that piece!