my $geocode = $self->get('geocode'); #XXX only one data_vendor for geocode
return $geocode if $geocode;
- my $prefix =
- ( FS::Conf->new->exists('tax-ship_address') && $self->has_ship_address )
- ? 'ship_'
- : '';
+ if ( $self->isa('FS::cust_main') ) {
+ warn "WARNING: FS::cust_main->geocode deprecated";
+
+ # do the best we can
+ my $m = FS::Conf->new->exists('tax-ship_address') ? 'ship_location'
+ : 'bill_location';
+ my $location = $self->$m or return '';
+ return $location->geocode($data_vendor);
+ }
- my($zip,$plus4) = split /-/, $self->get("${prefix}zip")
+ my($zip,$plus4) = split /-/, $self->get('zip')
if $self->country eq 'US';
$zip ||= '';
if scalar(@cust_tax_location);
warn "WARNING: customer ". $self->custnum.
- ": multiple locations for zip ". $self->get("${prefix}zip").
+ ": multiple locations for zip ". $self->get("zip").
"; using arbitrary geocode $geocode\n"
if scalar(@cust_tax_location) > 1;
my $class = shift;
my $id = shift;
+ local $DEBUG = 1;
+
eval "use FS::Misc::Geo qw(get_district); use FS::Conf; use $class;";
die $@ if $@;
die "$class has no location data" if !$class->can('location_hash');
my %hash = map { $_ => $tax_info->{$_} }
qw( district city county state country );
+ $hash{'taxname'} = '';
+
my $old = qsearchs('cust_main_county', \%hash);
if ( $old ) {
my $new = new FS::cust_main_county { $old->hash, %$tax_info };