1 <% include('/elements/header.html', 'Refund '. ucfirst(lc($payby)). ' payment', '') %>
3 <% include('/elements/error.html') %>
5 <% small_custview($custnum, $conf->config('countrydefault')) %>
7 <FORM NAME="RefundForm" ACTION="<% $p1 %>process/cust_refund.cgi" METHOD=POST onSubmit="document.RefundForm.submit.disabled=true">
8 <INPUT TYPE="hidden" NAME="refundnum" VALUE="">
9 <INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
10 <INPUT TYPE="hidden" NAME="paynum" VALUE="<% $paynum %>">
11 <INPUT TYPE="hidden" NAME="_date" VALUE="<% $_date %>">
12 <INPUT TYPE="hidden" NAME="payby" VALUE="<% $payby %>">
13 <INPUT TYPE="hidden" NAME="payinfo" VALUE="">
14 <INPUT TYPE="hidden" NAME="paybatch" VALUE="">
15 <INPUT TYPE="hidden" NAME="credited" VALUE="">
19 % #false laziness w/FS/FS/cust_pay.pm
20 % my $payby = $cust_pay->payby;
21 % my $paymask = $cust_pay->paymask;
22 % my $paydate = $cust_pay->paydate;
23 % if ( $cgi->param('error') ) {
24 % $paydate = $cgi->param('exp_year'). '-'. $cgi->param('exp_month'). '-01';
25 % $paydate = '' unless ($paydate =~ /^\d{2,4}-\d{1,2}-01$'/);
27 % $payby =~ s/^BILL$/Check/ if $paymask;
28 % $payby =~ s/^CHEK$/Electronic check/;
34 <% ntable("#cccccc", 2) %>
37 <TD ALIGN="right">Amount</TD><TD BGCOLOR="#ffffff">$<% $cust_pay->paid %></TD>
41 <TD ALIGN="right">Date</TD><TD BGCOLOR="#ffffff"><% time2str("%D",$cust_pay->_date) %></TD>
45 <TD ALIGN="right">Method</TD><TD BGCOLOR="#ffffff"><% ucfirst(lc($payby)) %> # <% $paymask %></TD>
48 % unless ( $paydate ) { # possibly other reasons: i.e. card has since expired
50 <TD ALIGN="right">Expiration</TD><TD BGCOLOR="#ffffff">
51 <% include( '/elements/select-month_year.html',
53 'selected_date' => $paydate,
54 'empty_option' => !$paydate,
61 % #false laziness w/FS/FS/cust_main::realtime_refund_bop
62 % if ( $cust_pay->paybatch =~ /^(\w+):(\w+)(:(\w+))?$/ ) {
63 % my ( $processor, $auth, $order_number ) = ( $1, $2, $4 );
68 <TD ALIGN="right">Processor</TD><TD BGCOLOR="#ffffff"><% $processor %></TD>
70 % if ( length($auth) ) {
73 <TD ALIGN="right">Authorization</TD><TD BGCOLOR="#ffffff"><% $auth %></TD>
76 % if ( length($order_number) ) {
79 <TD ALIGN="right">Order number</TD><TD BGCOLOR="#ffffff"><% $order_number %></TD>
89 <% ntable("#cccccc", 2) %>
92 <TD ALIGN="right">Date</TD><TD BGCOLOR="#ffffff"><% time2str("%D",$_date) %></TD>
96 <TD ALIGN="right">Amount</TD><TD BGCOLOR="#ffffff">$<INPUT TYPE="text" NAME="refund" VALUE="<% $refund %>" SIZE=8 MAXLENGTH=8></TD>
100 <TD ALIGN="right">Reason</TD><TD BGCOLOR="#ffffff"><INPUT TYPE="text" NAME="reason" VALUE="<% $reason %>"></TD>
105 <INPUT TYPE="submit" NAME="submit" VALUE="Post refund">
109 <% include('/elements/footer.html') %>
114 unless $FS::CurrentUser::CurrentUser->access_right('Refund payment');
116 my $conf = new FS::Conf;
117 my $custnum = $cgi->param('custnum');
118 my $refund = $cgi->param('refund');
119 my $payby = $cgi->param('payby');
120 my $reason = $cgi->param('reason');
122 my( $paynum, $cust_pay ) = ( '', '' );
123 if ( $cgi->param('paynum') =~ /^(\d+)$/ ) {
125 $cust_pay = qsearchs('cust_pay', { paynum=>$paynum } )
126 or die "unknown payment # $paynum";
127 $refund ||= $cust_pay->unrefunded;
129 die "payment # $paynum is not for specified customer # $custnum"
130 unless $custnum == $cust_pay->custnum;
132 $custnum = $cust_pay->custnum;
135 die "no custnum or paynum specified!" unless $custnum;