From 925fdb9c40a4f852ec400dea807ac8f740f62284 Mon Sep 17 00:00:00 2001 From: Terran McCanna Date: Wed, 23 Nov 2022 13:56:49 -0500 Subject: [PATCH] Online Renewal - Progress on updating addresses (still issues with checkmarks when changing from 1 to 2 addresses or from 2 to 1 address) Signed-off-by: Terran McCanna --- .../perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm | 43 ++++++++++++++-------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm index c62f60978c..4e61826463 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Ecard.pm @@ -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. -- 2.11.0