X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount.pm;h=08e3f7e4b2938642dad0c871b02a0cd7a6011089;hp=e9394e4df36ba913a57dc3aadbbf702068238392;hb=852f0115eef0a9013ffb6ff59eb9b569625d90f1;hpb=300cbdd515dca2beceaec7d1df040008f93d635d 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