From: jeff Date: Fri, 15 Jun 2007 18:44:17 +0000 (+0000) Subject: paydate option for realtime_refund_bop and UI entry for cust_pay records without... X-Git-Tag: TRIXBOX_2_6~493 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=eb9f717502fa1259c30c91cbfedba36f0cc47380 paydate option for realtime_refund_bop and UI entry for cust_pay records without it (#1662 UI) --- diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 1dc167a26..ac1fba5ba 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -2891,7 +2891,7 @@ L for supported gateways. Available methods are: I, I and I -Available options are: I, I, I +Available options are: I, I, I, I Most gateways require a reference to an original payment transaction to refund, so you probably need to specify a I. @@ -2900,6 +2900,9 @@ I defaults to the original amount of the payment if not specified. I specifies a reason for the refund. +I specifies the expiration date for a credit card overriding the +value from the customer record or the payment record. Specified as yyyy-mm-dd + Implementation note: If I is unspecified or equal to the amount of the orignal payment, first an attempt is made to "void" the transaction via the gateway (to cancel a not-yet settled transaction) and then if that fails, @@ -3100,11 +3103,13 @@ sub realtime_refund_bop { if ( $cust_pay ) { $content{card_number} = $payinfo = $cust_pay->payinfo; - $cust_pay->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/ && - ($content{expiration} = "$2/$1"); # where available + (exists($options{'paydate'}) ? $options{'paydate'} : $cust_pay->paydate) + =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/ && + ($content{expiration} = "$2/$1"); # where available } else { $content{card_number} = $payinfo = $self->payinfo; - $self->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/; + (exists($options{'paydate'}) ? $options{'paydate'} : $self->paydate) + =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/; $content{expiration} = "$2/$1"; } diff --git a/httemplate/edit/cust_refund.cgi b/httemplate/edit/cust_refund.cgi index aa825af94..02f65d90a 100755 --- a/httemplate/edit/cust_refund.cgi +++ b/httemplate/edit/cust_refund.cgi @@ -53,6 +53,11 @@ % #false laziness w/FS/FS/cust_pay.pm % my $payby = $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$'/); +% } % $payby =~ s/^BILL$/Check/ if $paymask; % $payby =~ s/^CHEK$/Electronic check/; % @@ -73,6 +78,19 @@ Method<% ucfirst(lc($payby)) %> # <% $paymask %> + +% unless ( $paydate ) { # possibly other reasons: i.e. card has since expired + + Expiration + <% include( '/elements/select-month_year.html', + 'prefix' => 'exp', + 'selected_date' => $paydate, + 'empty_option' => !$paydate, + ) %> + + +% } + % % #false laziness w/FS/FS/cust_main::realtime_refund_bop % if ( $cust_pay->paybatch =~ /^(\w+):(\w+)(:(\w+))?$/ ) { diff --git a/httemplate/edit/process/cust_refund.cgi b/httemplate/edit/process/cust_refund.cgi index a579a02d8..d95ab46dc 100755 --- a/httemplate/edit/process/cust_refund.cgi +++ b/httemplate/edit/process/cust_refund.cgi @@ -5,6 +5,7 @@ % %my $error = ''; %if ( $cgi->param('payby') =~ /^(CARD|CHEK)$/ ) { +% my %options = (); % my $bop = $FS::payby::payby2bop{$1}; % $cgi->param('refund') =~ /^(\d*)(\.\d{2})?$/ % or die "illegal refund amount ". $cgi->param('refund'); @@ -12,9 +13,12 @@ % $cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!"; % my $paynum = $1; % my $reason = $cgi->param('reason'); +% my $paydate = $cgi->param('exp_year'). '-'. $cgi->param('exp_month'). '-01'; +% $options{'paydate'} = $paydate if $paydate =~ /^\d{2,4}-\d{1,2}-01$/; % $error = $cust_main->realtime_refund_bop( $bop, 'amount' => $refund, % 'paynum' => $paynum, -% 'reason' => $reason, ); +% 'reason' => $reason, +% %options ); %} else { % die 'unimplemented'; % #my $new = new FS::cust_refund ( {