X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=f49eb69341170c33abf6c711d34f5947fa1e2c3f;hp=945b4f4c03e3f623f239b2c399fbc91a7df22257;hb=b429a422185206c645c84ec1c3540494d336b943;hpb=b0329dafd35e0296ec61fef4c35a687ff8866764 diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 945b4f4c0..f49eb6934 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1481,6 +1481,29 @@ sub replace { && length($self->get($pre.'zip')) >= 10; } + for my $pre ( grep $old->get($_.'coord_auto'), ( '', 'ship_' ) ) { + + $self->set($pre.'coord_auto', '') && next + if $self->get($pre.'latitude') && $self->get($pre.'longitude') + && ( $self->get($pre.'latitude') != $old->get($pre.'latitude') + || $self->get($pre.'longitude') != $old->get($pre.'longitude') + ); + + $self->set_coord($pre) + if $old->get($pre.'address1') ne $self->get($pre.'address1') + || $old->get($pre.'city') ne $self->get($pre.'city') + || $old->get($pre.'state') ne $self->get($pre.'state') + || $old->get($pre.'country') ne $self->get($pre.'country'); + + } + + $self->set_coord + if ! $self->coord_auto && ! $self->latitude && ! $self->longitude; + + $self->set_coord('ship_') + if $self->has_ship_address && ! $self->ship_coord_auto + && ! $self->ship_latitude && ! $self->ship_longitude; + local($ignore_expired_card) = 1 if $old->payby =~ /^(CARD|DCRD)$/ && $self->payby =~ /^(CARD|DCRD)$/ @@ -1696,6 +1719,9 @@ sub check { || $self->ut_textn('county') || $self->ut_textn('state') || $self->ut_country('country') + || $self->ut_coordn('latitude') + || $self->ut_coordn('longitude') + || $self->ut_enum('coord_auto', [ '', 'Y' ]) || $self->ut_anything('comments') || $self->ut_numbern('referral_custnum') || $self->ut_textn('stateid') @@ -1710,6 +1736,9 @@ sub check { || $self->ut_enum('locale', [ '', FS::Locales->locales ]) ; + $self->set_coord + unless $import || ($self->latitude && $self->longitude); + #barf. need message catalogs. i18n. etc. $error .= "Please select an advertising source." if $error =~ /^Illegal or empty \(numeric\) refnum: /; @@ -1807,9 +1836,15 @@ sub check { || $self->ut_textn('ship_county') || $self->ut_textn('ship_state') || $self->ut_country('ship_country') + || $self->ut_coordn('ship_latitude') + || $self->ut_coordn('ship_longitude') + || $self->ut_enum('ship_coord_auto', [ '', 'Y' ] ) ; return $error if $error; + $self->set_coord('ship_') + unless $import || ($self->ship_latitude && $self->ship_longitude); + #false laziness with above unless ( qsearchs('cust_main_county', { 'country' => $self->ship_country, @@ -2079,6 +2114,7 @@ Returns a list of fields which have ship_ duplicates. sub addr_fields { qw( last first company address1 address2 city county state zip country + latitude longitude daytime night fax mobile ); } @@ -2500,8 +2536,9 @@ sub batch_card { 'custnum' => $self->custnum, } ); - foreach (qw( address1 address2 city state zip country payby payinfo paydate - payname )) { + foreach (qw( address1 address2 city state zip country latitude longitude + payby payinfo paydate payname )) + { $options{$_} = '' unless exists($options{$_}); }