summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2018-02-27 14:38:50 -0800
committerIvan Kohler <ivan@freeside.biz>2018-02-27 14:38:50 -0800
commit6a11197ad8040edeace3132ff40670073d5557f7 (patch)
tree6a3b5ab1cb85f9521d1add69320810245c7deda6 /bin
parent745724e03e6dcff6c8d07027d154dbcb289cd527 (diff)
duplicate tax rates from one state to others, RT#79635
Diffstat (limited to 'bin')
-rw-r--r--bin/copy-cust_main_county67
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 0000000..1a15e84
--- /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;
+