I have written a trigger for following scenario.
Positon
is a object. There are two fields Parent_position
and Head_count
Position object. Parent_position is self lookup field to position object.
Head_count
is the number of positions those selected this position as parent.
Whenever Parent_position is updated, Head_count
on new parent should be incremented by 1 and old parent should be decremented by 1.
The following is code. Head_count
is decrementing on old parent but its not incrementing on new parent(In debug logs its showing correct value but not in front end).
Can anyone please tell me where its going wrong.
if(Trigger.isUpdate ){
Set<Id> parentIdSet2 = new Set<Id>();
for(Position__c record : trigger.new)
{
parentIdSet2.add(record.Parent_Position__c);
}
Map<Id,Position__c> allParentRecords2 = new Map<Id,Position__c>([Select Head_Count__c from Position__c where id in :parentIdSet2]);
Set<Id> parentIdSet3 = new Set<Id>();
for(Position__c oldrecord : trigger.old)
{
parentIdSet3.add(oldrecord.Parent_Position__c);
}
Map<Id,Position__c> allParentRecords3 = new Map<Id,Position__c>([Select Head_Count__c from Position__c where id in :parentIdSet3]);
for(Position__c record : trigger.new)
{
Position__c oldrecord = Trigger.oldMap.get(record.Id);
if(record.Parent_Position__c!=oldrecord.Parent_Position__c)
system.debug('old parent=='+oldrecord.Parent_Position__c );
{
if(allParentRecords2.size() > 0 && allParentRecords2.containsKey(record.Parent_Position__c))
{
system.debug('New parent=='+allParentRecords2.get(record.Parent_Position__c ));
allParentRecords2.get(record.Parent_Position__c).Head_Count__c = allParentRecords2.get(record.Parent_Position__c).Head_Count__c + 1;
system.debug('New parent=='+allParentRecords2.get(record.Parent_Position__c ));
}
if(allParentRecords3.size() > 0 && allParentRecords3.containsKey(oldrecord.Parent_Position__c))
{
system.debug('old parent=='+allParentRecords3.get(oldrecord.Parent_Position__c ));
allParentRecords3.get(oldrecord.Parent_Position__c).Head_Count__c = allParentRecords3.get(oldrecord.Parent_Position__c).Head_Count__c - 1;
system.debug('old parent=='+allParentRecords3.get(oldrecord.Parent_Position__c ));
}
}
}
update allParentRecords2.values();
update allParentRecords3.values();
}