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
Cornelia Winn 3Cornelia Winn 3 

Convert APEC Trigger to Class

Hello,

I'd like to convert this trigger to an APEX class so I can call it via the process builder. Any suggestions?


trigger SFDCALC on Service_to_Claim__c (before insert, before update) {
    
    for(Service_to_Claim__c sc : Trigger.new) {
        
        List<Service_to_Claim__c> service_to_claim = [SELECT 
                                                      CPL_Amount__c, 
                                                      CPL_Letter_Receipt_Date__c, 
                                                      Date_CPL_Issued__c, 
                                                      CPN_Amount__c, 
                                                      CPN_Letter_Receipt_Date__c, 
                                                      Date_CPN_Issued__c, 
                                                      Final_Demand_Amount__c, 
                                                      Final_Demand_Received__c,
                                                      Date_Final_Demand_Issued__c,
                                                      Final_Demand_Dispute_Amt__c,
                                                      Final_Demand_Dispute_Received__c,
                                                      Final_Demand_Dispute_Issued__c,
                                                      Refreshed_CP_Amount__c,
                                                      Refreshed_CP_Date__c,
                                                      CPL_CPN_Dispute_Adjusted_Amount__c,
                                                      CPL_CPN_Dispute_Response_Date__c,
                                                      CPL_CPN_Dispute_Issued__c,                                                        
                                                      CPL_Rec_d_w_Claim_Amt__c,
                                                      CPL_Rec_d_w_Claim_Date__c
                                                      FROM Service_to_Claim__c 
                                                      WHERE Claim__c=:sc.Claim__c
                                                      AND id != :sc.Id];        

                                                      
        List<Decimal> amount = new List<Decimal>();
        List<Date> dt = new List<Date>();
        /****Start of adding old records of servcie to claim******/
        for(Service_to_Claim__c stc : service_to_claim){
            amount.add(stc.Final_Demand_Amount__c);

                dt.add(stc.Date_Final_Demand_Issued__c);
            
            
            amount.add(stc.Final_Demand_Dispute_Amt__c);
                dt.add(stc.Final_Demand_Dispute_Issued__c);
            

        }
        /****End of adding old records of servcie to claim******/
        /********Strat adding the current service to claim record value*******/
        
        amount.add(sc.Final_Demand_Amount__c);
             dt.add(sc.Date_Final_Demand_Issued__c);
        
        
        amount.add(sc.Final_Demand_Dispute_Amt__c);
            dt.add(sc.Final_Demand_Dispute_Issued__c);
        
        

        /********End of adding the current record of service to claim**********/
        
        integer index;
        Decimal FinalDemandAmount_AcuityCIC  = amount.get(0);
        Date FDA_Acuity_CIC_Date = dt.get(0);
        system.debug('::index::'+index);
        system.debug('::FinalDemandAmount_AcuityCIC::'+FinalDemandAmount_AcuityCIC);
        system.debug('::FDA_Acuity_CIC_Date::'+FDA_Acuity_CIC_Date);
        for(index = 0; index<amount.size(); index++){
            /****check if there is null value in FDA_Acuity_CIC_Date ***/
            if(dt[index]!=null && FDA_Acuity_CIC_Date == null){
                FDA_Acuity_CIC_Date = dt[index];
                FinalDemandAmount_AcuityCIC = amount[index];
            }
            
            /****compare the recent capture date calculation****/
            if(dt[index] >= FDA_Acuity_CIC_Date){
                if(dt[index] > FDA_Acuity_CIC_Date){
                    FinalDemandAmount_AcuityCIC = amount[index];
                } else {
                    if(amount[index] != null){
                        if(FinalDemandAmount_AcuityCIC == null || FinalDemandAmount_AcuityCIC > amount[index]){
                            FinalDemandAmount_AcuityCIC = amount[index];   
                        }  
                    }
                    
                } 
                FDA_Acuity_CIC_Date = dt[index]; 
            } 
            
            system.debug('::index::'+index);
            system.debug('::FinalDemandAmount_AcuityCIC::'+FinalDemandAmount_AcuityCIC);
            system.debug('::FDA_Acuity_CIC_Date::'+FDA_Acuity_CIC_Date);
        }
        
        update new Claim__c(
            id = sc.Claim__c,
            FDA_Acuity_CIC_Date__c = FDA_Acuity_CIC_Date,
            FinalDemandAmount_AcuityCIC__c = FinalDemandAmount_AcuityCIC
        );
        
        
    }
}
Danish HodaDanish Hoda
Hi Cornelia,

Please refer below code :
trigger SFDCALC on Service_to_Claim__c (before insert, before update) {
    
SFDCALCTriggerHandler.updateInserthandler(trigger.New);
    
}

Apex class : SFDCALCTriggerHandler

public class SFDCALCTriggerHandler{
   
   public static void updateInserthandler(List<Service_to_Claim__c > triggerNew){
for(Service_to_Claim__c sc : triggerNew) {
        
        List<Service_to_Claim__c> service_to_claim = [SELECT 
                                                      CPL_Amount__c, 
                                                      CPL_Letter_Receipt_Date__c, 
                                                      Date_CPL_Issued__c, 
                                                      CPN_Amount__c, 
                                                      CPN_Letter_Receipt_Date__c, 
                                                      Date_CPN_Issued__c, 
                                                      Final_Demand_Amount__c, 
                                                      Final_Demand_Received__c,
                                                      Date_Final_Demand_Issued__c,
                                                      Final_Demand_Dispute_Amt__c,
                                                      Final_Demand_Dispute_Received__c,
                                                      Final_Demand_Dispute_Issued__c,
                                                      Refreshed_CP_Amount__c,
                                                      Refreshed_CP_Date__c,
                                                      CPL_CPN_Dispute_Adjusted_Amount__c,
                                                      CPL_CPN_Dispute_Response_Date__c,
                                                      CPL_CPN_Dispute_Issued__c,                                                        
                                                      CPL_Rec_d_w_Claim_Amt__c,
                                                      CPL_Rec_d_w_Claim_Date__c
                                                      FROM Service_to_Claim__c 
                                                      WHERE Claim__c=:sc.Claim__c
                                                      AND id != :sc.Id];        

                                                      
        List<Decimal> amount = new List<Decimal>();
        List<Date> dt = new List<Date>();
        /****Start of adding old records of servcie to claim******/
        for(Service_to_Claim__c stc : service_to_claim){
            amount.add(stc.Final_Demand_Amount__c);

                dt.add(stc.Date_Final_Demand_Issued__c);
            
            
            amount.add(stc.Final_Demand_Dispute_Amt__c);
                dt.add(stc.Final_Demand_Dispute_Issued__c);
            

        }
        /****End of adding old records of servcie to claim******/
        /********Strat adding the current service to claim record value*******/
        
        amount.add(sc.Final_Demand_Amount__c);
             dt.add(sc.Date_Final_Demand_Issued__c);
        
        
        amount.add(sc.Final_Demand_Dispute_Amt__c);
            dt.add(sc.Final_Demand_Dispute_Issued__c);
        
        

        /********End of adding the current record of service to claim**********/
        
        integer index;
        Decimal FinalDemandAmount_AcuityCIC  = amount.get(0);
        Date FDA_Acuity_CIC_Date = dt.get(0);
        system.debug('::index::'+index);
        system.debug('::FinalDemandAmount_AcuityCIC::'+FinalDemandAmount_AcuityCIC);
        system.debug('::FDA_Acuity_CIC_Date::'+FDA_Acuity_CIC_Date);
        for(index = 0; index<amount.size(); index++){
            /****check if there is null value in FDA_Acuity_CIC_Date ***/
            if(dt[index]!=null && FDA_Acuity_CIC_Date == null){
                FDA_Acuity_CIC_Date = dt[index];
                FinalDemandAmount_AcuityCIC = amount[index];
            }
            
            /****compare the recent capture date calculation****/
            if(dt[index] >= FDA_Acuity_CIC_Date){
                if(dt[index] > FDA_Acuity_CIC_Date){
                    FinalDemandAmount_AcuityCIC = amount[index];
                } else {
                    if(amount[index] != null){
                        if(FinalDemandAmount_AcuityCIC == null || FinalDemandAmount_AcuityCIC > amount[index]){
                            FinalDemandAmount_AcuityCIC = amount[index];   
                        }  
                    }
                    
                } 
                FDA_Acuity_CIC_Date = dt[index]; 
            } 
            
            system.debug('::index::'+index);
            system.debug('::FinalDemandAmount_AcuityCIC::'+FinalDemandAmount_AcuityCIC);
            system.debug('::FDA_Acuity_CIC_Date::'+FDA_Acuity_CIC_Date);
        }
        
        update new Claim__c(
            id = sc.Claim__c,
            FDA_Acuity_CIC_Date__c = FDA_Acuity_CIC_Date,
            FinalDemandAmount_AcuityCIC__c = FinalDemandAmount_AcuityCIC
        );
        
        
    }
}
}