function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Sales DevelopmentSales Development 

Apex Trigger for a specific rollup summary with criteria

Hi everyone, I would like to add criteria to my rollup summary whose apex you can see just below. I would like to have a criteria which would be : 
- Stage = "Renewed" (one custom stage we created)
AND
- End Date = RollupDate (which is a custom field)

Here is the code :

Trigger OpportunityTrigger on Opportunity (after insert, after update, after delete, after undelete) {
     List<Opportunity>  opportunities =  new  List<Opportunity>();
                   if(Trigger.isAfter){
                       if(Trigger.isInsert || Trigger.isUndelete){
                          opportunities = Trigger.new;
                       }else if(Trigger.isUpdate){                   
 for(Opportunity Opportunity : Trigger.new){
    if(Opportunity.Amount != Trigger.oldMap.get(Opportunity.id).Amount){
        opportunities.add(Opportunity);
    }
                              }
                       } else if(Trigger.isDelete){
                            opportunities  = trigger.old;
                       }
                   }
        list<RollUpSummaryUtility.fieldDefinition> fieldDefinitions1 = 

            new list<RollUpSummaryUtility.fieldDefinition> {

                new RollUpSummaryUtility.fieldDefinition('SUM', 'Amount', 

                'PreviousOpp_MRR__c')

            };

        RollUpSummaryUtility.ObjectDefination objDef = 
          new RollUpSummaryUtility.ObjectDefination('Opportunity','AccountId','Account','',null);

        new RollUpSummaryUtility().rollUp(fieldDefinitions1, objDef , opportunities); 
}

Thank you all !
Shamsi 110Shamsi 110
Trigger OpportunityTrigger on Opportunity (after insert, after update, after delete, after undelete) {
    
     List<Opportunity>  opportunities =  new  List<Opportunity>();
                   if(Trigger.isAfter){
                       if(Trigger.isInsert || Trigger.isUndelete){
                          opportunities = Trigger.new;
                       }else if(Trigger.isUpdate){                   
 for(Opportunity Opportunity : Trigger.new){
    if(Opportunity.Amount != Trigger.oldMap.get(Opportunity.id).Amount && opportunity.stagename='renenwed' && opportunity.enddate=Rollupdate){
        opportunities.add(Opportunity);
    }
                              }
                       } else if(Trigger.isDelete){
                            opportunities  = trigger.old;
                       }
                   }
        list<RollUpSummaryUtility.fieldDefinition> fieldDefinitions1 = 

            new list<RollUpSummaryUtility.fieldDefinition> {

                new RollUpSummaryUtility.fieldDefinition('SUM', 'Amount', 

                'PreviousOpp_MRR__c')

            };

        RollUpSummaryUtility.ObjectDefination objDef = 
          new RollUpSummaryUtility.ObjectDefination('Opportunity','AccountId','Account','',null);

        new RollUpSummaryUtility().rollUp(fieldDefinitions1, objDef , opportunities); 
}

Please mark it as solved if this solves your problem