$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');
$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');
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'";
(my $col_field = $field) =~ s/mailing_//g;
$mailing_addr->$col_field($val) if $val;
}
-
}
# exit if there were any errors above.