X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Ftax_rate_location.pm;h=ad3618a9835dd347f5012318f724cb420e992082;hp=0377a7d0407270fd9ced99c43b4aeed546343225;hb=5f7c4a6025b9e3a49bee72dbc06cac37a45e6f10;hpb=147c94865852a93bf192ef15e931e456d487b69b diff --git a/FS/FS/tax_rate_location.pm b/FS/FS/tax_rate_location.pm index 0377a7d04..ad3618a98 100644 --- a/FS/FS/tax_rate_location.pm +++ b/FS/FS/tax_rate_location.pm @@ -118,20 +118,12 @@ sub check { ; return $error if $error; - my @unique = qw( data_vendor geocode ); - push @unique, qw( state country ) - if $self->data_vendor eq 'compliance_solutions'; - - my $t; - $t = qsearchs( 'tax_rate_location', - { disabled => '', - ( map { $_ => $self->$_ } @unique ), - }, - ) + my $t = ''; + $t = $self->existing_search unless $self->disabled; $t = $self->by_key( $self->taxratelocationnum ) - if ( !$t && $self->taxratelocationnum ); + if !$t && $self->taxratelocationnum; return "geocode ". $self->geocode. " already in use for this vendor" if ( $t && $t->taxratelocationnum != $self->taxratelocationnum ); @@ -157,11 +149,7 @@ record. sub find_or_insert { my $self = shift; - my $existing = qsearchs('tax_rate_location', { - disabled => '', - data_vendor => $self->data_vendor, - geocode => $self->geocode - }); + my $existing = $self->existing_search; if ($existing) { my $update = 0; foreach (qw(city county state country)) { @@ -180,6 +168,20 @@ sub find_or_insert { } } +sub existing_search { + my $self = shift; + + my @unique = qw( data_vendor geocode ); + push @unique, qw( state country ) + if $self->data_vendor eq 'compliance_solutions'; + + qsearchs( 'tax_rate_location', + { disabled => '', + map { $_ => $self->$_ } @unique + } + ); +} + =back =head1 CLASS METHODS