diff options
author | Ivan Kohler <ivan@freeside.biz> | 2018-02-27 14:38:47 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2018-02-27 14:38:47 -0800 |
commit | 6635b3ee826a8dcd8755c4a1277f3ae268889f1e (patch) | |
tree | f057317ba4edd6d9f5898c30ae3b32f68adbff3d /bin | |
parent | 3b927eb362d26b62d3dc399e6a4eebea064578b6 (diff) |
duplicate tax rates from one state to others, RT#79635
Diffstat (limited to 'bin')
-rw-r--r-- | bin/copy-cust_main_county | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/bin/copy-cust_main_county b/bin/copy-cust_main_county new file mode 100644 index 000000000..1a15e84f8 --- /dev/null +++ b/bin/copy-cust_main_county @@ -0,0 +1,67 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use FS::UID qw( adminsuidsetup dbh ); +use FS::Record qw( qsearch ); +use FS::cust_main_county; + +adminsuidsetup shift or die "Usage: copy-cust_main_county username\n"; + +my $from_state = 'XX'; #XXX + +$FS::UID::AutoCommit = 0; + +my @from_cust_main_county = qsearch({ + 'table' => 'cust_main_county', + 'hashref' => { 'state' => $from_state, + 'country' => 'US', + }, + 'extra_sql' => "AND taxname LIKE 'FED%'", +}); + +#select distinct state from cust_main_county where country = 'US' +#and then exclude the one other state? +#my @to_states = (); +#no, just find the target records directly. there should be one per state? +my @to_cust_main_county = qsearchs({ + 'table' => 'cust_main_county', + 'hashref' => { 'taxclass' => '', + 'country' => 'US', + 'taxname' => '', + 'tax' => 0, + }, +}); + +foreach my $to_cust_main_county (@to_cust_main_county) { + + foreach my $from_cust_main_county (@from_cust_main_county) { + + my $new = new FS::cust_main_county { + 'state' => $to_cust_main_county->state, + 'country' => 'US', + map { $_ => $from_cust_main_county->$_ } + qw( tax taxclass taxname setuptax recurtax ), + + }; + my $error = $new->insert; + if ( $error ) { + dbh->rollback; + die $error; + } + + } + + my $error = $to_cust_main_county->delete; + if ( $error ) { + dbh->rollback; + die $error; + } + +} + +dbh->rollback or die dbh->errstr; +#dbh->commit or die dbh->errstr; + +1; + |