diff options
author | Mitch Jackson <mitch@freeside.biz> | 2018-06-11 18:37:13 -0500 |
---|---|---|
committer | Mitch Jackson <mitch@freeside.biz> | 2018-12-09 16:46:28 -0500 |
commit | 889c731e26608ffca1582fe57657e35711fd18b8 (patch) | |
tree | 60b4780127ae5b0b7cd3bf34340cdf7961e36d2e /FS/FS/ClientAPI | |
parent | fbe36a956f6e39078c926b8dbbf5d1afca5ea2ea (diff) |
RT# 80514 Selfservice can update ssn/stateid payment info
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 32 |
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 { |