use strict;
use base qw( FS::Record );
use FS::Record qw( qsearch qsearchs dbh );
+use FS::Misc qw( csv_from_fixed );
=head1 NAME
;
return $error if $error;
- my $t = qsearchs( 'tax_rate_location',
- { map { $_ => $self->$_ } qw( data_vendor geocode ) },
- );
+ my $t;
+ $t = qsearchs( 'tax_rate_location',
+ { disabled => '',
+ ( map { $_ => $self->$_ } qw( data_vendor geocode ) ),
+ },
+ )
+ unless $self->disabled;
- return "geocode already in use for this vendor"
+ $t = $self->by_key( $self->taxratelocationnum )
+ if ( !$t && $self->taxratelocationnum );
+
+ return "geocode ". $self->geocode. " already in use for this vendor"
if ( $t && $t->taxratelocationnum != $self->taxratelocationnum );
return "may only be disabled"
=back
+=head1 CLASS METHODS
+
+=item location_sql KEY => VALUE, ...
+
+Returns an SQL fragment identifying matching tax_rate_location /
+cust_bill_pkg_tax_rate_location records.
+
+Parameters are county, state, city and locationtaxid
+
+=cut
+
+sub location_sql {
+ my($class, %param) = @_;
+
+ my %pn = (
+ 'city' => 'tax_rate_location.city',
+ 'county' => 'tax_rate_location.county',
+ 'state' => 'tax_rate_location.state',
+ 'locationtaxid' => 'cust_bill_pkg_tax_rate_location.locationtaxid',
+ );
+
+ my %ph = map { $pn{$_} => dbh->quote($param{$_}) } keys %pn;
+
+ join( ' AND ',
+ map { "( $_ = $ph{$_} OR $ph{$_} = '' AND $_ IS NULL)" } keys %ph
+ );
+
+}
+
+=back
+
=head1 SUBROUTINES
=over 4
if (exists($hash->{'actionflag'}) && $hash->{'actionflag'} eq 'D') {
delete($hash->{actionflag});
- $hash->{deleted} = '';
+ $hash->{disabled} = '';
my $tax_rate_location = qsearchs('tax_rate_location', $hash);
return "Can't find tax_rate_location to delete: ".
join(" ", map { "$_ => ". $hash->{$_} } @fields)
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return "can't insert tax_rate for $line: $error";
+ return "can't insert tax_rate_location for $line: $error";
}
}