X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fgeocode_Mixin.pm;h=c1b9f865b7cde9f3b4d31c145cf8a5c519c4dd26;hb=b79a8cb932946c849328a3c117c35821d9d21e66;hp=d784b5709c8b214e571d1b7aea58859c270f3978;hpb=ad17d8651adb39fdef45f509490a6b2c6eac8301;p=freeside.git diff --git a/FS/FS/geocode_Mixin.pm b/FS/FS/geocode_Mixin.pm index d784b5709..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 @@ -94,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$_"; @@ -134,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( { @@ -147,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; }