From f8b35040badefb02652f875e147ee2b4b2f7c4a9 Mon Sep 17 00:00:00 2001 From: mark Date: Tue, 15 Feb 2011 23:52:32 +0000 Subject: batch payment revocation, RT#10545 --- httemplate/misc/process/pay_batch-approve.cgi | 9 +- httemplate/search/cust_pay_batch.cgi | 116 ++----------------- httemplate/search/elements/cust_pay_batch_top.html | 127 +++++++++++++++++++++ httemplate/search/pay_batch.cgi | 6 + 4 files changed, 145 insertions(+), 113 deletions(-) create mode 100644 httemplate/search/elements/cust_pay_batch_top.html (limited to 'httemplate') diff --git a/httemplate/misc/process/pay_batch-approve.cgi b/httemplate/misc/process/pay_batch-approve.cgi index f857e2318..ff5f12b38 100644 --- a/httemplate/misc/process/pay_batch-approve.cgi +++ b/httemplate/misc/process/pay_batch-approve.cgi @@ -7,10 +7,11 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Process batches'); my $batchnum = $cgi->param('batchnum'); -# make a record in the paybatch of who did this -my $paybatch = 'manual-'.$FS::CurrentUser::CurrentUser->username. - '-' . time2str('%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time); +my $paybatch = $batchnum; +my $usernum = $FS::CurrentUser::CurrentUser->usernum; my $pay_batch = qsearchs('pay_batch', { 'batchnum' => $batchnum }) or die "batchnum '$batchnum' not found"; -my $error = $pay_batch->manual_approve('paybatch' => $paybatch); +my $error = $pay_batch->manual_approve( + 'paybatch' => $paybatch, 'usernum' => $usernum +); diff --git a/httemplate/search/cust_pay_batch.cgi b/httemplate/search/cust_pay_batch.cgi index 4a2248726..8022d4666 100755 --- a/httemplate/search/cust_pay_batch.cgi +++ b/httemplate/search/cust_pay_batch.cgi @@ -3,7 +3,10 @@ 'name' => 'batch details', 'query' => $sql_query, 'count_query' => $count_query, - 'html_init' => $pay_batch ? $html_init : '', + 'html_init' => $pay_batch ? + include('elements/cust_pay_batch_top.html', + 'pay_batch' => $pay_batch + ) : '', 'header' => [ '#', 'Inv #', 'Customer', @@ -66,7 +69,6 @@ die "access denied" && ( $conf->exists('batch-enable') || $conf->config('batch-enable_payby') ) - #&& $FS::CurrentUser::CurrentUser->access_right('View customer batched payments') ); my( $count_query, $sql_query ); @@ -124,113 +126,9 @@ $sql_query = "SELECT paybatchnum,invnum,custnum,cpb.last,cpb.first," . 'LEFT JOIN pay_batch USING ( batchnum ) ' . "$search ORDER BY $orderby"; -my $html_init = ''; +my $html_init = ''; if ( $pay_batch ) { - my $fixed = $conf->config('batch-fixed_format-'. $pay_batch->payby); - if ( - $pay_batch->status eq 'O' - || ( $pay_batch->status eq 'I' - && $FS::CurrentUser::CurrentUser->access_right('Reprocess batches') - ) - || ( $pay_batch->status eq 'R' - && $FS::CurrentUser::CurrentUser->access_right('Redownload resolved batches') - ) - ) { - $html_init .= qq!!; - if ( $fixed ) { - $html_init .= qq!!; - } else { - $html_init .= qq!Download batch in format !. - qq!!; - } - $html_init .= qq!

!; - } - - if ( - $pay_batch->status eq 'I' - || ( $pay_batch->status eq 'R' - && $FS::CurrentUser::CurrentUser->access_right('Reprocess batches') - ) - ) { - $html_init .= ''. - include('/elements/form-file_upload.html', - 'name' => 'FileUpload', - 'action' => "$p/misc/upload-batch.cgi", - 'num_files' => 1, - 'fields' => [ 'batchnum', 'format' ], - 'message' => 'Batch results uploaded.', - ) . - 'Upload results
'. - include('/elements/file-upload.html', - 'field' => 'file', - 'label' => 'Filename', - 'no_table'=> 1 - ). - '
' - ; - if ( $fixed and $fixed eq 'td_eft1464' ) { - # special case, this one has two upload formats - $html_init .= qq!Format !. - qq!
!; - } - elsif ( $fixed ) { - $html_init .= qq!!; - } else { - # should pull this from %import_info - $html_init .= qq!Format !. - qq!
!; - } - $html_init .= qq!!; - $html_init .= '
'; - if ( $conf->exists('batch-manual_approval') - and $conf->config('batch-fixed_format-CHEK') eq 'td_eft1464' - and $pay_batch->status eq 'I' - and $pay_batch->payby eq 'CHEK' ) { - $html_init .= qq!! - } - } - $html_init .= '
'; + $html_init = include('elements/cust_pay_batch_top.html', + 'pay_batch' => $pay_batch); } - -if ($pay_batch) { - my $sth = dbh->prepare($count_query) or die dbh->errstr. "doing $count_query"; - $sth->execute or die "Error executing \"$count_query\": ". $sth->errstr; - my $cards = $sth->fetchrow_arrayref->[0]; - - my $st = "SELECT SUM(amount) from cust_pay_batch WHERE batchnum=". $batchnum; - $sth = dbh->prepare($st) or die dbh->errstr. "doing $st"; - $sth->execute or die "Error executing \"$st\": ". $sth->errstr; - my $total = $sth->fetchrow_arrayref->[0]; - - $html_init .= "$cards credit card payments batched
\$" . - sprintf("%.2f", $total) ." total in batch
"; -} - diff --git a/httemplate/search/elements/cust_pay_batch_top.html b/httemplate/search/elements/cust_pay_batch_top.html new file mode 100644 index 000000000..96ed428b0 --- /dev/null +++ b/httemplate/search/elements/cust_pay_batch_top.html @@ -0,0 +1,127 @@ +% # Download batch +% if ( $status eq 'O' +% or ( $status eq 'I' and $curuser->access_right('Reprocess batches') ) +% or ( $status eq 'R' and $curuser->access_right('Redownload resolved batches') ) +% ) { + + + +% if ( $fixed ) { + +% } +% else { +Download batch in format +% } +

+% } # end of download + +% # Upload batch +% if ( $pay_batch->status eq 'I' +% or ( $pay_batch->status eq 'R' +% and $curuser->access_right('Reprocess batches') +% and $conf->exists('batch-manual_approval') +% ) +% ) { + +<% include('/elements/form-file_upload.html', + 'name' => 'FileUpload', + 'action' => "${p}misc/upload-batch.cgi", + 'num_files' => 1, + 'fields' => [ 'batchnum', 'format' ], + 'message' => 'Batch results uploaded.', +) %> +Upload results
+ +<% include('/elements/file-upload.html', + 'field' => 'file', + 'label' => 'Filename', + 'no_table' => 1, +) %> + +
+% if ( $fixed ) { +% if ( $fixed eq 'td_eft1464' ) { # special case +Format +% } +% else { + +% } +% } +% else { +Format +
+% } # end upload + +% # manual approval +% if ( $fixed eq 'td_eft1464' +% and $status eq 'I' +% and $payby eq 'CHEK' +% and $conf->exists('batch-manual_approval') +% ) { + +% } # end manual approval +
+ +% # summary info +Batch is <% $statustext{$status} %>
+<%$count%> payments batched
+<%$money_char%><%$total%> total in batch
+ +<%init> +my %opt = @_; +my $pay_batch = $opt{'pay_batch'} or return; +my $conf = new FS::Conf; +my $money_char = $conf->config('money_char') || '$'; +my $payby = $pay_batch->payby; +my $status = $pay_batch->status; +my $curuser = $FS::CurrentUser::CurrentUser; +my $batchnum = $pay_batch->batchnum; + +my $fixed = $conf->config("batch-fixed_format-$payby"); + +tie my %download_formats, 'Tie::IxHash', ( +'' => 'Default batch mode', +'csv-td_canada_trust-merchant_pc_batch' => + 'CSV file for TD Canada Trust Merchant PC Batch', +'csv-chase_canada-E-xactBatch' => + 'CSV file for Chase Canada E-xactBatch', +'PAP' => '80 byte file for TD Canada Trust PAP Batch', +'BoM' => 'Bank of Montreal ECA batch', +'ach-spiritone' => 'Spiritone ACH batch', +'paymentech' => 'XML file for Chase Paymentech', +'RBC' => 'Royal Bank of Canada PDS batch', +'td_eft1464' => '1464 byte file for TD Commercial Banking EFT', +# insert new batch formats here +); + +tie my %upload_formats, 'Tie::IxHash', ( + %download_formats, +# minor tweaks + 'td_eftack' => 'TD EFT Acknowledgement', + 'td_eftret' => 'TD EFT Returned Items', +); +delete $upload_formats{'td_eft1464'}; +$upload_formats{'PAP'} = '264 byte results for TD Canada Trust PAP Batch', + +my %statustext = ( 'O' => 'open', 'I' => 'in transit', 'R' => 'resolved' ); + +my $count_query = "SELECT COUNT(*) FROM cust_pay_batch WHERE batchnum=$batchnum"; +my $count = FS::Record->scalar_sql($count_query); +my $sum_query = "SELECT SUM(amount) FROM cust_pay_batch WHERE batchnum=$batchnum"; +my $total = sprintf("%.2f", FS::Record->scalar_sql($sum_query)); + diff --git a/httemplate/search/pay_batch.cgi b/httemplate/search/pay_batch.cgi index 6d571b42f..34297a500 100755 --- a/httemplate/search/pay_batch.cgi +++ b/httemplate/search/pay_batch.cgi @@ -80,6 +80,7 @@ sub { shift->status eq 'O' ? "b" : '' }, sub { shift->status eq 'I' ? "b" : '' }, ], + 'html_init' => $html_init, ) %> @@ -128,4 +129,9 @@ my $extra_sql = scalar(@where) ? 'WHERE ' . join(' AND ', @where) : ''; my $link = [ "${p}search/cust_pay_batch.cgi?dcln=1;batchnum=", 'batchnum' ]; +my $resolved = $cgi->param('resolved') || 0; +$cgi->param('resolved' => !$resolved); +my $html_init = ''. + ($resolved ? 'Hide' : 'Show') . ' resolved batches
'; + -- cgit v1.2.1