setFileFormat( '1464' ); //$eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); //$eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); //$eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'CAD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '12345' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '12345' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); //Bogus value should be converted to 27=Checking $record->setTransit( '12345' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '601.56' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '557' ); //Bogus value should be converted to 27=Checking $record->setTransit( '12345' ); $record->setAccount( '88888899' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = 'A000000001123456789 100102009205566 CAD C000000002123456789 1001200000001240902009205551234588888888 0000000000000000000000000ShortCompanyNamEmployeeName LongCompanyName 123456789 000000000 00000000000 C000000003123456789 1001200084712326702009205551234588888888 0000000000000000000000000ShortCompanyNamEmployeeName LongCompanyName 123456789 000000000 00000000000 D000000004123456789 1001200000004219902009205561234588888889 0000000000000000000000000ShortCompanyNamEmployeeName LongCompanyName 123456789 000000000 00000000000 D000000005123456789 1001200000006015602009205571234588888899 0000000000000000000000000ShortCompanyNamEmployeeName LongCompanyName 123456789 000000000 00000000000 Z000000006123456789 10010000000010235500000002000008471356760000000200000000000000000000000000000000000000000000 '; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleDebitOnlyACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62777777777088888888 0000012409 EmployeeName 0878787870000001 82250000010077777777000000012409000000000000123456789 878787870000001 9000001000001000000010077777777000000012409000000000000 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleDebitOnlyACHB() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '37' ); //37=Savings $record->setTransit( '77777777' ); $record->setAccount( '88888888X9' ); //Test with alpha numeric values. $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 63777777777088888888X9 0000012409 EmployeeName 0878787870000001 82250000010077777777000000012409000000000000123456789 878787870000001 9000001000001000000010077777777000000012409000000000000 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleDebitOnlyACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-02') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62777777777088888888 0000012409 EmployeeName 0878787870000001 62777777777088888888 0847123267 EmployeeName 0878787870000002 82250000020155555554000847135676000000000000123456789 878787870000001 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200402 1878787870000002 62777777778088888889 0000042199 EmployeeName 0878787870000003 82250000010077777778000000042199000000000000123456789 878787870000002 9000002000001000000030233333332000847177875000000000000 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleCreditOnlyACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0000012409 EmployeeName 0878787870000001 82200000010077777777000000000000000000012409123456789 878787870000001 9000001000001000000010077777777000000000000000000012409 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleCreditOnlyACHWithInstitutionAndTransitA() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '123' ); //Institution (3 digits) gets prepended to Transit to make routing number. $record->setTransit( '45678' ); //Transit (5 digits) gets appended to Institution to make routing number. $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62212345678088888888 0000012409 EmployeeName 0878787870000001 82200000010000045678000000000000000000012409123456789 878787870000001 9000001000001000000010000045678000000000000000000012409 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleCreditOnlyACHWithInstitutionAndTransitB() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '1239' ); //Institution (4 digits) gets prepended to Transit to make routing number. $record->setTransit( '45678' ); //Transit (5 digits) gets appended to Institution to make routing number. $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62212394567888888888 0000012409 EmployeeName 0878787870000001 82200000010000045678000000000000000000012409123456789 878787870000001 9000001000001000000010000045678000000000000000000012409 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleCreditOnlyACHB() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '32' ); //32=Savings $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 63277777777088888888 0000012409 EmployeeName 0878787870000001 82200000010077777777000000000000000000012409123456789 878787870000001 9000001000001000000010077777777000000000000000000012409 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testSingleCreditOnlyACHWithDiscretionaryData() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setBatchDiscretionaryData( '00112233445566778899' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME00112233445566778899123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0000012409 EmployeeName 0878787870000001 82200000010077777777000000000000000000012409123456789 878787870000001 9000001000001000000010077777777000000000000000000012409 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleCreditOnlyACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-02') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0000012409 EmployeeName 0878787870000001 62277777777088888888 0847123267 EmployeeName 0878787870000002 82200000020155555554000000000000000847135676123456789 878787870000001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200402 1878787870000002 62277777778088888889 0000042199 EmployeeName 0878787870000003 82200000010077777778000000000000000000042199123456789 878787870000002 9000002000001000000030233333332000000000000000847177875 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleCreditOnlyWithOffsetACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); //OFFSET Record $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '8471778.75' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'OFFSET' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $record->setOriginatorReferenceNumber( 'OFFSET' ); //Offset Transaction Only $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5200SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0000012409 EmployeeName 0878787870000001 62277777777088888888 0847123267 EmployeeName 0878787870000002 62277777778088888889 0000042199 EmployeeName 0878787870000003 62777777778088888889 0847177875OFFSET OFFSET 0878787870000004 82000000040311111110000847177875000847177875123456789 878787870000001 9000001000001000000040311111110000847177875000847177875 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleDebitAndCreditACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-01') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); //Bogus value should be converted to 27=Checking $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '601.56' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '557' ); //Bogus value should be converted to 27=Checking $record->setTransit( '77777788' ); $record->setAccount( '88888899' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5200SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0000012409 EmployeeName 0878787870000001 62277777777088888888 0847123267 EmployeeName 0878787870000002 62777777778088888889 0000042199 EmployeeName 0878787870000003 62777777788088888899 0000060156 EmployeeName 0878787870000004 82000000040311111120000000102355000847135676123456789 878787870000001 9000001000001000000040311111120000000102355000847135676 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleDebitAndCreditDifferentDaysACH() { //Setup file level settings. $eft = new EFT(); $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-02') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-02') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); //Bogus value should be converted to 27=Checking $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '601.56' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '557' ); //Bogus value should be converted to 27=Checking $record->setTransit( '77777788' ); $record->setAccount( '88888899' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5200SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0847123267 EmployeeName 0878787870000001 62777777788088888899 0000060156 EmployeeName 0878787870000002 82000000020155555565000000060156000847123267123456789 878787870000001 5200SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200402 1878787870000002 62277777777088888888 0000012409 EmployeeName 0878787870000003 62777777778088888889 0000042199 EmployeeName 0878787870000004 82000000020155555555000000042199000000012409123456789 878787870000002 9000002000001000000040311111120000000102355000847135676 '; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } function testMultipleDebitAndCreditSplitACH() { //Setup file level settings. $eft = new EFT(); $eft->split_debit_credit_batches = true; $eft->setFileFormat( 'ACH' ); $eft->setBusinessNumber( '123456789' ); //ACH $eft->setOriginatorID( '123456789' ); $eft->setFileCreationDate( strtotime('2020-04-01') ); $eft->setFileCreationNumber( '1001' ); $eft->setInitialEntryNumber( '87878787' ); //ACH $eft->setDataCenter( '5566' ); $eft->setDataCenterName( 'DataCenter' ); //ACH $eft->setOtherData( 'originator_long_name', 'LongCompanyName' ); //Originator Long name based on company name. It will be trimmed automatically in EFT class. $eft->setOriginatorShortName( 'ShortOriginName' ); $eft->setCompanyShortName( 'ShortCompanyName' ); $eft->setCurrencyISOCode( 'USD' ); //Add records $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '124.09' ); $record->setDueDate( strtotime('2020-04-02') ); $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'C' ); $record->setCPACode( 200 ); $record->setAmount( '8471232.67' ); $record->setDueDate( strtotime('2020-04-01') ); //Same day as above, so it goes into the same batch. $record->setInstitution( '555' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777777' ); $record->setAccount( '88888888' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '421.99' ); $record->setDueDate( strtotime('2020-04-02') ); //Different day than above, so its a different batch. $record->setInstitution( '556' ); //Bogus value should be converted to 22=Checking $record->setTransit( '77777778' ); $record->setAccount( '88888889' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $record = new EFT_Record(); $record->setType( 'D' ); $record->setCPACode( 200 ); $record->setAmount( '601.56' ); $record->setDueDate( strtotime('2020-04-01') ); //Different day than above, so its a different batch. $record->setInstitution( '557' ); //Bogus value should be converted to 27=Checking $record->setTransit( '77777788' ); $record->setAccount( '88888899' ); $record->setName( 'EmployeeName' ); $record->setOriginatorShortName( 'ShortCompanyName' ); $record->setOriginatorLongName( 'LongCompanyName' ); $eft->setRecord( $record ); $eft->compile(); $eft_data = str_replace("\r\n", "\n", $eft->getCompiledData() ); //Convert line ending to UNIX so we can compare against lines saved in this file using UNIX endings. //var_dump($eft_data); $expected_eft_data_file = '101 000005566 12345678920040100000094101DATACENTER SHORTORIGINNAME 1001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000001 62277777777088888888 0847123267 EmployeeName 0878787870000001 82200000010077777777000000000000000847123267123456789 878787870000001 5220SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200402 1878787870000002 62277777777088888888 0000012409 EmployeeName 0878787870000002 82200000010077777777000000000000000000012409123456789 878787870000002 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200401 1878787870000003 62777777788088888899 0000060156 EmployeeName 0878787870000003 82250000010077777788000000060156000000000000123456789 878787870000003 5225SHORTCOMPANYNAME 123456789 PPDPAYROLL 200401200402 1878787870000004 62777777778088888889 0000042199 EmployeeName 0878787870000004 82250000010077777778000000042199000000000000123456789 878787870000004 9000004000002000000040311111120000000102355000847135676 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'; $this->assertEquals($eft_data, $expected_eft_data_file ); return true; } } ?>