diff options
author | Ivan Kohler <ivan@freeside.biz> | 2017-09-22 10:26:29 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2017-09-22 10:26:29 -0700 |
commit | 28653a47f8288302d2121b80a60f3375f99fa481 (patch) | |
tree | 1420056d6506564a409376b61a09cc652b606d83 /FS/FS/tax_rate_location.pm | |
parent | 11b7e1145d378aea6180d110becb23219350d397 (diff) |
compliance solutions, RT#77676
Diffstat (limited to 'FS/FS/tax_rate_location.pm')
-rw-r--r-- | FS/FS/tax_rate_location.pm | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/FS/FS/tax_rate_location.pm b/FS/FS/tax_rate_location.pm index 0377a7d..ad3618a 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 |