You need to sign in to do that
Don't have an account?
Trigger to update a field on all child objects when a parent object field is updated
I have a junction object created between Accounts and Contacts called Affiliations. Any time a user updates a particular field on an Account record(ACO CMS Pending checkbox = false), I need to update a field on all of the related Affiliation records (ACO Participation = Yes). Could anyone point me in the right direction to getting this working? I tried a cross-object workflow rule, but it didn't appear to be working because I need to update the child records and not the parent record, so I am assuming I need to write a trigger. Unfortunately, this is my first so I could use assistance. Thanks!
Try this,
Error: Compile Error: Method does not exist or incorrect signature: mapAccount(Id, SOBJECT:Account) at line 21 column 17
Just to clarify, it is always fixed, when ACO_CMS_Pending__c == false then ACO_Participating__c = 'Yes' ; however the ACO_Participating__c field is on the Affiliation junction object not on the Contact. I am so very appreciative of your assistance, as I am very new to this and a bit lost. Lisa
//--Trigger--
trigger trgUpdateChild on Account (after update) {
Set setAccountIds = new Set();
//Create a list of new updated accounts.
for(Account newAcc:Trigger.New){
if(newAcc.ACO_CMS_Pending__c == false && Trigger.oldMap.get(newAcc.Id).ACO_CMS_Pending__c != newAcc.ACO_CMS_Pending__c){
setAccountIds.add(newAcc.Id);
}
}
//Fetch reference records from Affiliation
List lstAffiliation = new List();
Set setContactIds = new Set();
Map mapAccount = new Map();
if(setAccountIds.size()>0){
//I have considered that api name of lookup fields for account and contact is Facility__c and Provider__C
lstAffiliation = [Select id, Facility__c, Provider__c from Affiliation__c Where Facility__c in:setAccountIds];
if(lstAffiliation.size()>0){
for(Affiliation__c aff:lstAffiliation){
setContactIds.add(aff.Provider__c);
mapAccount(aff.Provider__c, Trigger.newMap.get(aff.Facility__c));
}
}
}
//Fetch contacts
List lstContact = new List();
if(setContactIds.size()>0){
lstContact = [Select id, ACO_Participating__c From Affiliation__c Where id in:setContactIds];
}
//List of contacts which needs to be updated
List lstUpdateContact = new List();
for(Contact con:lstContact){
if(mapAccount.size()>0 && mapAccount.containsKey(con.Id)){
Account acc = mapAccount.get(con.Id);
//Hear you have account object and contact object, you can do your logic here
//based on account values etc..
//for example see below.
con.ACO_Participating__c = 'Yes';
lstUpdateContact.add(con);
//If logic is fixed (when account.ACO_CMS_Pending__c == false then contact.ACO_Participating__c = 'Yes') then you don need
//to create Map
}
}
if(lstUpdateContact.size()>0) update lstUpdateContact;
}
Lisa Sturycz
IT Business Analyst, EHR Ambulatory Team
Dignity Health
3033 North 3rd Avenue | Phoenix, AZ 85013
715-304-9394 (Cell) | 602-217-1725 (Office)
Lisa.Sturycz@DignityHealth.org
[cid:image001.png@01CE9FEC.382D8A90]
Caution: This email message, including all content and attachments, is both proprietary and CONFIDENTIAL. The information contained in this email message is intended only for the use of the recipient(s) named above. If the reader of this message is not the intended recipient or an agent responsible for delivering it to the intended recipient, you have received this document in error. Any further review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify us immediately by reply email and delete it. Thank you.
Were you ever able to get this trigger working properly? If so, can you share how you accomplished this? Thank you!