From 4ae85517a9c3a8a2f61e87bc27a74eb616e396a4 Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 6 Jul 2004 17:26:02 +0000 Subject: payment voiding part deux & credit card refunds! --- httemplate/edit/cust_refund.cgi | 93 +++++++++++++++++++++++++++++++++ httemplate/edit/process/cust_credit.cgi | 4 -- httemplate/edit/process/cust_refund.cgi | 37 +++++++++++++ 3 files changed, 130 insertions(+), 4 deletions(-) create mode 100755 httemplate/edit/cust_refund.cgi create mode 100755 httemplate/edit/process/cust_refund.cgi (limited to 'httemplate/edit') diff --git a/httemplate/edit/cust_refund.cgi b/httemplate/edit/cust_refund.cgi new file mode 100755 index 000000000..425c17738 --- /dev/null +++ b/httemplate/edit/cust_refund.cgi @@ -0,0 +1,93 @@ + +<% + +my $conf = new FS::Conf; +my $custnum = $cgi->param('custnum'); +my $refund = $cgi->param('refund'); +my $payby = $cgi->param('payby'); +my $reason = $cgi->param('reason'); + +my( $paynum, $cust_pay ) = ( '', '' ); +if ( $cgi->param('paynum') =~ /^(\d+)$/ ) { + $paynum = $1; + $cust_pay = qsearchs('cust_pay', { paynum=>$paynum } ) + or die "unknown payment # $paynum"; + $refund ||= $cust_pay->unrefunded; + if ( $custnum ) { + die "payment # $paynum is not for specified customer # $custnum" + unless $custnum == $cust_pay->custnum; + } else { + $custnum = $cust_pay->custnum; + } +} +die "no custnum or paynum specified!" unless $custnum; + +my $_date = time; + +my $p1 = popurl(1); + +print header('Refund '. ucfirst(lc($payby)). ' payment', ''); +print qq!Error: !, $cgi->param('error'), + "" + if $cgi->param('error'); +print <config('countrydefault')); +
+ + + + + + + + +
+END + +if ( $cust_pay ) { + + #false laziness w/FS/FS/cust_pay.pm + my $payby = $cust_pay->payby; + my $payinfo = $cust_pay->payinfo; + $payby =~ s/^BILL$/Check/ if $payinfo; + $payinfo = $cust_pay->payinfo_masked if $payby eq 'CARD'; + + print '
Payment'. ntable("#cccccc", 2). + 'Amount$'. + $cust_pay->paid. ''. + 'Date'. + time2str("%D",$cust_pay->_date). ''. + 'Method'. + ucfirst(lc($payby)). ' # '. $payinfo. ''; + #false laziness w/FS/FS/cust_main::realtime_refund_bop + if ( $cust_pay->paybatch =~ /^(\w+):(\w+)(:(\w+))?$/ ) { + my ( $processor, $auth, $order_number ) = ( $1, $2, $4 ); + print 'Processor'. + $processor. ''; + print 'Authorization'. + $auth. '' + if length($auth); + print 'Order number'. + $order_number. '' + if length($order_number); + } + print ''; +} + +print '
Refund'. ntable("#cccccc", 2). + 'Date'. + time2str("%D",$_date). ''; + +print qq!Amount\$!; + +print qq!Reason!; + +print < +
+ + + + +END + +%> diff --git a/httemplate/edit/process/cust_credit.cgi b/httemplate/edit/process/cust_credit.cgi index ac92631f8..85bfd4489 100755 --- a/httemplate/edit/process/cust_credit.cgi +++ b/httemplate/edit/process/cust_credit.cgi @@ -3,12 +3,9 @@ $cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!"; my $custnum = $1; -$cgi->param('otaker',getotaker); - my $new = new FS::cust_credit ( { map { $_, scalar($cgi->param($_)); - #} qw(custnum _date amount otaker reason) } fields('cust_credit') } ); @@ -26,5 +23,4 @@ if ( $error ) { print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); } - %> diff --git a/httemplate/edit/process/cust_refund.cgi b/httemplate/edit/process/cust_refund.cgi new file mode 100755 index 000000000..fc1635781 --- /dev/null +++ b/httemplate/edit/process/cust_refund.cgi @@ -0,0 +1,37 @@ +<% + +$cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!"; +my $custnum = $1; +my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ) + or die "unknown custnum $custnum"; + +my $error = ''; +if ( $cgi->param('payby') eq 'CARD' ) { + $cgi->param('refund') =~ /^(\d*)(\.\d{2})?$/ + or die "illegal refund amount ". $cgi->param('refund'); + my $refund = "$1$2"; + $cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!"; + my $paynum = $1; + my $reason = $cgi->param('reason'); + $error = $cust_main->realtime_refund_bop( 'CC', 'amount' => $refund, + 'paynum' => $paynum, + 'reason' => $reason, ); +} else { + die 'unimplemented'; + #my $new = new FS::cust_refund ( { + # map { + # $_, scalar($cgi->param($_)); + # } ( fields('cust_refund'), 'paynum' ) + #} ); + #$error = $new->insert; +} + + +if ( $error ) { + $cgi->param('error', $error); + print $cgi->redirect(popurl(2). "cust_refund.cgi?". $cgi->query_string ); +} else { + print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); +} + +%> -- cgit v1.2.1