I use a framework of a trigger factory to set up all my triggers and handlers of those triggers. Earlier I got some great advice on how to separate my concerns better for the handler.
I use this block for afterUpdate:
public override void afterUpdate(Map<Id, SObject> oldMapGeneric, Map<Id, SObject> newMapGeneric){
Map<Id, Revenue_Pipeline__c> oldMap = (Map<Id, Revenue_Pipeline__c>) oldMapGeneric;
Map<Id, Revenue_Pipeline__c> newMap = (Map<Id, Revenue_Pipeline__c>) newMapGeneric;
/*AFTER UPDATE METHODS START*/
if(!isRecursive)
{
isRecursive = true;
List<Revenue_Pipeline__c> filtered = Revenue_PipelineTriggerHandler.needsNewSchedule(newMap, oldMap);
deleteSchedule(filtered);
createRevSchedule(filtered);
}
/*AFTER UPDATE METHODS END*/
}
This then references my query method:
public void needsNewSchedule(Map<Id, Revenue_Pipeline__c> newMap, Map<Id, Revenue_Pipeline__c> oldMap)
{
List<Revenue_Pipeline__c> revPipeline = new List<Revenue_Pipeline__c>();
// Check if the fields changed
for(Revenue_Pipeline__c revPipe : newMap.values())
{
if(
revPipe.Product_Start_Date__c != oldMap.get(revPipe.Id).Product_Start_Date__c ||
revPipe.Product_End_Date__c != oldMap.get(revPipe.Id).Product_End_Date__c ||
revPipe.Product_Price__c != oldMap.get(revPipe.Id).Product_Price__c ||
revPipe.Weighted_Product_Price__c != oldMap.get(revPipe.Id).Weighted_Product_Price__c)
{
revPipeline.add(revPipe.Id);
}
}
}
My problem is I get an error on the line:
List<Revenue_Pipeline__c> filtered = SL_Revenue_PipelineTriggerHandler.needsNewSchedule(newMap, oldMap);
With
Method does not exist or incorrect signature: Revenue_PipelineTriggerHandler.needsNewSchedule(Map, Map)
I'm accepting the newmap and oldMap in the method why does it not compile?