diff options
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/cust_main/Location.pm | 35 | 
1 files changed, 18 insertions, 17 deletions
| diff --git a/FS/FS/cust_main/Location.pm b/FS/FS/cust_main/Location.pm index bd0af5348..22feaf9c8 100644 --- a/FS/FS/cust_main/Location.pm +++ b/FS/FS/cust_main/Location.pm @@ -157,19 +157,15 @@ sub _upgrade_data {      my $bill_location = FS::cust_location->new(        {          custnum => $custnum, -        map { $_ => $cust_main->get($_) } location_fields() +        map { $_ => $cust_main->get($_) } location_fields(),        }      ); -    $error = $bill_location->insert; -    die "error migrating billing address for customer $custnum: $error" -      if $error; - -    $cust_main->set(bill_locationnum => $bill_location->locationnum); +    $bill_location->set('censustract', ''); # properly goes with ship_location +    my $ship_location = $bill_location; # until proven otherwise      if ( $cust_main->get('ship_address1') ) {        # detect duplicates        my $same = 1; -      my $ship_location;        foreach (location_fields()) {          if ( length($cust_main->get("ship_$_")) and               $cust_main->get($_) ne $cust_main->get("ship_$_") ) { @@ -177,21 +173,16 @@ sub _upgrade_data {          }        } -      if ( $same ) { -        $ship_location = $bill_location; -      } else { +      if ( !$same ) {          $ship_location = FS::cust_location->new(            {              custnum => $custnum,              map { $_ => $cust_main->get("ship_$_") } location_fields()            }          ); -        $error = $ship_location->insert; -        die "error migrating service address for customer $custnum: $error" -          if $error; -      } +      } # else it stays equal to $bill_location -      $cust_main->set(ship_locationnum => $ship_location->locationnum); +      $ship_location->set('censustract', $cust_main->get('censustract'));        # Step 2: Extract shipping address contact fields into contact        my %unlike = map { $_ => 1 } @@ -233,10 +224,20 @@ sub _upgrade_data {          $cust_main->set("ship_$_" => '') foreach qw(last first company);        } #if %unlike      } #if ship_address1 -    else { -      $cust_main->set(ship_locationnum => $bill_location->locationnum); +    $error = $bill_location->insert; +    die "error migrating billing address for customer $custnum: $error" +      if $error; + +    $cust_main->set(bill_locationnum => $bill_location->locationnum); + +    if (!$ship_location->locationnum) { +      $error = $ship_location->insert; +      die "error migrating service address for customer $custnum: $error" +        if $error;      } +    $cust_main->set(ship_locationnum => $ship_location->locationnum); +      # Step 3: Wipe the migrated fields and update the cust_main      $cust_main->set("ship_$_" => '') foreach location_fields(); | 
