projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
f04d958
)
RT# 80514 Selfservice can update ssn/stateid payment info
author
Mitch Jackson
<mitch@freeside.biz>
Mon, 11 Jun 2018 20:06:50 +0000
(15:06 -0500)
committer
Mitch Jackson
<mitch@freeside.biz>
Mon, 11 Jun 2018 20:06:50 +0000
(15:06 -0500)
FS/FS/ClientAPI/MyAccount.pm
patch
|
blob
|
history
diff --git
a/FS/FS/ClientAPI/MyAccount.pm
b/FS/FS/ClientAPI/MyAccount.pm
index
a30dde5
..
f827874
100644
(file)
--- a/
FS/FS/ClientAPI/MyAccount.pm
+++ b/
FS/FS/ClientAPI/MyAccount.pm
@@
-1727,12
+1727,18
@@
sub update_payby {
$p->{'payinfo'} = $payinfo1. '@'. $payinfo2;
}
$p->{'payinfo'} = $payinfo1. '@'. $payinfo2;
}
+ # Perform update within a transaction
+ local $FS::UID::AutoCommit = 0;
+
my $cust_payby = qsearchs('cust_payby', {
'custnum' => $custnum,
'custpaybynum' => $p->{'custpaybynum'},
})
or return { 'error' => 'unknown custpaybynum '. $p->{'custpaybynum'} };
my $cust_payby = qsearchs('cust_payby', {
'custnum' => $custnum,
'custpaybynum' => $p->{'custpaybynum'},
})
or return { 'error' => 'unknown custpaybynum '. $p->{'custpaybynum'} };
+ my $cust_main = qsearchs( 'cust_main', {custnum => $cust_payby->custnum} )
+ or return { 'error' => 'unknown custnum '.$cust_payby->custnum };
+
foreach my $field (
qw( weight payby payinfo paycvv paydate payname paystate paytype payip )
) {
foreach my $field (
qw( weight payby payinfo paycvv paydate payname paystate paytype payip )
) {
@@
-1741,9
+1747,22
@@
sub update_payby {
}
my $error = $cust_payby->replace;
}
my $error = $cust_payby->replace;
+
+ if (!$error) {
+ my $is_changed = 0;
+ for my $field ( qw/ss stateid/ ) {
+ next if !exists $p->{$field} || $p->{$field} =~ /^x/i;
+ $cust_main->set( $field, $p->{$field} );
+ $is_changed = 1;
+ }
+ $error = $cust_main->replace if $is_changed;
+ }
+
if ( $error ) {
if ( $error ) {
+ dbh->rollback;
return { 'error' => $error };
} else {
return { 'error' => $error };
} else {
+ dbh->commit;
return { 'custpaybynum' => $cust_payby->custpaybynum };
}
return { 'custpaybynum' => $cust_payby->custpaybynum };
}