% 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; $payby =~ s/^CHEK$/Electronic check/; $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 <