summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2017-08-28 09:29:08 -0400
committerChristopher Burger <burgerc@freeside.biz>2017-08-29 08:06:42 -0400
commitdd0ddb96af06f569965f252b9e07587f17c40b0d (patch)
treee5d2a122ebacc7803b45581260d4ab0352d825ec /FS/FS/ClientAPI
parent052e86e84f36bc9a0c0f06ba77bafa2aca10afdb (diff)
RT# 76952 - fixed error that would save a duplicate ACH or credit card account
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 5c86b78..a10a452 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -980,6 +980,7 @@ sub validate_payment {
#false laziness w/process/payment.cgi
my $payinfo;
my $paycvv = '';
+ my $replace_cust_payby;
if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) {
$p->{'payinfo1'} =~ /^([\dx]+)$/
@@ -994,6 +995,7 @@ sub validate_payment {
foreach my $cust_payby ($cust_main->cust_payby('CHEK','DCHK')) {
if ( $cust_payby->paymask eq $payinfo ) {
$payinfo = $cust_payby->payinfo;
+ $replace_cust_payby = $cust_payby;
$achonfile = 1;
last;
}
@@ -1014,6 +1016,7 @@ sub validate_payment {
foreach my $cust_payby ($cust_main->cust_payby('CARD','DCRD')) {
if ( $cust_payby->paymask eq $payinfo ) {
$payinfo = $cust_payby->payinfo;
+ $replace_cust_payby = $cust_payby;
$onfile = 1;
last;
}
@@ -1055,6 +1058,8 @@ sub validate_payment {
'CHEK' => [ qw( ss paytype paystate stateid stateid_state payip ) ],
);
+ my %replace = ( 'replace' => $replace_cust_payby, );
+
my $card_type = '';
$card_type = cardtype($payinfo) if $payby eq 'CARD';
@@ -1063,7 +1068,7 @@ sub validate_payment {
'amount' => sprintf('%.2f', $amount),
'payby' => $payby,
'payinfo' => $payinfo,
- 'paymask' => $cust_main->mask_payinfo( $payby, $payinfo ),
+ 'paymask' => FS::payinfo_Mixin->mask_payinfo( $payby, $payinfo ),
'card_type' => $card_type,
'paydate' => $p->{'year'}. '-'. $p->{'month'}. '-01',
'paydate_pretty' => $p->{'month'}. ' / '. $p->{'year'},
@@ -1076,6 +1081,7 @@ sub validate_payment {
'payname' => $payname,
'discount_term' => $discount_term,
'pkgnum' => $session->{'pkgnum'},
+ %replace,
map { $_ => $p->{$_} } ( @{ $payby2fields{$payby} },
qw( save auto ),
)
@@ -1158,6 +1164,7 @@ sub do_process_payment {
my $error = $cust_main->save_cust_payby(
'payment_payby' => $payby,
+ 'replace' => $validate->{'replace'}, # cust_payby object to replace
%saveopt
);