如果地址在帐户中更改,则应在所有相关联系人的地址中复制

时间:2017-09-22 07:47:59

标签: salesforce

如何使用 salesforce 中的触发器和批量化来执行此操作。

1 个答案:

答案 0 :(得分:0)

有很多方法可以执行此操作,此处有一种方法可以通过帐户触发器调用:

public static void afterUpdate(List<Account> newList, List<Account> oldList){
  Set<Id> accountIds = new Set<Id>();
  for ( Integer i=0;i<newList.size();i++ ){
    if ( newList[i].BillingStreet != oldList[i].BillingStreet ){
      accountIds.add(newList[i].Id);
    }
  }
  List<Contact> contactsToUpdate = new List<Contact>();
  for ( Contact c : [
    SELECT Id, MailingStreet, Account.BillingStreet
    FROM Contact
    WHERE AccountId IN :accountIds
  ]){
    if ( c.MailingStreet != c.Account.BillingStreet ){
      c.MailingStreet = c.Account.BillingStreet;
      contactsToUpdate.add(c);
    }
  }
  if ( contactsToUpdate.size() > 0 ){
    update contactsToUpdate;
  }
}