X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fmisc%2Fprocess%2Fpayment.cgi;h=fb6a41bd32af05d70e0805101a14aaab184886ed;hb=3d62ec9362d0b22c17a17da6197f8b2fc219a54e;hp=1e9501df85835a1cad0bc20e41ca46b826ccd475;hpb=40a7b3dc653e099f7bd0bd762b649b04c4432db2;p=freeside.git diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi index 1e9501df8..fb6a41bd3 100644 --- a/httemplate/misc/process/payment.cgi +++ b/httemplate/misc/process/payment.cgi @@ -10,13 +10,16 @@ <% include('/elements/footer.html') %> -% } else { +% #2.5/2.7?# } elsif ( $curuser->access_right('View payments') ) { +% } elsif ( $curuser->access_right(['View invoices', 'View payments']) ) { <% $cgi->redirect(popurl(3). "view/cust_pay.html?paynum=$paynum" ) %> +% } else { +<% $cgi->redirect(popurl(3). "view/cust_main.html?custnum=$custnum" ) %> % } <%init> -die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Process payment'); +my $curuser = $FS::CurrentUser::CurrentUser; +die "access denied" unless $curuser->access_right('Process payment'); #some false laziness w/MyAccount::process_payment @@ -78,8 +81,13 @@ if ( $payby eq 'CHEK' ) { $cgi->param('payinfo1') =~ /^(\d+)$/ or errorpage("illegal account number ". $cgi->param('payinfo1')); my $payinfo1 = $1; - $cgi->param('payinfo2') =~ /^(\d+)$/ - or errorpage("illegal ABA/routing number ". $cgi->param('payinfo2')); + if ( $conf->exists('echeck-no_routing') ) { + $cgi->param('payinfo2') =~ /^(\d*)$/ + or errorpage("illegal ABA/routing number ". $cgi->param('payinfo2')); + } else { + $cgi->param('payinfo2') =~ /^(\d+)$/ + or errorpage("illegal ABA/routing number ". $cgi->param('payinfo2')); + } my $payinfo2 = $1; $payinfo = $payinfo1. '@'. $payinfo2; } @@ -91,13 +99,15 @@ if ( $payby eq 'CHEK' ) { $payinfo = $cust_main->payinfo; } $payinfo =~ s/\D//g; - $payinfo =~ /^(\d{13,16})$/ + $payinfo =~ /^(\d{13,16}|\d{8,9})$/ or errorpage(gettext('invalid_card')); # . ": ". $self->payinfo; $payinfo = $1; validate($payinfo) or errorpage(gettext('invalid_card')); # . ": ". $self->payinfo; + errorpage(gettext('unknown_card_type')) - if cardtype($payinfo) eq "Unknown"; + if $payinfo !~ /^99\d{14}$/ #token + && cardtype($payinfo) eq "Unknown"; if ( defined $cust_main->dbdef_table->column('paycvv') ) { if ( length($cgi->param('paycvv') ) ) { @@ -117,19 +127,26 @@ if ( $payby eq 'CHEK' ) { die "unknown payby $payby"; } +$cgi->param('discount_term') =~ /^\d*$/ + or errorpage("illegal discount_term"); +my $discount_term = $1; + my $error = ''; my $paynum = ''; if ( $cgi->param('batch') ) { - $error = $cust_main->batch_card( - 'payby' => $payby, - 'amount' => $amount, - 'payinfo' => $payinfo, - 'paydate' => "$year-$month-01", - 'payname' => $payname, - map { $_ => $cgi->param($_) } - @{$payby2fields{$payby}} - ); + $error = 'Prepayment discounts not supported with batched payments' + if $discount_term; + + $error ||= $cust_main->batch_card( + 'payby' => $payby, + 'amount' => $amount, + 'payinfo' => $payinfo, + 'paydate' => "$year-$month-01", + 'payname' => $payname, + map { $_ => $cgi->param($_) } + @{$payby2fields{$payby}} + ); errorpage($error) if $error; } else { @@ -144,6 +161,7 @@ if ( $cgi->param('batch') ) { 'payunique' => $payunique, 'paycvv' => $paycvv, 'paynum_ref' => \$paynum, + 'discount_term' => $discount_term, map { $_ => $cgi->param($_) } @{$payby2fields{$payby}} ); errorpage($error) if $error; @@ -177,7 +195,7 @@ if ( $cgi->param('save') ) { } else { die "unknown payby $payby"; } - $new->set( 'payinfo' => $payinfo ); + $new->set( 'payinfo' => $cust_main->card_token || $payinfo ); $new->set( 'paydate' => "$year-$month-01" ); $new->set( 'payname' => $payname );