stretch
[freeside.git] / bin / update-rates
1 #!/usr/bin/perl
2
3 use FS::UID 'adminsuidsetup';
4 use FS::Record qw(dbh qsearch qsearchs);
5 use FS::tax_class;
6 use FS::tax_rate;
7 use strict;
8
9 adminsuidsetup('ivan');
10 $FS::UID::AutoCommit = 0;
11 my @location = ( geocode => { op => 'like', value => '24%' } );
12
13 # convert TELECOMM RELAY SYSTEMS SURCHARGE:CENTREX LINES
14 # to      TELECOMM RELAY SYSTEMS SURCHARGE:TELECOMMUNICATIONS
15 my $old_taxclassnum = qsearchs('tax_class', { 'taxclass' => '09:35' })->taxclassnum;
16 my $new_taxclassnum = qsearchs('tax_class', { 'taxclass' => '09:00' })->taxclassnum;
17 my $error;
18
19 my @bindings = qsearch('part_pkg_taxrate', {
20   'taxclassnum' => $old_taxclassnum,
21   @location
22 });
23 print "remapping ".scalar(@bindings)." tax rate bindings.\n";
24 foreach my $part_pkg_taxrate (@bindings) {
25   $part_pkg_taxrate->set('taxclassnum', $new_taxclassnum);
26   $error = $part_pkg_taxrate->replace;
27   die $part_pkg_taxrate->pkgtaxratenum .": $error" if $error;
28 }
29
30 # change the fee to 0.05.
31 my @tax_rates = qsearch('tax_rate', {
32   taxclassnum => $new_taxclassnum,
33   @location
34 });
35 print "changing rate on ".scalar(@tax_rates)." tax rate definitions.\n";
36 foreach my $tax_rate (@tax_rates) {
37   $tax_rate->set('fee', 0.05);
38   my $error = $tax_rate->replace;
39   die $tax_rate->taxnum . ": $error\n" if $error;
40 }
41
42 dbh->commit;