summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2017-09-21 15:52:14 -0700
committerIvan Kohler <ivan@freeside.biz>2017-09-21 15:52:14 -0700
commit11b7e1145d378aea6180d110becb23219350d397 (patch)
tree21da7af6e22516e04727f1d3080d9eae8704f5c6 /FS
parentb3be12cf4ebf8d160b3531153eaaf09bf011f8d0 (diff)
compliance solutions, RT#77676
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/TaxEngine/compliance_solutions.pm9
-rw-r--r--FS/FS/Upgrade.pm4
-rw-r--r--FS/FS/tax_rate.pm8
-rw-r--r--FS/FS/tax_rate_location.pm16
4 files changed, 32 insertions, 5 deletions
diff --git a/FS/FS/TaxEngine/compliance_solutions.pm b/FS/FS/TaxEngine/compliance_solutions.pm
index 92ca2ce..c21234e 100644
--- a/FS/FS/TaxEngine/compliance_solutions.pm
+++ b/FS/FS/TaxEngine/compliance_solutions.pm
@@ -263,7 +263,7 @@ sub make_taxlines {
# create a tax rate location if there isn't one yet
my $taxname = $tax_data->{descript};
my $tax_rate = FS::tax_rate->new({
- data_vendor => 'compliance solutions',
+ data_vendor => 'compliance_solutions',
taxname => $taxname,
taxclassnum => '',
taxauth => $tax_data->{'taxauthtype'}, # federal / state / city / district
@@ -277,13 +277,14 @@ sub make_taxlines {
$tax_rate = $tax_rate->replace_old;
my $tax_rate_location = FS::tax_rate_location->new({
- data_vendor => 'compliance solutions',
+ data_vendor => 'compliance_solutions',
+ geocode => $tax_data->{'geocode'},
state => $tax_data->{'state'},
country => $tax_data->{'country'},
- geocode => $tax_data->{'geocode'},
});
$error = $tax_rate_location->find_or_insert;
- die "error inserting tax_rate_location record: $error\n"
+ die 'error inserting tax_rate_location record for '. $tax_data->{state}.
+ '/'. $tax_data->{country}. ' ('. $tax_data->{'geocode'}. "): $error\n"
if $error;
$tax_rate_location = $tax_rate_location->replace_old;
diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index 5528906..1238110 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -503,6 +503,10 @@ sub upgrade_data {
#mark certain taxes as system-maintained,
# and fix whitespace
'cust_main_county' => [],
+
+ #'compliance solutions' -> 'compliance_solutions'
+ 'tax_rate' => [],
+ 'tax_rate_location' => [],
;
\%hash;
diff --git a/FS/FS/tax_rate.pm b/FS/FS/tax_rate.pm
index 5416ff5..8bc0c6e 100644
--- a/FS/FS/tax_rate.pm
+++ b/FS/FS/tax_rate.pm
@@ -2335,7 +2335,15 @@ EOF
}
+sub _upgrade_data {
+ my $class = shift;
+ my $sql = "UPDATE tax_rate SET data_vendor = 'compliance_solutions' WHERE data_vendor = 'compliance solutions'";
+
+ my $sth = dbh->prepare($sql) or die $DBI::errstr;
+ $sth->execute() or die $sth->errstr;
+
+}
=back
diff --git a/FS/FS/tax_rate_location.pm b/FS/FS/tax_rate_location.pm
index d9646e4..0377a7d 100644
--- a/FS/FS/tax_rate_location.pm
+++ b/FS/FS/tax_rate_location.pm
@@ -118,10 +118,14 @@ 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->$_ } qw( data_vendor geocode ) ),
+ ( map { $_ => $self->$_ } @unique ),
},
)
unless $self->disabled;
@@ -392,6 +396,16 @@ sub batch_import {
}
+sub _upgrade_data {
+ my $class = shift;
+
+ my $sql = "UPDATE tax_rate_location SET data_vendor = 'compliance_solutions' WHERE data_vendor = 'compliance solutions'";
+
+ my $sth = dbh->prepare($sql) or die $DBI::errstr;
+ $sth->execute() or die $sth->errstr;
+
+}
+
=head1 BUGS
Currently somewhat specific to CCH supplied data.