trigger CaseMaster on Case (after delete, after insert, after undelete) {
set<string> TUWIDs = new set<string>();
if(trigger.isInsert){
for(Case TUW : Trigger.new){
TUWIDs.add(TUW.Trucks_Under_Warranty__c);
}
}else if(trigger.isDelete){
for(Case TUW : Trigger.old){
TUWIDs.add(TUW.Trucks_Under_Warranty__c);
}
}else if(trigger.isUnDelete){
for(Case TUW : Trigger.new){
TUWIDs.add(TUW.Trucks_Under_Warranty__c);
}
}
if(TUWIDs.size() > 0){
CaseHelper ch = new CaseHelper();
ch.updateCaseCount(TUWIDs);
}
}
@isTest
public with sharing class CaseHelper {
public void updateCaseCount(set<string> CaseIDs){
if(CaseIDs == null){
return;
}
if(CaseIDs.size() == 0){
return;
}
list<Case> CaseList = new list<Case>();
CaseList = [Select ID From Case Where Trucks_Under_Warranty__c = :CaseIDs];
integer totalCount;
map<string, integer> CaseIDToCaseCountMap = new map<string, integer>();
for(Case TUW : CaseList){
if(CaseIDToCaseCountMap.containsKey(TUW.Trucks_Under_Warranty__c)){ totalCount = CaseIDToCaseCountMap.get(TUW.Trucks_Under_Warranty__c);
}else{
totalCount = 0;
}
totalCount += 1;
CaseIDToCaseCountMap.put(TUW.Trucks_Under_Warranty__c, totalCount);
}
list<Case> CaseUpdateList = new list<Trucks_Under_Warranty__c>();
Case CaseTemp;
for(string CaseID : CaseIDToCaseCountMap.keySet()){
CaseTemp = new Case ();
CaseTemp.ID = CaseID;
CaseTemp.Case_Count__c = quoteLineItemIDToAdditionalCostMap.get(CaseID);
CaseUpdateList.add(CaseTemp);
}
if(CaseUpdateList.size() > 0){ update CaseUpdateList;
}
}
}
Can you share few screenshots of these two object's field details.. just to check how it is structured..