1037 lines
56 KiB
PHP
1037 lines
56 KiB
PHP
|
<?php /** @noinspection PhpMissingDocCommentInspection */
|
||
|
/*********************************************************************************
|
||
|
*
|
||
|
* TimeTrex is a Workforce Management program developed by
|
||
|
* TimeTrex Software Inc. Copyright (C) 2003 - 2021 TimeTrex Software Inc.
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify it under
|
||
|
* the terms of the GNU Affero General Public License version 3 as published by
|
||
|
* the Free Software Foundation with the addition of the following permission
|
||
|
* added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
|
||
|
* WORK IN WHICH THE COPYRIGHT IS OWNED BY TIMETREX, TIMETREX DISCLAIMS THE
|
||
|
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||
|
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||
|
* details.
|
||
|
*
|
||
|
*
|
||
|
* You should have received a copy of the GNU Affero General Public License along
|
||
|
* with this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
|
* 02110-1301 USA.
|
||
|
*
|
||
|
*
|
||
|
* You can contact TimeTrex headquarters at Unit 22 - 2475 Dobbin Rd. Suite
|
||
|
* #292 West Kelowna, BC V4T 2E9, Canada or at email address info@timetrex.com.
|
||
|
*
|
||
|
*
|
||
|
* The interactive user interfaces in modified source and object code versions
|
||
|
* of this program must display Appropriate Legal Notices, as required under
|
||
|
* Section 5 of the GNU Affero General Public License version 3.
|
||
|
*
|
||
|
*
|
||
|
* In accordance with Section 7(b) of the GNU Affero General Public License
|
||
|
* version 3, these Appropriate Legal Notices must retain the display of the
|
||
|
* "Powered by TimeTrex" logo. If the display of the logo is not reasonably
|
||
|
* feasible for technical reasons, the Appropriate Legal Notices must display
|
||
|
* the words "Powered by TimeTrex".
|
||
|
*
|
||
|
********************************************************************************/
|
||
|
|
||
|
/**
|
||
|
* @group Browser
|
||
|
*/
|
||
|
class EFTTest extends PHPUnit\Framework\TestCase {
|
||
|
public function setUp(): void {
|
||
|
Debug::text( 'Running setUp(): ', __FILE__, __LINE__, __METHOD__, 10 );
|
||
|
}
|
||
|
|
||
|
public function tearDown(): void {
|
||
|
Debug::text( 'Running tearDown(): ', __FILE__, __LINE__, __METHOD__, 10 );
|
||
|
}
|
||
|
|
||
|
function testMultipleDebitAndCreditEFT() {
|
||
|
//Setup file level settings.
|
||
|
$eft = new EFT();
|
||
|
$eft->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;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|