fix geocode guessing w/a 5 digit zip, RT#13595
[freeside.git] / FS / FS / geocode_Mixin.pm
index cf45a92..1e92ddc 100644 (file)
@@ -5,6 +5,7 @@ use vars qw( $DEBUG $me );
 use Carp;
 use Locale::Country;
 use FS::Record qw( qsearchs qsearch );
+use FS::Conf;
 use FS::cust_pkg;
 use FS::cust_location;
 use FS::cust_tax_location;
@@ -82,7 +83,7 @@ sub location_label {
   my $ds = $opt{double_space} || '  ';
   my $line = '';
   my $cydefault = 
-    $opt{'countrydefault'} || FS::conf->new->config('countrydefault') || 'US';
+    $opt{'countrydefault'} || FS::Conf->new->config('countrydefault') || 'US';
   my $prefix = $self->has_ship_address ? 'ship_' : '';
 
   my $notfirst = 0;
@@ -122,7 +123,7 @@ sub geocode {
   return $geocode if $geocode;
 
   my $prefix =
-   ( FS::conf->new->exists('tax-ship_address') && $self->has_ship_address )
+   ( FS::Conf->new->exists('tax-ship_address') && $self->has_ship_address )
    ? 'ship_'
    : '';
 
@@ -132,7 +133,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( {
@@ -145,6 +147,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;
 }