summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI
diff options
context:
space:
mode:
authorMitch Jackson <mitch@freeside.biz>2018-06-11 18:37:13 -0500
committerMitch Jackson <mitch@freeside.biz>2018-12-09 16:46:28 -0500
commit889c731e26608ffca1582fe57657e35711fd18b8 (patch)
tree60b4780127ae5b0b7cd3bf34340cdf7961e36d2e /FS/FS/ClientAPI
parentfbe36a956f6e39078c926b8dbbf5d1afca5ea2ea (diff)
RT# 80514 Selfservice can update ssn/stateid payment info
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm32
1 files changed, 13 insertions, 19 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 5c85030..a319861 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -1735,9 +1735,6 @@ sub update_payby {
$p->{paydate} = $p->{year} . '-' . $p->{month} . '-01' unless $p->{paydate};
}
- # Perform update within a transaction
- local $FS::UID::AutoCommit = 0;
-
my $cust_payby = qsearchs('cust_payby', {
'custnum' => $custnum,
'custpaybynum' => $p->{'custpaybynum'},
@@ -1754,26 +1751,23 @@ sub update_payby {
$cust_payby->set($field,$p->{$field});
}
- my $error = $cust_payby->replace;
+ # Update column if given a value, and the given value wasn't
+ # the value generated by $cust_main->masked($column);
+ $cust_main->set( $_, $p->{$_} )
+ for grep{ $p->{$_} !~ /^x/i; }
+ grep{ exists $p->{$_} }
+ qw/ss stateid/;
- 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;
- }
+ # Perform updates within a transaction
+ local $FS::UID::AutoCommit = 0;
- if ( $error ) {
+ if ( my $error = $cust_payby->replace || $cust_main->replace ) {
dbh->rollback;
- return { 'error' => $error };
- } else {
- dbh->commit;
- return { 'custpaybynum' => $cust_payby->custpaybynum };
+ return { error => $error };
}
-
+
+ dbh->commit;
+ return { custpaybynum => $cust_payby->custpaybynum };
}
sub verify_payby {