diff options
| author | Mark Wells <mark@freeside.biz> | 2012-04-27 11:52:59 -0700 |
|---|---|---|
| committer | Mark Wells <mark@freeside.biz> | 2012-04-27 11:52:59 -0700 |
| commit | c3c4704ff8c6e3083449880ac4feb9af423d01f0 (patch) | |
| tree | c1891c6f7055524c8afd882a0ccc99593c3a936a | |
| parent | cfd239c83c9bfc0d4ff31d9560115d6e6afe1cb3 (diff) | |
don't change service address when selfservice changes billing address, #14613
| -rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index e9394e4df..08e3f7e4b 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -570,6 +570,12 @@ sub edit_info { or return { 'error' => "unknown custnum $custnum" }; my $new = new FS::cust_main { $cust_main->hash }; + # Avoid accidentally changing the service address. + if ( !$new->has_ship_address ) { + $new->set( $_ => $new->get($_) ) + foreach $new->addr_fields; + } + $new->set( $_ => $p->{$_} ) foreach grep { exists $p->{$_} } @cust_main_editable_fields; @@ -927,9 +933,17 @@ sub do_process_payment { my $new = new FS::cust_main { $cust_main->hash }; if ($payby eq 'CARD' || $payby eq 'DCRD') { $new->set( $_ => $validate->{$_} ) - foreach qw( payname paystart_month paystart_year payissue payip - address1 address2 city state zip country ); + foreach qw( payname paystart_month paystart_year payissue payip ); $new->set( 'payby' => $validate->{'auto'} ? 'CARD' : 'DCRD' ); + + # Avoid accidentally changing the service address. + if ( !$new->has_ship_address ) { + $new->set( "ship_$_" => $new->get($_) ) + foreach $new->addr_fields; + } + $new->set( $_ => $validate->{$_} ) + foreach qw(address1 address2 city state country zip); + } elsif ($payby eq 'CHEK' || $payby eq 'DCHK') { $new->set( $_ => $validate->{$_} ) foreach qw( payname payip paytype paystate |
