From fa81e2694906ade89f6b7260c621cd86f10cdba0 Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 21 Mar 2007 04:01:52 +0000 Subject: [PATCH] ticket 1436, ACH export format, return processing and autopost --- FS/FS/pay_batch.pm | 36 +++++++++++++++++++++++++++++- httemplate/misc/download-batch.cgi | 43 +++++++++++++++++++++++++++++++++++- httemplate/search/cust_pay_batch.cgi | 2 ++ 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index add4da9e0..5a06ba603 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -146,7 +146,7 @@ Options are: I - open filehandle of results file. -I - "csv-td_canada_trust-merchant_pc_batch", "csv-chase_canada-E-xactBatch" or "PAP" +I - "csv-td_canada_trust-merchant_pc_batch", "csv-chase_canada-E-xactBatch", "ach-spiritone", or "PAP" =cut @@ -334,6 +334,40 @@ sub import_results { 0; }; + }elsif ( $format eq 'ach-spiritone' ) { + + $filetype = "CSV"; + + @fields = ( + '', # Name + 'paybatchnum', # ID: Invoice number of the transaction + 'aba', # ABA Number for the transaction + 'payinfo', # Bank Account Number for the transaction + '', # Transaction Type: 27 - debit + 'paid', # Amount: Amount of the transaction. Dollars and cents + # with decimal entered. + '', # Default Transaction Type + '', # Default Amount: Dollars and cents with decimal entered. + ); + + $end_condition = sub { + ''; + }; + + $hook = sub { + my $hash = shift; + $hash->{'_date'} = time; # got a better one? + $hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'aba'}; + }; + + $approved_condition = sub { + 1; + }; + + $declined_condition = sub { + 0; + }; + } else { return "Unknown format $format"; diff --git a/httemplate/misc/download-batch.cgi b/httemplate/misc/download-batch.cgi index 8d6c94969..da975376b 100644 --- a/httemplate/misc/download-batch.cgi +++ b/httemplate/misc/download-batch.cgi @@ -23,6 +23,8 @@ <% sprintf( '$$E-xactBatchFileV1.0$$%s:%03u$$%s',$sdate,$pay_batch->batchnum, $origid) %> % +%}elsif ($format eq "ach-spiritone"){ +%# 1; %}else{ % die "Unknown format for batch in batchconfig. \n"; %} @@ -93,6 +95,16 @@ <% $cust_pay_batch->paybatchnum %>,<% $cust_pay_batch->custnum %>,<% $cust_pay_batch->invnum %>,"<% $payname %>",00,<% $cust_pay_batch->payinfo %>,<% $cust_pay_batch->amount %>,<% $exp %>,, % % +% }elsif ($format eq "ach-spiritone"){ +% +% my( $account, $aba ) = split( '@', $cust_pay_batch->payinfo ); +% my $payname=$cust_pay_batch->payname; $payname =~ tr/",/ /; #payinfo too? +% my $batchline = qq!"$payname","!.$cust_pay_batch->paybatchnum. +% qq!","$aba","$account","27","!.$cust_pay_batch->amount. +% qq!","27","0.00"!; +% push @batchlines, $batchline; +<% $batchline %> +% % } else { % die "I'm already dead, but you did not know that.\n"; % } @@ -116,11 +128,12 @@ % #1; %} elsif ($format eq "csv-chase_canada-E-xactBatch"){ % #1; +%} elsif ($format eq "ach-spiritone"){ +% #1; %} else { % die "I'm already dead (again), but you did not know that.\n"; %} % -%$dbh->commit or die $dbh->errstr if $oldAutoCommit; <%init> my $conf=new FS::Conf; @@ -142,6 +155,13 @@ if ( $cgi->param('format') =~ /^([\w\- ]+)$/ ) { $format = $conf->config('batch-default_format'); } +my $autopost; +if ( $format eq 'ach-spiritone' ) { + $autopost = 1; +}else{ + $autopost = 0; +} + my $oldAutoCommit = $FS::UID::AutoCommit; local $FS::UID::AutoCommit = 0; my $dbh = dbh; @@ -168,4 +188,25 @@ my $cdate = sprintf("%02d", $date[3]).sprintf("%02d", $date[4] + 1). my $sdate = sprintf("%02d", $date[5] % 100).'/'.sprintf("%02d", $date[4] + 1). '/'.sprintf("%02d", $date[3]); +my @batchlines = (); +<%cleanup> +if ($autopost) { + my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc; + my $fh = new File::Temp( + TEMPLATE => 'paybatch.'. $batchnum .'.XXXXXXXX', + DIR => $dir, + ) or die "can't open temp file: $!\n"; + + print $fh map{ "$_\n" } @batchlines; + seek $fh, 0, 0; + + $error = $pay_batch->import_results( 'filehandle' => $fh, + 'format' => $format, + ); + die $error if $error; +} + +$dbh->commit or die $dbh->errstr if $oldAutoCommit; + + diff --git a/httemplate/search/cust_pay_batch.cgi b/httemplate/search/cust_pay_batch.cgi index e378ffae7..c678febf1 100755 --- a/httemplate/search/cust_pay_batch.cgi +++ b/httemplate/search/cust_pay_batch.cgi @@ -142,6 +142,7 @@ if ( $pay_batch ) { qq!!. qq!!. qq!!. + qq!!. qq!!; } $html_init .= qq!
!; @@ -165,6 +166,7 @@ if ( $pay_batch ) { qq!!. qq!!. qq!!. + qq!!. qq!
!; } $html_init .= qq!!; -- 2.11.0