X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fcust_refund.cgi;h=009ce7321c5565eaa0b4b5d45f280e19c0f3e15e;hp=8955c7cee3c785d2c0770100d74191ac7519a506;hb=4a88f08ffbf1c9d2f3da8a6d6d6a7d46e99dbc19;hpb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15 diff --git a/httemplate/edit/cust_refund.cgi b/httemplate/edit/cust_refund.cgi index 8955c7cee..009ce7321 100755 --- a/httemplate/edit/cust_refund.cgi +++ b/httemplate/edit/cust_refund.cgi @@ -1,94 +1,260 @@ - -<% +% if ( $link eq 'popup' ) { + <% include('/elements/header-popup.html', $title ) %> +% } else { + <% include("/elements/header.html", $title, '') %> +% } + +<% include('/elements/error.html') %> + +% unless ( $link eq 'popup' ) { + <% small_custview($custnum, $conf->config('countrydefault')) %> +% } + +
+ + + + + + + + + +
+ +% if ( $cust_pay ) { +% +% #false laziness w/FS/FS/cust_pay.pm +% my $payby = FS::payby->payname($cust_pay->payby); +% my $paymask = $cust_pay->paymask; +% my $paydate = $cust_pay->paydate; +% if ( $cgi->param('error') ) { +% $paydate = $cgi->param('exp_year'). '-'. $cgi->param('exp_month'). '-01'; +% $paydate = '' unless ($paydate =~ /^\d{2,4}-\d{1,2}-01$'/); +% } + +
Payment + + + + + + + + + + +% if ( $cust_payby ) { + + + +% } + +% unless ( $paydate || $cust_pay->payby ne 'CARD' ) { # possibly other reasons: i.e. card has since expired + + + +% } +% if ( $cust_pay->processor ) { + + + + +% if ( length($cust_pay->auth) ) { + + + + + +% } +% if ( length($cust_pay->order_number) ) { + + + + + +% } +% } # if ($cust_pay->processor) + +
Amount$<% $cust_pay->paid %>
Date<% time2str($date_format, $cust_pay->_date) %>
Method + <% $payby %> # <% $paymask %> + +
Expiration + <% include( '/elements/select-month_year.html', + 'prefix' => 'exp', + 'selected_date' => $paydate, + 'empty_option' => !$paydate, + ) %> +
Processor<% $cust_pay->processor %>
Authorization<% $cust_pay->auth %>
Order number<% $cust_pay->order_number %>
+% } #if $cust_pay + + +
Refund + + + + + + + + + + + + + +% if ( $payby eq 'BILL' ) { + + + + +
Date<% time2str($date_format, $_date) %>
Amount$ by <% FS::payby->payname($payby) %>
Check #
+% } +% elsif ($payby eq 'CHEK' || $payby eq 'CARD') { +% + +% my @cust_payby = (); +% if ( $payby eq 'CARD' ) { +% @cust_payby = $cust_main->cust_payby('CARD','DCRD'); +% } elsif ( $payby eq 'CHEK' ) { +% @cust_payby = $cust_main->cust_payby('CHEK','DCHK'); +% } else { +% die "unknown payby $payby"; +% } +% +% my $custpaybynum = length(scalar($cgi->param('custpaybynum'))) +% ? scalar($cgi->param('custpaybynum')) +% : scalar(@cust_payby) && $cust_payby[0]->custpaybynum; + +% if ( !$cust_payby ) { + <& /elements/tr-select-cust_payby.html, + 'cust_payby' => \@cust_payby, + 'curr_value' => $custpaybynum, + 'onchange' => 'cust_payby_changed(this)', + &> +% } + +% if ($payby eq "CARD" || $payby eq "DCRD") { + +% } +% elsif ( $conf->exists("batch-enable") +% || grep $payby eq $_, $conf->config('batch-enable_payby') +% ) { +% if ( grep $payby eq $_, $conf->config('realtime-disable_payby') ) { + +% } else { + + > +    <% mt('Add to current batch') |h %> + +% } +% } + + +

+ +% if ( !$cust_payby ) { +

+> + + + <& /elements/cust_payby_new.html, + 'cust_payby' => \@cust_payby, + 'curr_value' => $custpaybynum, + &> + +
+
+% } # end if cust_payby + +% } else { + + +% } + +

+ +<& /elements/tr-select-reason.html, + 'field' => 'reasonnum', + 'reason_class' => 'F', + 'control_button' => "confirm_refund_button", + 'cgi' => $cgi, +&> + +
+ +
+ + +

+ +% if ( $link eq 'popup' ) { + + +% } else { + <% include('/elements/footer.html') %> +% } + +<%init> my $conf = new FS::Conf; +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; + my $custnum = $cgi->param('custnum'); my $refund = $cgi->param('refund'); my $payby = $cgi->param('payby'); +my $payinfo = $cgi->param('payinfo'); my $reason = $cgi->param('reason'); +my $link = $cgi->param('popup') ? 'popup' : ''; +my $batch = $cgi->param('batch'); -my( $paynum, $cust_pay ) = ( '', '' ); +die "access denied" + unless $FS::CurrentUser::CurrentUser->refund_access_right($payby); + +my( $paynum, $cust_pay, $batchnum, $cust_payby ) = ( '', '', '', '' ); if ( $cgi->param('paynum') =~ /^(\d+)$/ ) { $paynum = $1; $cust_pay = qsearchs('cust_pay', { paynum=>$paynum } ) or die "unknown payment # $paynum"; $refund ||= $cust_pay->unrefunded; + $batchnum = $cust_pay->batchnum; if ( $custnum ) { die "payment # $paynum is not for specified customer # $custnum" unless $custnum == $cust_pay->custnum; } else { $custnum = $cust_pay->custnum; + $cgi->param(-name=>"custnum", -value=>$custnum) unless $cgi->param("custnum"); } + # get custpayby + $cust_payby = qsearchs( + 'cust_payby', { paymask => $cust_pay->paymask, custnum => $custnum } + ); + } die "no custnum or paynum specified!" unless $custnum; +my $cust_main = qsearchs( 'cust_main', { 'custnum'=>$custnum } ); +die "unknown custnum $custnum" unless $cust_main; + 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 < -
- - - - -END +my $title = 'Refund '. FS::payby->payname($payby). ' payment'; -%> +