From 3d62ec9362d0b22c17a17da6197f8b2fc219a54e Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 6 Aug 2011 00:50:59 +0000 Subject: [PATCH] echeck options to hide routing number and add account owner name, RT#13885 --- FS/FS/Conf.pm | 7 +++++++ FS/FS/cust_main.pm | 6 ++++-- FS/FS/payinfo_Mixin.pm | 3 ++- httemplate/edit/cust_main/billing.html | 13 +++++++++---- httemplate/misc/payment.cgi | 20 ++++++++++++-------- httemplate/misc/process/payment.cgi | 9 +++++++-- httemplate/view/cust_main/billing.html | 11 +++++++---- httemplate/view/cust_main/payment_history.html | 6 +++++- 8 files changed, 53 insertions(+), 22 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 633d5c5ee..b3fdfdcf4 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -2959,6 +2959,13 @@ and customer address. Include units.', }, { + 'key' => 'echeck-no_routing', + 'section' => 'billing', + 'description' => 'Disable the routing number entirely for Electronic Check payment info.', + 'type' => 'checkbox', + }, + + { 'key' => 'voip-cust_accountcode_cdr', 'section' => 'telephony', 'description' => 'Enable the per-customer option for CDR breakdown by accountcode.', diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 97b117285..7832ecaf9 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1933,8 +1933,10 @@ sub check { if ( $conf->exists('cust_main-require-bank-branch') ) { $payinfo =~ /^(\d+)\@(\d+)\.(\d+)$/ or return 'invalid echeck account@branch.bank'; $payinfo = "$1\@$2.$3"; - } - elsif ( $conf->exists('echeck-nonus') ) { + } elsif ( $conf->exists('echeck-no_routing') ) { + $payinfo =~ /^(\d+)\@(\d*)$/ or return 'invalid echeck account'; + $payinfo = "$1\@$2"; + } elsif ( $conf->exists('echeck-nonus') ) { $payinfo =~ /^(\d+)\@(\d+)$/ or return 'invalid echeck account@aba'; $payinfo = "$1\@$2"; } else { diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm index 84264c966..d03391f68 100644 --- a/FS/FS/payinfo_Mixin.pm +++ b/FS/FS/payinfo_Mixin.pm @@ -165,7 +165,8 @@ sub mask_payinfo { # Checks (Show last 2 @ bank) my( $account, $aba ) = split('@', $payinfo ); return 'x'x(length($account)-2). - substr($account,(length($account)-2))."@".$aba; + substr($account,(length($account)-2)). + ( length($aba) ? "@".$aba : ''); } else { # Tie up loose ends return $payinfo; diff --git a/httemplate/edit/cust_main/billing.html b/httemplate/edit/cust_main/billing.html index 3266c16af..f2d6271d0 100644 --- a/httemplate/edit/cust_main/billing.html +++ b/httemplate/edit/cust_main/billing.html @@ -234,10 +234,15 @@ % join('', map { qq!" } @FS::cust_main::paytypes). % qq!!. % -% qq!${r}!.emt('ABA/Routing number').qq! !. -% qq! !. -% qq!(!.emt('help').qq!)!. -% qq!!. +% ( $conf->exists('echeck-no_routing') +% ? '' +% : +% qq!${r}!.emt('ABA/Routing number').qq! !. +% qq! !. +% qq!(!.emt('help').qq!)!. +% qq!! +% ). % % qq!!. % qq!!. diff --git a/httemplate/misc/payment.cgi b/httemplate/misc/payment.cgi index a033c1cea..447cfa3c1 100644 --- a/httemplate/misc/payment.cgi +++ b/httemplate/misc/payment.cgi @@ -135,7 +135,7 @@ % $stateid, $stateid_state ) % = ( '', '', '', '', '', '', '', '' ); % if ( $cust_main->payby =~ /^(CHEK|DCHK)$/ ) { -% $cust_main->paymask =~ /^([\dx]+)\@([\dx]+)$/i +% $cust_main->paymask =~ /^([\dx]+)\@([\dx]*)$/i % or die "unparsable payinfo ". $cust_main->payinfo; % ($payinfo1, $payinfo2) = ($1, $2); % $payname = $cust_main->payname; @@ -154,13 +154,17 @@ <% mt('Type') |h %> - - <% mt('ABA/Routing number') |h %> - - - (<% mt('help') |h %>) - - +% if ( $conf->exists('echeck-no_routing') ) { + +% } else { + + <% mt('ABA/Routing number') |h %> + + + (<% mt('help') |h %>) + + +% } <% mt('Bank name') |h %> diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi index 5fa57e448..fb6a41bd3 100644 --- a/httemplate/misc/process/payment.cgi +++ b/httemplate/misc/process/payment.cgi @@ -81,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; } diff --git a/httemplate/view/cust_main/billing.html b/httemplate/view/cust_main/billing.html index ba63833f4..cf22ff701 100644 --- a/httemplate/view/cust_main/billing.html +++ b/httemplate/view/cust_main/billing.html @@ -92,10 +92,13 @@ <% mt("Electronic check ([_1])",$autodemand) |h %> - - <% mt('ABA/Routing code') |h %> - <% $aba %> - + +% unless ( $conf->exists('echeck-no_routing') ) { + + <% mt('ABA/Routing code') |h %> + <% $aba %> + +% } % if ( $conf->exists('cust_main-require-bank-branch') ) { diff --git a/httemplate/view/cust_main/payment_history.html b/httemplate/view/cust_main/payment_history.html index fa9c16697..580a30751 100644 --- a/httemplate/view/cust_main/payment_history.html +++ b/httemplate/view/cust_main/payment_history.html @@ -511,7 +511,11 @@ sub translate_payinfo { $payinfo = $object->paymask; } elsif ( $payby eq 'CHEK' ) { my( $account, $aba ) = split('@', $object->paymask ); - $payinfo = emt("ABA [_1], Acct #[_2]",$aba,$account); + if ( $conf->exists('echeck-no_routing') ) { + $payinfo = emt("Acct #[_1]", $account); + } else { + $payinfo = emt("ABA [_1], Acct #[_2]",$aba,$account); + } } ($payby,$payinfo); -- 2.11.0