package FS::pay_batch::BoM; use strict; use vars qw(@ISA %import_info %export_info $name); use Time::Local 'timelocal'; use FS::Conf; my $conf; my ($origid, $datacenter, $typecode, $shortname, $longname, $mybank, $myacct); $name = 'BoM'; %import_info = ( 'filetype' => 'CSV', 'fields' => [], 'hook' => sub { die "Can't import BoM" }, 'approved' => sub { 1 }, 'declined' => sub { 0 }, ); %export_info = ( init => sub { $conf = shift; ($origid, $datacenter, $typecode, $shortname, $longname, $mybank, $myacct) = $conf->config("batchconfig-BoM"); }, header => sub { my $pay_batch = shift; sprintf( "A%10s%04u%06u%05u%53s\n", #80 $origid, $pay_batch->batchnum, jdate($pay_batch->download), $datacenter, "") . sprintf( "XD%03u%06u%-15s%-30s%09u%-12s ", #80 $typecode, jdate($pay_batch->download), $shortname, $longname, $mybank, $myacct); }, row => sub { my ($cust_pay_batch, $pay_batch) = @_; my ($account, $aba) = split('@', $cust_pay_batch->payinfo); sprintf( "D%010.0f%09u%-12s%-29s%-18s ", #80 $cust_pay_batch->amount * 100, $aba, $account, $cust_pay_batch->payname, $cust_pay_batch->paybatchnum ); }, footer => sub { my ($pay_batch, $batchcount, $batchtotal) = @_; sprintf( "YD%08u%014.0f%55s\n", $batchcount, $batchtotal*100, ""). #80 sprintf( "Z%014.0f%05u%014u%05u%40s", #80 now $batchtotal*100, $batchcount, "0", "0", ""); }, ); sub jdate { my (@date) = localtime(shift); sprintf("%03d%03d", $date[5] % 100, $date[7] + 1); } 1;