From b47863eafb08949924bf24eb77c90f0366770389 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Mon, 22 May 2017 10:05:23 -0700 Subject: [PATCH] threshold rate import, RT#75897 --- bin/rate-threshold.import | 89 ++++++++++++++++++++++++++++++++++++++ bin/rate-threshold_tollfree.import | 80 ++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100755 bin/rate-threshold.import create mode 100755 bin/rate-threshold_tollfree.import diff --git a/bin/rate-threshold.import b/bin/rate-threshold.import new file mode 100755 index 000000000..ebc2f8c75 --- /dev/null +++ b/bin/rate-threshold.import @@ -0,0 +1,89 @@ +#!/usr/bin/perl + +use strict; +use Text::CSV; +use FS::Misc::Getopt; +use FS::Record qw( dbh ); + +getopts(''); + +$FS::UID::AutoCommit = 0; +my $dbh = dbh; + +my $file = shift or usage(); +open my $in, '<', $file or die "$file: $!\n"; +my $csv = Text::CSV->new({ binary => 1, auto_diag => 2 }); +# set header row +$csv->column_names($csv->getline($in)); + +#my $error; + +my $rate = new FS::rate { + 'ratename' => 'Long Distance base rates', +}; +my $r_error = $rate->insert; +die $r_error if $r_error; +my $ratenum = $rate->ratenum; + +my %rate_region = (); + +my( $rr, $rp ) = (0,0); + +while (my $row = $csv->getline_hr($in)) { + print $csv->string; + + my $key = join('|', map $row->{$_}, 'Country Code', 'Destination Name', 'Rate Per Minute (USD)' ); + + unless ( $rate_region{$key} ) { + + my $rate_region = new FS::rate_region { + 'regionname' => $row->{'Destination Name'}, + }; + my $rr_error = $rate_region->insert; + die $rr_error if $rr_error; + $rate_region{$key} = $rate_region; + + my $rate_detail = new FS::rate_detail { + 'ratenum' => $ratenum, + 'dest_regionnum' => $rate_region->regionnum, + 'conn_charge' => ( ( $row->{'minimum seconds'} / 60 ) * $row->{'Rate Per Minute (USD)'} ), + 'conn_sec' => $row->{'minimum seconds'}, + 'min_charge' => $row->{'Rate Per Minute (USD)'}, + 'sec_granularity' => $row->{"add'l sec increment"}, + 'min_included' => 0, + }; + my $rd_error = $rate_detail->insert; + die $rd_error if $rd_error; + + $rr++; + + } + + my $cc = $row->{'Country Code'}; + my $npa = $row->{'Digits'}; + + if ( $cc =~ /^1(\d{3})$/ ) { + $cc = '1'; + $npa = $1.$npa; + } + + my $rate_prefix = new FS::rate_prefix { + 'regionnum' => $rate_region{$key}->regionnum, + 'countrycode' => $cc, + 'npa' => $npa, + }; + my $rp_error = $rate_prefix->insert; + die $rp_error if $rp_error; + + $rp++; +} + +dbh->commit; +print "Inserted $rp prefixes in $rr regions\n"; + +1; + +sub usage { + die "Usage: rate-threshold.import .csv\n\n"; +} + diff --git a/bin/rate-threshold_tollfree.import b/bin/rate-threshold_tollfree.import new file mode 100755 index 000000000..3fa9ced29 --- /dev/null +++ b/bin/rate-threshold_tollfree.import @@ -0,0 +1,80 @@ +#!/usr/bin/perl + +use strict; +use Text::CSV; +use FS::Misc::Getopt; +use FS::Record qw( dbh ); + +getopts(''); + +$FS::UID::AutoCommit = 0; +my $dbh = dbh; + +my $file = shift or usage(); +open my $in, '<', $file or die "$file: $!\n"; +my $csv = Text::CSV->new({ binary => 1, auto_diag => 2 }); +# set header row +$csv->column_names($csv->getline($in)); + +#my $error; + +my $rate = new FS::rate { + 'ratename' => 'Toll-Free base rates', +}; +my $r_error = $rate->insert; +die $r_error if $r_error; +my $ratenum = $rate->ratenum; + +my %rate_region = (); + +my $rp = 0; + +while (my $row = $csv->getline_hr($in)) { + print $csv->string; + + my $rate_region = new FS::rate_region { + 'regionname' => $row->{'Originating Location'}, + }; + my $rr_error = $rate_region->insert; + die $rr_error if $rr_error; + + my $rate_detail = new FS::rate_detail { + 'ratenum' => $ratenum, + 'dest_regionnum' => $rate_region->regionnum, + 'conn_charge' => ( ( $row->{'minimum seconds'} / 60 ) * $row->{'Dedicated Carrier (in US)'} ), + 'conn_sec' => $row->{'minimum seconds'}, + 'min_charge' => $row->{'Dedicated Carrier (in US)'}, + 'sec_granularity' => $row->{"add'l sec increment"}, + 'min_included' => 0, + }; + my $rd_error = $rate_detail->insert; + die $rd_error if $rd_error; + + my $cc = $row->{'Country Code'}; + my $npa = ''; + + if ( $row->{'World Zone'} eq '1' ) { + $npa = $cc; + $cc = '1'; + } + + my $rate_prefix = new FS::rate_prefix { + 'regionnum' => $rate_region->regionnum, + 'countrycode' => $cc, + 'npa' => $npa, + }; + my $rp_error = $rate_prefix->insert; + die $rp_error if $rp_error; + + $rp++; +} + +dbh->commit; +print "Inserted $rp regions\n"; + +1; + +sub usage { + die "Usage: rate-threshold_tollfree.import .csv\n\n"; +} + -- 2.11.0