You need to sign in to do that
Don't have an account?

Trigger Modification
Hi,
I have a piece of trigger which prevents duplicates on Contacts. I am looking forward to display the existing Contact for which the duplicate was attempted and thus the erro was thrown.
is it possible in this Trigger:
trigger Duplicate1 on Contact (before insert, before update) {
set<Id> accIds = new set<Id>();
for(Contact p :trigger.new){
accIds.add(p.accountId);
}
map<Id,account> parentAccmap = new map<Id,account>([select Id,parentId,recordtypeId from account where Id IN :accIds and parentId!=NULL and recordtypeId='012600000005J5J']); //add Site record type Id here.
set<ID> parentIds = new set<ID>();
for(Account acc : parentAccmap.values()){
parentIds.add(acc.parentId);
}
map<Id,Set<String>> parentPrMap = new map<Id,Set<String>>();
list<Contact> prParentlist = [select ID,Email,Name,AccountId, Account.recordtypeId,Phone,FirstName, lastName from Contact where AccountId IN:parentIDs and Account.recordtypeId='012600000005J5I']; //add Customer record type Id here.
for(Contact pr:prParentlist){
if(parentPrMap.get(pr.AccountId) == null){
parentPrMap.put(pr.AccountId, new Set<String>());
}
parentPrMap.get(pr.AccountId).add(pr.email);
parentPrMap.get(pr.AccountId).add(pr.phone);
parentPrMap.get(pr.AccountId).add(pr.firstname);
parentPrMap.get(pr.AccountId).add(pr.lastname);
}
list<Contact> prParentlist2 = [select ID,Email,Name,account.parentid, Account.recordtypeId,Phone,FirstName, lastName from Contact where account.parentid in :parentIDs and Account.recordtypeId='012600000005J5J']; //add Customer record type Id here.
for(Contact pr:prParentlist2){
if(parentPrMap.get(pr.account.parentid) == null){
parentPrMap.put(pr.account.parentid, new Set<String>());
}
parentPrMap.get(pr.account.parentid).add(pr.email);
}
system.debug(parentPrMap);
for(Contact prr:trigger.new){
if(
prr.email!=null
&& parentAccmap.containsKey(prr.Accountid)
&& parentPrMap.containsKey(parentAccmap.get(prr.Accountid).ParentId)
){
if((parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.email))&&(parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.phone))&&(parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.lastname))){
String baseUrl = URL.getSalesforceBaseUrl().toExternalForm()+'/02Z/e?parentId=';
string errorMsg = '<a style=\'color:1B2BE8\'href="'+baseUrl+ prr.accountid +'"> Please Create a Contact Role </a>';
prr.addError('This Contact already exists.'+ errorMsg,false);
}
}
}
}
I have a piece of trigger which prevents duplicates on Contacts. I am looking forward to display the existing Contact for which the duplicate was attempted and thus the erro was thrown.
is it possible in this Trigger:
trigger Duplicate1 on Contact (before insert, before update) {
set<Id> accIds = new set<Id>();
for(Contact p :trigger.new){
accIds.add(p.accountId);
}
map<Id,account> parentAccmap = new map<Id,account>([select Id,parentId,recordtypeId from account where Id IN :accIds and parentId!=NULL and recordtypeId='012600000005J5J']); //add Site record type Id here.
set<ID> parentIds = new set<ID>();
for(Account acc : parentAccmap.values()){
parentIds.add(acc.parentId);
}
map<Id,Set<String>> parentPrMap = new map<Id,Set<String>>();
list<Contact> prParentlist = [select ID,Email,Name,AccountId, Account.recordtypeId,Phone,FirstName, lastName from Contact where AccountId IN:parentIDs and Account.recordtypeId='012600000005J5I']; //add Customer record type Id here.
for(Contact pr:prParentlist){
if(parentPrMap.get(pr.AccountId) == null){
parentPrMap.put(pr.AccountId, new Set<String>());
}
parentPrMap.get(pr.AccountId).add(pr.email);
parentPrMap.get(pr.AccountId).add(pr.phone);
parentPrMap.get(pr.AccountId).add(pr.firstname);
parentPrMap.get(pr.AccountId).add(pr.lastname);
}
list<Contact> prParentlist2 = [select ID,Email,Name,account.parentid, Account.recordtypeId,Phone,FirstName, lastName from Contact where account.parentid in :parentIDs and Account.recordtypeId='012600000005J5J']; //add Customer record type Id here.
for(Contact pr:prParentlist2){
if(parentPrMap.get(pr.account.parentid) == null){
parentPrMap.put(pr.account.parentid, new Set<String>());
}
parentPrMap.get(pr.account.parentid).add(pr.email);
}
system.debug(parentPrMap);
for(Contact prr:trigger.new){
if(
prr.email!=null
&& parentAccmap.containsKey(prr.Accountid)
&& parentPrMap.containsKey(parentAccmap.get(prr.Accountid).ParentId)
){
if((parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.email))&&(parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.phone))&&(parentPrMap.get(parentAccmap.get(prr.Accountid).ParentId).contains(prr.lastname))){
String baseUrl = URL.getSalesforceBaseUrl().toExternalForm()+'/02Z/e?parentId=';
string errorMsg = '<a style=\'color:1B2BE8\'href="'+baseUrl+ prr.accountid +'"> Please Create a Contact Role </a>';
prr.addError('This Contact already exists.'+ errorMsg,false);
}
}
}
}
trigger FindDupes on Lead (before insert, before update)
{
for (Lead myLead : Trigger.new)
{
if (myLead.Email != null)
{
List<Contact> dupes = [SELECT Id FROM Contact WHERE Email = :myLead.Email];
if (dupes.size() > 0)
{
String errorMessage = 'Duplicate contact found! '; errorMessage += 'Record ID is ' + dupes[0].Id;
myLead.addError(errorMessage);
}
}
}
}