X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fgeocode_Mixin.pm;h=c1b9f865b7cde9f3b4d31c145cf8a5c519c4dd26;hb=3c54c844c665ed108c7892a154fd3972fab1f3e5;hp=c153914f0ee072b122c1969f9eda767636c07e9b;hpb=52af11086f11adc4228a68047bcfa1552650d1d5;p=freeside.git diff --git a/FS/FS/geocode_Mixin.pm b/FS/FS/geocode_Mixin.pm index c153914f0..c1b9f865b 100644 --- a/FS/FS/geocode_Mixin.pm +++ b/FS/FS/geocode_Mixin.pm @@ -38,7 +38,8 @@ and other location fields. =item location_hash Returns a list of key/value pairs, with the following keys: address1, address2, -city, county, state, zip, country. The shipping address is used if present. +city, county, state, zip, country, geocode, location_type, location_number, +location_kind. The shipping address is used if present. =cut @@ -51,7 +52,8 @@ sub location_hash { map { my $method = ($_ eq 'geocode') ? $_ : $prefix.$_; $_ => $self->get($method); } - qw( address1 address2 city county state zip country geocode ); + qw( address1 address2 city county state zip country geocode + location_type location_number location_kind ); } =item location_label [ OPTION => VALUE ... ] @@ -93,6 +95,26 @@ sub location_label { if $self->$method; $notfirst++; } + + my $lt = $self->get($prefix.'location_type'); + if ( $lt ) { + my %location_type; + if ( 1 ) { #ikano, switch on via config + { no warnings 'void'; + eval { 'use FS::part_export::ikano;' }; + die $@ if $@; + } + %location_type = FS::part_export::ikano->location_types; + } else { + %location_type = (); #? + } + + $line .= ' '.&$escape( $location_type{$lt} || $lt ); + } + + $line .= ' '. &$escape($self->get($prefix.'location_number')) + if $self->get($prefix.'location_number'); + $notfirst = 0; foreach (qw ( city county state zip ) ) { my $method = "$prefix$_"; @@ -133,7 +155,8 @@ sub geocode { $zip ||= ''; $plus4 ||= ''; #CCH specific location stuff - my $extra_sql = "AND plus4lo <= '$plus4' AND plus4hi >= '$plus4'"; + my $extra_sql = $plus4 ? "AND plus4lo <= '$plus4' AND plus4hi >= '$plus4'" + : ''; my @cust_tax_location = qsearch( { @@ -146,6 +169,11 @@ sub geocode { $geocode = $cust_tax_location[0]->geocode if scalar(@cust_tax_location); + warn "WARNING: customer ". $self->custnum. + ": multiple locations for zip ". $self->get("${prefix}zip"). + "; using arbitrary geocode $geocode\n" + if scalar(@cust_tax_location) > 1; + $geocode; }