You need to sign in to do that
Don't have an account?
Dharmesh Maheshwari
I want To Update the contact if the name is same as at the time of contact Insert and if not then insert the new one. Here is my Code but not working.
public class MergeContact { public static Boolean runOnce = true; public void onInsert(List<Contact> lstInsertContactTrigger) { InsertContact(lstInsertContactTrigger); } public void onUpdate(List<Contact> lstUpdateContactTrigger, Map<Id,Contact> oldMapTriggerContact) { UpdateContact(lstUpdateContactTrigger,oldMapTriggerContact); } private void InsertContact(List<Contact> lstContactInsert) { List<Contact> lstContactToInsert = new List<Contact>(); //Set<Id> setContId = new Set<Id>(); Map<Id,Contact> mapCont = new Map<Id,Contact>(); for(Contact objContact : lstContactInsert) { if(objContact.AccountId != null) { mapCont.put(objContact.AccountId, objContact); //setContId.add(objContact.Id); } } List<Contact> lstContactToCheck = [Select Id, Name, Email, Phone, AccountId, Birthdate, Description, Fax, FirstName, LastName, MailingAddress, MailingCity, MailingState, MailingCountry, MailingPostalCode From Contact Where AccountId in : mapCont.keySet()]; System.debug('List of Existing Contact'+lstContactToCheck); for(Contact objContact : lstContactInsert) { Contact objNewContact = new Contact(); objNewContact.Id = objContact.Id; objNewContact.Email = mapCont.get(objContact.AccountId).Email; objNewContact.LastName = mapCont.get(objContact.AccountId).LastName; objNewContact.FirstName = mapCont.get(objContact.AccountId).FirstName; objNewContact.Phone = mapCont.get(objContact.AccountId).Phone; String Name = objNewContact.FirstName+' '+objNewContact.LastName; if(objContact.Name == Name) { lstContactToCheck.add(objNewContact); } } if(lstContactToInsert.size()>0) { upsert lstContactToCheck; } } private void UpdateContact(List<Contact> lstContactUpdate, Map<Id,Contact> oldMapContact) { List<Contact> lstContactToUpdate = new List<Contact>(); for(Contact objCon : lstContactUpdate) { Contact objOldContact = new Contact(); if(oldMapContact.containsKey(objCon.Id)) { objOldContact.FirstName = oldMapContact.values().FirstName; objOldContact.LastName = oldMapContact.values().LastName; objOldContact.Email = oldMapContact.values().Email; objOldContact.Phone = oldMapContact.values().Phone; objOldContact.Birthdate = oldMapContact.values().Birthdate; objOldContact.Fax = oldMapContact.values().Fax; objOldContact.Description = oldMapContact.values().Description; objOldContact.AccountId = oldMapContact.values().AccountId; lstContactToUpdate.add(objOldContact); } } if(lstContactToUpdate.size()>0 && runOnce == false) update lstContactToUpdate; } }
Please use the code below:
I have written the trigger to update the phone field only but you can add more fields as per your requirements.
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too
Thanks and Regards,
Deepali Kulshrestha
www.kdeepali.com
Hi, I tried this one but It is Not working on Update... Don't know why?