function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Reppin505Reppin505 

Trigger to Update Related Account Record from Opportunity Object - Not Working

Desparately need some help. I cannot get this trigger to update the related acount record fromt the opportunity object.
 
trigger updateAccountsOnChange on Opportunity (before update) {

 
  Map<Id, Opportunity> oppWithNewEndDates = new Map<Id, Opportunity>();

for (Integer i = 0; i < Trigger.new.size(); i++) {
if ( (Trigger.old[i].Name != Trigger.new[i].Name)) {
oppWithNewEndDates.put(Trigger.old[i].id,Trigger.new[i]);
}

}

List<Account> updatedAccounts = new List<Account>();

for (Account c : [SELECT ID, Name FROM Account WHERE ID in ppWithNewEndDates.keySet()]) {
Opportunity parentOpportunity = oppWithNewEndDates.get(c.Id);
c.Description = parentOpportunity.Id;
//c.Salutation_Name__c = parentOpportunity.Name;
//c.Name = parentOpportunity.Name;

     updatedAccounts.add(c);
   }
  update updatedAccounts;
}
TehNrdTehNrd
Looks like you are trying to set the Description field on the Account but you never all it in the query:

Code:
for (Account c : [SELECT ID, Name FROM Account WHERE ID in ppWithNewEndDates.keySet()]) {
  Opportunity parentOpportunity = oppWithNewEndDates.get(c.Id);
  c.Description = parentOpportunity.Id;

TRY:
for (Account c : [SELECT ID, Name, Description FROM Account WHERE ID in ppWithNewEndDates.keySet()]) {
  Opportunity parentOpportunity = oppWithNewEndDates.get(c.Id);
  c.Description = parentOpportunity.Id;

 

Reppin505Reppin505

Here are two versions of the code that works to successfully complete this trigger, just in case anyone needs this type of reference.

Version 1:

trigger UpdateAccountMembershipEndDate on Opportunity (after insert, after update)
{
   Map<Id, Opportunity> oppWithNewEndDate = new Map<Id, Opportunity>();
   
   for (Integer i = 0; i < Trigger.new.size(); i++)
   {
      if (Trigger.old[i].Membership_End_Date__c != Trigger.new[i].Membership_End_Date__c
         && Trigger.new[i].RecordTypeId == '0124000000053clAAA'  // Membership only
         && Trigger.new[i].AccountId != Null)
      {
         oppWithNewEndDate.put(Trigger.old[i].id,Trigger.new[i]);     
         Account parentAccount = [SELECT Id, Membership_End_Date__c FROM Account WHERE Id = :Trigger.new[i].AccountId];
         if (! (parentAccount.Membership_End_Date__c >= Trigger.new[i].Membership_End_Date__c))
         {
            parentAccount.Membership_End_Date__c = Trigger.new[i].Membership_End_Date__c;
            update parentAccount;
         } // if later date
      }  // if membership
   }  // for every Opportunity added or updated
}  // trigger UpdateAccountMembershipEndDate
 
 
Version 2:
 
trigger UpdateAccountMembershipEndDate on Opportunity (after insert, after update)
{
   Integer i = 0;
   do
   {
      if (Trigger.new[i].RecordTypeId == '0124000000053clAAA'  // Membership only
            && Trigger.new[i].AccountId != Null  // Must have an Account
            && Trigger.new[i].Membership_End_Date__c != Null)  // Must have an End Date
      {
         if (Trigger.isUpdate)
         {
            if (Trigger.old[i].Membership_End_Date__c != Trigger.new[i].Membership_End_Date__c)
            {
               Account parentAccount = [SELECT Id, Membership_End_Date__c FROM Account WHERE Id = :Trigger.new[i].AccountId];
               if (! (parentAccount.Membership_End_Date__c >= Trigger.new[i].Membership_End_Date__c))
               {
                  parentAccount.Membership_End_Date__c = Trigger.new[i].Membership_End_Date__c;
                  update parentAccount;
               } // if later date
            }  // if date has changed
         }  // if update
         else
         {
            Account parentAccount = [SELECT Id, Membership_End_Date__c FROM Account WHERE Id = :Trigger.new[i].AccountId];
            if (! (parentAccount.Membership_End_Date__c >= Trigger.new[i].Membership_End_Date__c))
            {
               parentAccount.Membership_End_Date__c = Trigger.new[i].Membership_End_Date__c;
               update parentAccount;
            } // if later date
         }  // if insert
      }  // if filtered
      i = i + 1;

   } while (i < Trigger.new.size());
}  // trigger UpdateAccountMembershipEndDate
 
I only wish i could take the credit :smileysad: