From befa6ce8570f6493d9a77d6522c97bc5f8d501a8 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 4 Jun 2013 19:03:08 -0700 Subject: [PATCH] handle census tract properly in location upgrade, #23422 --- FS/FS/cust_main/Location.pm | 35 ++++++++++++++++++----------------- 1 file 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(); -- 2.11.0