Online Renewal - Progress on updating addresses
authorTerran McCanna <tmccanna@georgialibraries.org>
Wed, 23 Nov 2022 18:56:49 +0000 (13:56 -0500)
committerJason Stephenson <jstephenson@cwmars.org>
Tue, 29 Nov 2022 20:11:49 +0000 (15:11 -0500)
(still issues with checkmarks when changing from 1 to 2
addresses or from 2 to 1 address)

Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm

index c62f609..4e61826 100644 (file)
@@ -752,7 +752,7 @@ sub update_addresses {
     $physical_addr->id($user->billing_address->id);
     $physical_addr->usr($user->id);
     $physical_addr->address_type('PHYSICAL');
-    $physical_addr->within_city_limits('f');
+    $physical_addr->within_city_limits($user->billing_address->within_city_limits);
     $physical_addr->valid('t');
     $physical_addr->pending('f');
 
@@ -760,7 +760,7 @@ sub update_addresses {
     $mailing_addr->id($user->mailing_address->id);
     $mailing_addr->usr($user->id);
     $mailing_addr->address_type('MAILING');
-    $mailing_addr->within_city_limits('f');
+    $mailing_addr->within_city_limits($user->mailing_address->within_city_limits);
     $mailing_addr->valid('t');
     $mailing_addr->pending('f');
 
@@ -773,18 +773,32 @@ sub update_addresses {
 
         my $val = $cgi->param($field);
 
-    # if the addr ids are the same, but the streets don't match, create second address
-    if ($physical_addr->id eq $mailing_addr->id && $physical_addr->street1 ne $mailing_addr->street1) {
-        $physical_addr->isnew(0);
-        $physical_addr->ischanged(1);
-        $mailing_addr->isnew(1);
-        $mailing_addr->ischanged(0);
-    } else {
-        $physical_addr->isnew(0);
-        $physical_addr->ischanged(1);
-        $mailing_addr->isnew(0);
-        $mailing_addr->ischanged(1);
-    }
+        if ($physical_addr->id eq $mailing_addr->id && $physical_addr->street1 eq $mailing_addr->street1) {
+            # if one address & stays at one address, just update it
+            $physical_addr->isnew(0);
+            $physical_addr->ischanged(1);
+            $mailing_addr->isnew(0);
+            $mailing_addr->ischanged(1);
+        } elsif ($physical_addr->id eq $mailing_addr->id && $physical_addr->street1 ne $mailing_addr->street1) {
+            # if the addr ids are the same, but the streets don't match, create a separate address entry for mailing
+            $physical_addr->isnew(0);
+            $physical_addr->ischanged(1);
+            $mailing_addr->isnew(1);
+            $mailing_addr->ischanged(0);
+        } elsif ($physical_addr->id ne $mailing_addr->id && $physical_addr->street1 eq $mailing_addr->street1) {
+            # if there were previously 2 addresses, but there is only one address now, delete excess entry
+            $physical_addr->isnew(0);
+            $physical_addr->ischanged(1);
+            $mailing_addr->isnew(0);
+            $mailing_addr->ischanged(0);
+            $mailing_addr->isdeleted(1);
+        } else {
+            # otherwise, update existing entries
+            $physical_addr->isnew(0);
+            $physical_addr->ischanged(1);
+            $mailing_addr->isnew(0);
+            $mailing_addr->ischanged(1);
+        }
 
         if ($field_info->{required} && !$val) {
             my $msg = "Value required for field: '$field'";
@@ -800,7 +814,6 @@ sub update_addresses {
             (my $col_field = $field) =~ s/mailing_//g;
             $mailing_addr->$col_field($val) if $val;
         }
-
     }
 
     # exit if there were any errors above.