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
Jeff JobsJeff Jobs 

Help with Apex Trigger and Class

Hi Everyone,

 

I'm very new to Apex so please forgive a few noob errors.  

 

I'm using Apex for date logic, something FLOW falls short on.  The following Trigger works "before update" in tandem with my FLOW.  So the FLOW creates a record, then "updates" it which instantiates the Trigger.   The problem is, all of the FLOW stuff works, and NONE of the Apex stuff works and there is NOT an error message.  The dates I want from Apex just don't show up.  I've also tried manually creating the the record (no FLOW) with the exact same date results.  Please help.  I know I'm missing something :)

 

trigger RentOutPaymentRecordDateLogic on Payment_Record__c (before update) {

//Create Payment Record Collection
List<Payment_Record__c> RentOutPaymentRecords =
[Select j.RecordTypeId, j.First_Payment_Date__c, j.Waiver_Period_In_Days__c, j.Payout_Day__c, j.Override_Prorated_Rent__c
From Payment_Record__c j
Where j.RecordTypeId = '012d0000000wnuF'
And Payment_Record__c.id IN: Trigger.new
For Update];

//Iterate through Payment Records
for (Payment_Record__c pr: RentOutPaymentRecords) {
RentOutPaymentRecordCreation.dateUpdates(RentOutPaymentRecords);
}
}

 

public class RentOutPaymentRecordCreation{

public static void dateUpdates (Payment_Record__c[] RentOutPaymentRecords) {

for (Payment_Record__c pr: RentOutPaymentRecords) {

//Declare Date Variables
Date month3Date7 = (((pr.First_Payment_Date__c.toStartOfMonth()).addMonths(1)).addDays(6));
Date month3Date10 = (((pr.First_Payment_Date__c.toStartOfMonth()).addMonths(1)).addDays(9));
Date month4DatePlain7 = month3Date7.addMonths(1);
Date month4DatePlain10 = month3Date10.addMonths(1);
Date month4Date7 = (((pr.First_Payment_Date__c.toStartOfMonth()).addMonths(1)).addDays(6));
Date month4Date10 = (((pr.First_Payment_Date__c.toStartOfMonth()).addMonths(1)).addDays(9));
Date month5Date7 = month4Date7.addMonths(1);
Date month5Date10 = month4Date10.addMonths(1);
Date month6Date7 = month5Date7.addMonths(1);
Date month6Date10 = month5Date10.addMonths(1);
Date month7Date7 = month6Date7.addMonths(1);
Date month7Date10 = month6Date10.addMonths(1);
Date month8Date7 = month7Date7.addMonths(1);
Date month8Date10 = month7Date10.addMonths(1);
Date month9Date7 = month8Date7.addMonths(1);
Date month9Date10 = month8Date10.addMonths(1);
Date month10Date7 = month9Date7.addMonths(1);
Date month10Date10 = month9Date10.addMonths(1);
Date month11Date7 = month10Date7.addMonths(1);
Date month11Date10 = month10Date10.addMonths(1);
Date month12Date7 = month11Date7.addMonths(1);
Date month12Date10 = month11Date10.addMonths(1);
Date finalPaymentDate7 = month12Date7.addMonths(1);
Date finalPaymentDate10 = month12Date10.addMonths(1);

if (pr.Waiver_Period_in_Days__c == 60 && pr.Payout_Day__c == 10 && pr.Override_Prorated_Rent__c == FALSE) {

//Design Date Fields Update for 60 Day Waiver, Payout on the 10th, and Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = null;
pr.Month_3_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_4_Payment_Date__c = month4Date10;
pr.Month_5_Payment_Date__c = month5Date10;
pr.Month_6_Payment_Date__c = month6Date10;
pr.Month_7_Payment_Date__c = month7Date10;
pr.Month_8_Payment_Date__c = month8Date10;
pr.Month_9_Payment_Date__c = month9Date10;
pr.Month_10_Payment_Date__c = month10Date10;
pr.Month_11_Payment_Date__c = month11Date10;
pr.Month_12_Payment_Date__c = month12Date10;
pr.Final_Payment_Date__c = finalPaymentDate10;

} Else if (pr.Waiver_Period_in_Days__c == 60 && pr.Payout_Day__c == 7 && pr.Override_Prorated_Rent__c == FALSE) {

//Design Date Fields Update for 60 Day Waiver, Payout on the 7th, and Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = null;
pr.Month_3_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_4_Payment_Date__c = month4Date7;
pr.Month_5_Payment_Date__c = month5Date7;
pr.Month_6_Payment_Date__c = month6Date7;
pr.Month_7_Payment_Date__c = month7Date7;
pr.Month_8_Payment_Date__c = month8Date7;
pr.Month_9_Payment_Date__c = month9Date7;
pr.Month_10_Payment_Date__c = month10Date7;
pr.Month_11_Payment_Date__c = month11Date7;
pr.Month_12_Payment_Date__c = month12Date7;
pr.Final_Payment_Date__c = finalPaymentDate7;

} Else if (pr.Waiver_Period_in_Days__c == 60 && pr.Payout_Day__c == 10 && pr.Override_Prorated_Rent__c == TRUE) {

//Design Date Fields Update for 60 Day Waiver, Payout on the 10th, and No Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = null;
pr.Month_3_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_4_Payment_Date__c = month4Date10;
pr.Month_5_Payment_Date__c = month5Date10;
pr.Month_6_Payment_Date__c = month6Date10;
pr.Month_7_Payment_Date__c = month7Date10;
pr.Month_8_Payment_Date__c = month8Date10;
pr.Month_9_Payment_Date__c = month9Date10;
pr.Month_10_Payment_Date__c = month10Date10;
pr.Month_11_Payment_Date__c = month11Date10;
pr.Month_12_Payment_Date__c = month12Date10;

} Else if (pr.Waiver_Period_in_Days__c == 60 && pr.Payout_Day__c == 7 && pr.Override_Prorated_Rent__c == TRUE) {

//Design Date Fields Update for 60 Day Waiver, Payout on the 7th, and No Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = null;
pr.Month_3_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_4_Payment_Date__c = month4Date7;
pr.Month_5_Payment_Date__c = month5Date7;
pr.Month_6_Payment_Date__c = month6Date7;
pr.Month_7_Payment_Date__c = month7Date7;
pr.Month_8_Payment_Date__c = month8Date7;
pr.Month_9_Payment_Date__c = month9Date7;
pr.Month_10_Payment_Date__c = month10Date7;
pr.Month_11_Payment_Date__c = month11Date7;
pr.Month_12_Payment_Date__c = month12Date7;

} Else if (pr.Waiver_Period_in_Days__c == 30 && pr.Payout_Day__c == 10 && pr.Override_Prorated_Rent__c == FALSE) {

//Design Date Fields Update for 30 Day Waiver, Payout on the 10th, and Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_3_Payment_Date__c = month3Date10;
pr.Month_4_Payment_Date__c = month4DatePlain10;
pr.Month_5_Payment_Date__c = month5Date10;
pr.Month_6_Payment_Date__c = month6Date10;
pr.Month_7_Payment_Date__c = month7Date10;
pr.Month_8_Payment_Date__c = month8Date10;
pr.Month_9_Payment_Date__c = month9Date10;
pr.Month_10_Payment_Date__c = month10Date10;
pr.Month_11_Payment_Date__c = month11Date10;
pr.Month_12_Payment_Date__c = month12Date10;
pr.Final_Payment_Date__c = finalPaymentDate10;

} Else if (pr.Waiver_Period_in_Days__c == 30 && pr.Payout_Day__c == 7 && pr.Override_Prorated_Rent__c == FALSE) {

//Design Date Fields Update for 30 Day Waiver, Payout on the 7th, and Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_3_Payment_Date__c = month3Date7;
pr.Month_4_Payment_Date__c = month4DatePlain7;
pr.Month_5_Payment_Date__c = month5Date7;
pr.Month_6_Payment_Date__c = month6Date7;
pr.Month_7_Payment_Date__c = month7Date7;
pr.Month_8_Payment_Date__c = month8Date7;
pr.Month_9_Payment_Date__c = month9Date7;
pr.Month_10_Payment_Date__c = month10Date7;
pr.Month_11_Payment_Date__c = month11Date7;
pr.Month_12_Payment_Date__c = month12Date7;
pr.Final_Payment_Date__c = finalPaymentDate7;

} Else if (pr.Waiver_Period_in_Days__c == 30 && pr.Payout_Day__c == 10 && pr.Override_Prorated_Rent__c == TRUE) {

//Design Date Fields Update for 30 Day Waiver, Payout on the 10th, and No Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_3_Payment_Date__c = month3Date10;
pr.Month_4_Payment_Date__c = month4DatePlain10;
pr.Month_5_Payment_Date__c = month5Date10;
pr.Month_6_Payment_Date__c = month6Date10;
pr.Month_7_Payment_Date__c = month7Date10;
pr.Month_8_Payment_Date__c = month8Date10;
pr.Month_9_Payment_Date__c = month9Date10;
pr.Month_10_Payment_Date__c = month10Date10;
pr.Month_11_Payment_Date__c = month11Date10;
pr.Month_12_Payment_Date__c = month12Date10;

} Else if (pr.Waiver_Period_in_Days__c == 30 && pr.Payout_Day__c == 7 && pr.Override_Prorated_Rent__c == TRUE) {

//Design Date Fields Update for 30 Day Waiver, Payout on the 7th, and No Prorated Rent
pr.Month_1_Payment_Date__c = null;
pr.Month_2_Payment_Date__c = pr.First_Payment_Date__c;
pr.Month_3_Payment_Date__c = month3Date7;
pr.Month_4_Payment_Date__c = month4DatePlain7;
pr.Month_5_Payment_Date__c = month5Date7;
pr.Month_6_Payment_Date__c = month6Date7;
pr.Month_7_Payment_Date__c = month7Date7;
pr.Month_8_Payment_Date__c = month8Date7;
pr.Month_9_Payment_Date__c = month9Date7;
pr.Month_10_Payment_Date__c = month10Date7;
pr.Month_11_Payment_Date__c = month11Date7;
pr.Month_12_Payment_Date__c = month12Date7;
}
}
}
}

Best Answer chosen by Admin (Salesforce Developers) 
Jeff JobsJeff Jobs

Solved it!

 

I was using SOQL on the Trigger but the Trigger was only sending the records to a Class, not actually doing anything itself.

 

Best practice is to use an array instead of a List variable:

 

Payment_Record__c[] PaymentRecords = Trigger.new;

 

RentOutPaymentRecordCreation.dateUpdates(PaymentRecords);

 

Then I can get fussy about what and how records get updates in the Class.