Trigger Code @Sreekaanth reddy
trigger DefaultEntitlement on Case (before insert, before update) {
if(Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {
DefaultEntitlementHelper.updateCaseEntitlement(Trigger.new);
}
}
helper Code
public class DefaultEntitlementHelper {
public static void updateCaseEntitlement(List<Case> newCases) {
Set<Id> contactIds = new Set<Id>();
Set<Id> acctIds = new Set<Id>();
for (Case c : newCases) {
contactIds.add(c.ContactId);
acctIds.add(c.AccountId);
}
List<EntitlementContact> entlContacts = [
SELECT e.EntitlementId, e.ContactId, e.Entitlement.AssetId
FROM EntitlementContact e
WHERE e.ContactId IN :contactIds
AND e.Entitlement.EndDate >= TODAY
AND e.Entitlement.StartDate <= TODAY
];
if (!entlContacts.isEmpty()) {
for (Case c : newCases) {
if (c.EntitlementId == null && c.ContactId != null) {
for (EntitlementContact ec : entlContacts) {
if (ec.ContactId == c.ContactId) {
c.EntitlementId = ec.EntitlementId;
if (c.AssetId == null && ec.Entitlement.AssetId != null) {
c.AssetId = ec.Entitlement.AssetId;
}
break;
}
}
}
}
} else {
List<Entitlement> entls = [
SELECT e.StartDate, e.Id, e.EndDate, e.AccountId, e.AssetId
FROM Entitlement e
WHERE e.AccountId IN :acctIds
AND e.EndDate >= TODAY
AND e.StartDate <= TODAY
];
if (!entls.isEmpty()) {
for (Case c : newCases) {
if (c.EntitlementId == null && c.AccountId != null) {
for (Entitlement e : entls) {
if (e.AccountId == c.AccountId) {
c.EntitlementId = e.Id;
if (c.AssetId == null && e.AssetId != null) {
c.AssetId = e.AssetId;
}
break;
}
}
}
}
}
}
}
}
1 件の回答