From: Ivan Kohler Date: Tue, 27 Feb 2018 22:38:47 +0000 (-0800) Subject: duplicate tax rates from one state to others, RT#79635 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=6635b3ee826a8dcd8755c4a1277f3ae268889f1e duplicate tax rates from one state to others, RT#79635 --- 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; +