Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class BACSPaymentManagerController {
- @AuraEnabled
- public static String generateBACSFile(List<Id> selectedPaymentIds, Datetime BACSPaymentDatetime){
- Integer day = BACSPaymentDatetime.day();
- String dayString;
- Integer month = BACSPaymentDatetime.month();
- String monthString;
- Integer year = BACSPaymentDatetime.year();
- String userID = UserInfo.getUserId();
- Date BACSPaymentDate = Date.newInstance(year, month, day);
- if(day > 9)
- dayString = String.Valueof(day);
- else
- dayString = '0'+day;
- if(month > 9)
- monthString = String.Valueof(month);
- else
- monthString = '0'+month;
- String dateLine = 'H,' + year + monthString + dayString + ',' + userID + year + monthString + dayString;
- String terminationString = 'T';
- Integer hour = BACSPaymentDatetime.hour();
- String hourString;
- if(hour > 9)
- hourString = String.Valueof(hour);
- else
- hourString = '0'+hour;
- Integer minute = BACSPaymentDatetime.minute();
- String minuteString;
- if(minute > 9)
- minuteString = String.Valueof(minute);
- else
- minuteString = '0'+minute;
- Integer second = BACSPaymentDatetime.second();
- String secondString;
- if(second > 9)
- secondString = String.Valueof(second);
- else
- secondString = '0'+second;
- String bacsDebitAccountReference = 'SF'+ year + monthString + dayString + hourString + minuteString + secondString;
- Datetime BACSPaymentDatetimeNext4 = BACSPaymentDatetime+4;
- Integer dayNext4 = BACSPaymentDatetimeNext4.day();
- String dayStringNext4;
- Integer monthNext4 = BACSPaymentDatetimeNext4.month();
- String monthStringNext4;
- Integer yearNext4 = BACSPaymentDatetimeNext4.year();
- if(dayNext4 > 9)
- dayStringNext4 = String.Valueof(dayNext4);
- else
- dayStringNext4 = '0'+dayNext4;
- if(monthNext4 > 9)
- monthStringNext4 = String.Valueof(monthNext4);
- else
- monthStringNext4 = '0'+monthNext4;
- bacsDetails__c bacsDetails = bacsDetails__c.getInstance();
- String debitLine = 'D,' + yearNext4 + monthStringNext4 + dayStringNext4 + ',' + bacsDebitAccountReference + ',' + bacsDetails.sortCode__c + '-' + bacsDetails.Account_Number_For_BAS_Debit__c;
- Batch_Reference__c br = new Batch_Reference__c(Name=bacsDebitAccountReference);
- insert br;
- Integer numberOfPayments = 0;
- Decimal totalAmount = 0;
- List<Payment__c> selectedPayment = new List<Payment__c>();
- for(Payment__c pay : [SELECT Id, Name, Amount_Paid__c, Date_Paid__c, Date_Due__c FROM Payment__c WHERE Id IN: selectedPaymentIds]){
- pay.Batch_Reference__c = br.id;
- pay.Date_Paid__c = BACSPaymentDate;
- totalAmount += pay.Amount_Paid__c;
- numberOfPayments += 1;
- selectedPayment.add(pay);
- }
- br.Total_Amount__c = totalAmount;
- br.Number_of_Payments__c = numberOfPayments;
- update selectedPayment;
- update br;
- return '/apex/BACSPaymentFileGenerator?dateLine='+dateLine+'&debitLine='+debitLine+'&id='+br.id;
- }
- }
- @isTest
- public class BACSPaymentManagerControllerTest {
- @isTest(SeeAllData=true)
- static void generateBACSFile(){
- Datetime dt = Datetime.newInstance(2018, 5, 1, 8, 0, 0);
- Datetime nextdt = dt+4;
- Account acc = new Account(Name='Aikin Household');
- insert acc;
- system.assert(acc.id!=null);
- Contact con = new Contact(LastName='John Aikin',RSABI_category__c='AB',AccountId=acc.id);
- insert con;
- system.assert(con.id!=null);
- Batch_Reference__c br = new Batch_Reference__c(Name='SF20180501080000');
- insert br;
- Payment__c pay = new Payment__c(Contact__c=con.id,Date_Due__c=system.today(),Payment_Type__c='BACS',Confirm_Payment__c=false,Amount_Paid__c=100,Batch_Reference__c=br.id);
- insert pay;
- system.assert(pay.id!=null);
- List<Id> selectedPaymentId = new List<Id>();
- selectedPaymentId.add(pay.id);
- Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
- User u2 = new User(Alias = 'newUser', Email='newuser@testorg.com',
- EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
- LocaleSidKey='en_US', ProfileId = p.Id,
- TimeZoneSidKey='America/Los_Angeles', UserName='newuser@testorg.com');
- insert u2;
- bacsDetails__c bacsDetails = bacsDetails__c.getInstance();
- String dateLine = 'H,20180501,'+u2.id+'20180501';
- String debitLine='D,20180505,SF20180501000000,'+bacsDetails.sortCode__c + '-' + bacsDetails.Account_Number_For_BAS_Debit__c;
- test.startTest();
- system.runAs(u2){
- String returnString = BACSPaymentManagerController.generateBACSFile(selectedPaymentId,dt);
- system.assertEquals('/apex/BACSPaymentFileGenerator?dateLine='+dateLine+'&debitLine='+debitLine+'&id='+br.id, returnString );
- }
- test.stopTest();
- }
- }
- System.AssertException: Assertion Failed: Expected: /apex/BACSPaymentFileGenerator?dateLine=H,20180501,0056E0000036LiVQAU20180501&debitLine=D,20180505,SF20180501000000,804121-00792403&id=a1X6E000000c8NqUAI, Actual: /apex/BACSPaymentFileGenerator?dateLine=H,20180501,0056E0000036LiVQAU20180501&debitLine=D,20180505,SF20180501000000,804121-00792403&id=a1X6E000000c8NrUAI
- Batch_Reference__c br = new Batch_Reference__c(Name=bacsDebitAccountReference);
- insert br;
- for(Payment__c pay : [SELECT Id, Name, Amount_Paid__c, Date_Paid__c, Date_Due__c FROM Payment__c WHERE Id IN: selectedPaymentIds]){
- pay.Batch_Reference__c = br.id;
- pay.Date_Paid__c = BACSPaymentDate;
- totalAmount += pay.Amount_Paid__c;
- numberOfPayments += 1;
- selectedPayment.add(pay);
- }
Add Comment
Please, Sign In to add comment