[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