[freeside-commits] branch master updated. b886b44dfe4c319987510ba9d3c3cb10a30fb2cf
Ivan
ivan at 420.am
Tue Apr 4 07:07:17 PDT 2017
The branch, master has been updated
via b886b44dfe4c319987510ba9d3c3cb10a30fb2cf (commit)
from e223601ee73eee830729052d221b2af3d0d2233b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit b886b44dfe4c319987510ba9d3c3cb10a30fb2cf
Author: Ivan Kohler <ivan at freeside.biz>
Date: Tue Apr 4 07:07:16 2017 -0700
rate import for login, RT#72091
diff --git a/bin/rate-login.import b/bin/rate-login.import
new file mode 100755
index 0000000..a77d0bd
--- /dev/null
+++ b/bin/rate-login.import
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+
+use strict;
+use Text::CSV;
+use FS::Misc::Getopt;
+use FS::Record qw( dbh );
+
+# default is to charge per second; edit this if needed
+my $granularity = 1;
+
+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' => 'INTERNATIONAL',
+};
+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 = $row->{country}.'|'.$row->{rate};
+
+ unless ( $rate_region{$key} ) {
+
+ my $rate_region = new FS::rate_region {
+ 'regionname' => $row->{country},
+ };
+ 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,
+ 'min_charge' => $row->{rate},
+ 'sec_granularity' => $granularity,
+ 'min_included' => 0,
+ };
+ my $rd_error = $rate_detail->insert;
+ die $rd_error if $rd_error;
+
+ $rr++;
+
+ }
+
+ my($countrycode, $npa);
+ if ( $row->{prefix} =~ /^(2[078]|3[0123469]|4[01356789]|5[12345678]|6[0123456]|7[67]|7|8[123469]|9[0123458])(\d*)$/ ) { #https://en.wikipedia.org/wiki/List_of_country_calling_codes
+ ( $countrycode, $npa ) = ( $1, $2 );
+ } elsif ( length($row->{prefix}) <= 3 ) {
+ $countrycode = $row->{prefix};
+ $npa = '';
+ } else {
+ $countrycode = substr($row->{prefix}, 0, 3);
+ $npa = substr($row->{prefix}, 3);
+ }
+
+ my $rate_prefix = new FS::rate_prefix {
+ 'regionnum' => $rate_region{$key}->regionnum,
+ 'countrycode' => $countrycode,
+ '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-login.import <user> <file>.csv\n\n";
+}
+
-----------------------------------------------------------------------
Summary of changes:
bin/rate-login.import | 93 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 93 insertions(+)
create mode 100755 bin/rate-login.import
More information about the freeside-commits
mailing list