[freeside-commits] branch FREESIDE_4_BRANCH updated. e543f90d7744c5f06b1fa78c5ec0d9375df79bd2

Ivan ivan at 420.am
Tue Apr 4 07:07:19 PDT 2017


The branch, FREESIDE_4_BRANCH has been updated
       via  e543f90d7744c5f06b1fa78c5ec0d9375df79bd2 (commit)
      from  30899b6b9d22646ec43e381b53b39f465f04c76a (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 e543f90d7744c5f06b1fa78c5ec0d9375df79bd2
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue Apr 4 07:07:18 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