1 package FS::pay_batch::td_eft1464;
4 use vars qw(@ISA %import_info %export_info $name);
5 use Date::Format 'time2str';
7 use FS::Record qw(qsearch);
11 td_eft1464 - TD Commercial Banking EFT1464 format
15 The Freeside option 'batchconfig-td_eft1464' must be set
16 with the following values on separate lines:
22 =item TD Datacenter Location
35 =item Returned Payment Branch (5 digits)
37 =item Returned Payment Account
39 =item Transaction Type Code - defaults to "437" (Internet access)
50 # TD Bank EFT 1464 Byte format
52 %import_info = ( filetype => 'NONE' );
53 # just to suppress warning; importing this format is a fatal error
66 } = $conf->config("batchconfig-td_eft1464");
67 $opt{'origid'} = sprintf('%-10s', $opt{'origid'});
68 $opt{'shortname'} = sprintf('%-15s', $opt{'shortname'});
69 $opt{'longname'} = sprintf('%-30s', $opt{'longname'});
70 $opt{'retbranch'} = '0004'.sprintf('%5s',$opt{'retbranch'});
71 $opt{'retacct'} = sprintf('%-11s', $opt{'retacct'}). ' ';
75 my $pay_batch = shift;
76 my @cust_pay_batch = @{(shift)};
77 my $time = $pay_batch->download || time;
78 my $now = sprintf("%03u%03u",
79 (localtime(time))[5],#year since 1900
80 (localtime(time))[7]+1);#day of year
82 # Request settlement the next day
83 my $duedate = time+86400;
84 $opt{'due'} = sprintf("%03u%03u",
85 (localtime($duedate))[5],
86 (localtime($duedate))[7]+1);
89 sprintf('%04u', ($pay_batch->batchnum % 9999)+1), # file creation number
92 sprintf('%09u', 1), #record number
101 my ($cust_pay_batch, $pay_batch) = @_;
102 my ($account, $aba) = split('@', $cust_pay_batch->payinfo);
104 # The 1464 byte format supports up to 5 payments per line,
105 # but we're only going to send 1.
106 my $control = join('',
108 sprintf("%09u", $i), #record number
112 my $payment = join('',
113 $opt{'cpacode'} || 437, # CPA code, defaults to "Internet access"
114 sprintf('%010.0f', $cust_pay_batch->amount*100),
115 $opt{'due'}, #due date...? XXX
116 sprintf('%09u', $aba),
117 sprintf('%-12s', $account),
123 $cust_pay_batch->first, $cust_pay_batch->last)
127 sprintf('%-19s', $cust_pay_batch->paybatchnum), # originator reference num
134 return $control . $payment . (' ' x 720);
137 my ($pay_batch, $batchcount, $batchtotal) = @_;
140 sprintf('%09u', $batchcount + 2),
143 sprintf('%014.0f', $batchtotal*100), # total of debit txns
144 sprintf('%08u', $batchcount), # number of debit txns
145 '0' x 14, # total of credit txns
146 '0' x 8, # total of credit txns