On case object we have a field Delivery Number(Text) whenever user enters that value if that number is duplicate. We need to show pop-up/error message (basically inform user) that it is already exists and should get saved in salesforce.
Validation rules,Triggers,Unique field checked are all prevent the record saving in salesforce.In this case i want to save it in salesforce.
So i have tried a trigger and apex class.
Trigger :
trigger trgr_Case_DuplicateCheck on Case(before Insert, before Update) {
new DuplicateCase().checkDuplicates(trigger.new);
}
Apex Class:
public class DuplicateCase{
private Apexpages.Standardcontroller controller;
public void checkDuplicates(List<Case> lstCase){
Map<String, Id> mapCase= new Map<String, Id>();
Set<String> setCase = new Set<String>();
for(Case ca: lstCase)
setCase .add(ca.Delivery__C);
for(Case c : lstCase)
setCase .add(c.CaseNumber);
for(
Case ca:
[
SELECT Id, Delivery__c FROM Case WHERE Delivery__C IN : setCase
]
)
mapCase.put(ca.Delivery__c, ca.Id);
for(
Case c:
[
SELECT Id, CaseNumber FROM Case WHERE Delivery__C IN : setCase
]
)
mapCase.put(c.CaseNumber, c.Id);
for(Case ca: lstCase)
if(
mapCase.containsKey(ca.Delivery__c) &&
mapCase.get(ca.Delivery__c) != ca.Id
)
ca.addError(
'The case '+ca.CaseNumber+' has already same Delivery number' ,
true
);
}
}