WAT if the owner of an account is changed then the owner of the related contacts should also be updated.

 Account Trigger

============================================

trigger AccountTrigger on Account (after update) {

  Set<ID> accountId = new Set<ID>();

  if(Trigger.IsAfter && Trigger.IsUpdate){

    for(Account objAcc : trigger.new){

      if(trigger.oldMap.containsKey(objAcc.id)){

        if(trigger.oldMap.get(objAcc.id).OwnerId != objAcc.OwnerId){

          accountId.add(objAcc.Id);

        }

      }

    }

    if(accountId != null && accountId.size() > 0 ){

      AccountTriggerHandler.UpdateOwnerofContact(Trigger.newMap, accountId);

    }

  }

}


============================================

AccountTriggerHandler Class


public with sharing class AccountTriggerHandler {

  public static void UpdateOwnerofContact(Map<Id,Account>accountMap,Set<id>accountId){

    List<Contact> lstUpdateOwnerofContact = new List<Contact>();

    Map<id,Contact> mapofIdToContact = new Map<id,Contact>([SELECT Id,Name,AccountId From contact WHERE AccountId =:accountId]);

    if(mapofIdToContact != null && mapofIdToContact.size()>0){

      for(Contact objCon : mapofIdToContact.values()){

        if(accountMap.containsKey(objCon.AccountId)){

          objCon.OwnerId = accountMap.get(objCon.AccountId).OwnerId;

          lstUpdateOwnerofContact.add(objCon);

        }

      }  

    }

// Check null and size 

    if(lstUpdateOwnerofContact != null && lstUpdateOwnerofContact.size()>0){

      Database.SaveResult [] sr = Database.update(lstUpdateOwnerofContact,false);

    }

  }

}

Comments

Popular Post

Use Of Standard Set Of Controller

How to remove and Delete row from PageBlock table on VF page

Show Pagination and Colum Sorting on VF page using Jquery Plugin