From 8133cc2c4eb7198e9e9090437c087d568563b57d Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 20 Dec 2006 10:51:37 +0000 Subject: [PATCH] fix "recurring_billing" flag for the wonderful new world of paymasking --- FS/FS/cust_main.pm | 5 +++++ FS/FS/payinfo_Mixin.pm | 35 ++++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 80b1a5b6e..2a9c4c7ba 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -2549,8 +2549,13 @@ sub realtime_bop { if qsearch('cust_pay', { 'custnum' => $self->custnum, 'payby' => 'CARD', 'payinfo' => $payinfo, + } ) + || qsearch('cust_pay', { 'custnum' => $self->custnum, + 'payby' => 'CARD', + 'paymask' => $self->mask_payinfo('CARD', $payinfo), } ); + } elsif ( $method eq 'ECHECK' ) { ( $content{account_number}, $content{routing_code} ) = split('@', $payinfo); diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm index 652dc4149..505c7a5cd 100644 --- a/FS/FS/payinfo_Mixin.pm +++ b/FS/FS/payinfo_Mixin.pm @@ -134,28 +134,36 @@ sub paymask { =over 4 -=item mask_payinfo +=item mask_payinfo [ PAYBY, PAYINFO ] -This method converts the payment info (credit card, bank account, etc.) into a masked string. +This method converts the payment info (credit card, bank account, etc.) into a +masked string. + +Optionally, an arbitrary payby and payinfo can be passed. =cut sub mask_payinfo { my $self = shift; - my $paymask; - my $payinfo = $self->payinfo; - my $payby = $self->payby; + my $payby = scalar(@_) ? shift : $self->payby; + my $payinfo = scalar(@_) ? shift : $self->payinfo; + # Check to see if it's encrypted... - if ($self->is_encrypted($payinfo)) { + my $paymask; + if ( $self->is_encrypted($payinfo) ) { $paymask = 'N/A'; } else { # if not, mask it... - if ($payby eq 'CARD' || $payby eq 'DCRD' || $payby eq 'MCRD') { # Credit Cards (Show first and last four) - $paymask = substr($payinfo,0,6). 'x'x(length($payinfo)-10). substr($payinfo,(length($payinfo)-4)); - } elsif ($payby eq 'CHEK' || - $payby eq 'DCHK' ) { # Checks (Show last 2 @ bank) + if ($payby eq 'CARD' || $payby eq 'DCRD' || $payby eq 'MCRD') { + # Credit Cards (Show first and last four) + $paymask = substr($payinfo,0,6). + 'x'x(length($payinfo)-10). + substr($payinfo,(length($payinfo)-4)); + } elsif ($payby eq 'CHEK' || $payby eq 'DCHK' ) { + # Checks (Show last 2 @ bank) my( $account, $aba ) = split('@', $payinfo ); - $paymask = 'x'x(length($account)-2). substr($account,(length($account)-2))."@".$aba; + $paymask = 'x'x(length($account)-2). + substr($account,(length($account)-2))."@".$aba; } else { # Tie up loose ends $paymask = $payinfo; } @@ -163,6 +171,11 @@ sub mask_payinfo { return $paymask; } +=cut + +sub _mask_payinfo { + my $self = shift; + =item payinfo_check Checks payby and payinfo. -- 2.11.0