threshold rate import, RT#75897
[freeside.git] / bin / rate-threshold_tollfree.import
1 #!/usr/bin/perl
2
3 use strict;
4 use Text::CSV;
5 use FS::Misc::Getopt;
6 use FS::Record qw( dbh );
7
8 getopts('');
9
10 $FS::UID::AutoCommit = 0;
11 my $dbh = dbh;
12
13 my $file = shift or usage();
14 open my $in, '<', $file or die "$file: $!\n";
15 my $csv = Text::CSV->new({ binary => 1, auto_diag => 2 });
16 # set header row
17 $csv->column_names($csv->getline($in));
18
19 #my $error;
20
21 my $rate = new FS::rate {
22   'ratename' => 'Toll-Free base rates',
23 };
24 my $r_error = $rate->insert;
25 die $r_error if $r_error;
26 my $ratenum = $rate->ratenum;
27
28 my %rate_region = ();
29
30 my $rp = 0;
31
32 while (my $row = $csv->getline_hr($in)) {
33   print $csv->string;
34
35   my $rate_region = new FS::rate_region {
36     'regionname' => $row->{'Originating Location'},
37   };
38   my $rr_error = $rate_region->insert;
39   die $rr_error if $rr_error;
40
41   my $rate_detail = new FS::rate_detail {
42     'ratenum'         => $ratenum,
43     'dest_regionnum'  => $rate_region->regionnum,
44     'conn_charge'     => ( ( $row->{'minimum seconds'} / 60 ) * $row->{'Dedicated Carrier (in US)'} ),
45     'conn_sec'        => $row->{'minimum seconds'},
46     'min_charge'      => $row->{'Dedicated Carrier (in US)'},
47     'sec_granularity' => $row->{"add'l sec increment"},
48     'min_included'    => 0,
49   };
50   my $rd_error = $rate_detail->insert;
51   die $rd_error if $rd_error;
52
53   my $cc = $row->{'Country Code'};
54   my $npa = '';
55
56   if ( $row->{'World Zone'} eq '1' ) {
57     $npa = $cc;
58     $cc = '1';
59   }
60
61   my $rate_prefix = new FS::rate_prefix {
62     'regionnum'   => $rate_region->regionnum,
63     'countrycode' => $cc,
64     'npa'         => $npa,
65   };
66   my $rp_error = $rate_prefix->insert;
67   die $rp_error if $rp_error;
68   
69   $rp++;
70 }
71
72 dbh->commit;
73 print "Inserted $rp regions\n";
74
75 1;
76
77 sub usage {
78   die "Usage: rate-threshold_tollfree.import <user> <file>.csv\n\n";
79 }
80