diff options
Diffstat (limited to 'FS/FS/pay_batch/ach_spiritone.pm')
-rw-r--r-- | FS/FS/pay_batch/ach_spiritone.pm | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/FS/FS/pay_batch/ach_spiritone.pm b/FS/FS/pay_batch/ach_spiritone.pm new file mode 100644 index 0000000..bd3bb14 --- /dev/null +++ b/FS/FS/pay_batch/ach_spiritone.pm @@ -0,0 +1,65 @@ +package FS::pay_batch::ach_spiritone; + +use strict; +use vars qw(@ISA %import_info %export_info $name); +use Time::Local 'timelocal'; +use FS::Conf; +use File::Temp; + +my $conf; +my ($origid, $datacenter, $typecode, $shortname, $longname, $mybank, $myacct); + +$name = 'ach-spiritone'; # note spelling + +%import_info = ( + 'filetype' => 'CSV', + 'fields' => [ + '', #name + 'paybatchnum', + 'aba', + 'payinfo', + '', #transaction type + 'paid', + '', #default transaction type + '', #default amount + ], + 'hook' => sub { + my $hash = shift; + $hash->{'_date'} = time; + $hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'aba'}; + }, + 'approved' => sub { 1 }, + 'declined' => sub { 0 }, +); + +%export_info = ( +# This is the simplest case. + row => sub { + my ($cust_pay_batch, $pay_batch) = @_; + my ($account, $aba) = split('@', $cust_pay_batch->payinfo); + my $payname = $cust_pay_batch->first . ' ' . $cust_pay_batch->last; + $payname =~ tr/",/ /; + qq!"$payname","!.$cust_pay_batch->paybatchnum. + qq!","$aba","$account","27","!.$cust_pay_batch->amount. + qq!","27","0.00"!; #" + }, + autopost => sub { + my ($pay_batch, $batch) = @_; + my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; + my $fh = new File::Temp( + TEMPLATE => 'paybatch.'. $pay_batch->batchnum .'.XXXXXXXX', + DIR => $dir, + ) or return "can't open temp file: $!\n"; + + print $fh $batch; + seek $fh, 0, 0; + + my $error = $pay_batch->import_results( 'filehandle' => $fh, + 'format' => $name, + ); + return $error if $error; + }, +); + +1; + |