$notfirst++;
}
- my %location_type;
- if ( 1 ) { #ikano, switch on via config
- { no warnings 'void';
- eval { 'use FS::part_export::ikano;' };
- die $@ if $@;
+ 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 = (); #?
}
- %location_type = FS::part_export::ikano->location_types;
- } else {
- %location_type = (); #?
+
+ $line .= ' '.&$escape( $location_type{$lt} || $lt );
}
- $line .= ' '. &$escape( $location_type{ $self->get($prefix.'location_type') })
- if $self->get($prefix.'location_type');
$line .= ' '. &$escape($self->get($prefix.'location_number'))
if $self->get($prefix.'location_number');
$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( {
$geocode = $cust_tax_location[0]->geocode
if scalar(@cust_tax_location);
- $geocode;
-}
-
-=item alternize
-
-Attempts to parse data for location_type and location_number from address1
-and address2.
-
-=cut
-
-sub alternize {
- my $self = shift;
- my $prefix = $self->has_ship_address ? 'ship_' : '';
-
- return '' if $self->get($prefix.'location_type')
- || $self->get($prefix.'location_number');
-
- my %parse;
- if ( 1 ) { #ikano, switch on via config
- { no warnings 'void';
- eval { 'use FS::part_export::ikano;' };
- die $@ if $@;
- }
- %parse = FS::part_export::ikano->location_types_parse;
- } else {
- %parse = (); #?
- }
-
- foreach my $from ('address1', 'address2') {
- foreach my $parse ( keys %parse ) {
- my $value = $self->get($prefix.$from);
- if ( $value =~ s/(^|\W+)$parse\W+(\w+)\W*$//i ) {
- $self->set($prefix.'location_type', $parse{$parse});
- $self->set($prefix.'location_number', $2);
- $self->set($prefix.$from, $value);
- return '';
- }
- }
- }
+ warn "WARNING: customer ". $self->custnum.
+ ": multiple locations for zip ". $self->get("${prefix}zip").
+ "; using arbitrary geocode $geocode\n"
+ if scalar(@cust_tax_location) > 1;
- #nothing matched, no changes
- $self->get($prefix.'address2')
- ? "Can't parse unit type and number from ${prefix}address2"
- : '';
+ $geocode;
}
=back