[freeside-commits] branch master updated. a69e2845298b954be578f70909aa4a17ef441cae

Jeremy Davis jeremyd at 420.am
Thu Mar 5 06:56:49 PST 2015


The branch, master has been updated
       via  a69e2845298b954be578f70909aa4a17ef441cae (commit)
      from  b0e67356e3a16101eb06a12e2a48cc6dc4233c29 (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 a69e2845298b954be578f70909aa4a17ef441cae
Author: Jeremy Davis <jeremyd at freeside.biz>
Date:   Wed Mar 4 11:25:41 2015 -0500

    Ticket #33784 freeside-cdr-mysql

diff --git a/FS/bin/freeside-cdr-mysql b/FS/bin/freeside-cdr-mysql
new file mode 100755
index 0000000..608a8dc
--- /dev/null
+++ b/FS/bin/freeside-cdr-mysql
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+use strict;
+use vars qw( $DEBUG );
+use Date::Parse 'str2time';
+use Date::Format 'time2str';
+use FS::UID qw(adminsuidsetup dbh);
+use FS::cdr;
+use DBI;
+use Getopt::Std;
+
+my %opt;
+getopts('H:U:P:D:T:', \%opt);
+my $user = shift or die &usage;
+
+my $dsn = 'dbi:mysql';
+$dsn .= ":database=$opt{D}" if $opt{D};
+$dsn .= ":host=$opt{H}" if $opt{H};
+
+my $mysql = DBI->connect($dsn, $opt{U}, $opt{P}) 
+  or die $DBI::errstr;
+
+adminsuidsetup $user;
+
+my $fsdbh = FS::UID::dbh;
+
+# check for existence of freesidestatus
+my $table = $opt{T} || 'cdr';
+my $status = $mysql->selectall_arrayref("SHOW COLUMNS FROM $table WHERE Field = 'freesidestatus'");
+if( ! @$status ) {
+  print "Adding freesidestatus column...\n";
+  $mysql->do("ALTER TABLE $table ADD COLUMN freesidestatus varchar(32)")
+    or die $mysql->errstr;
+}
+else {
+  print "freesidestatus column present\n";
+}
+
+my @cols = ( qw( 
+calldate clid src dst dcontext channel lastapp lastdata duration 
+    billsec disposition amaflags accountcode uniqueid userfield) );
+my $sql = 'SELECT '.join(',', @cols). " FROM $table WHERE freesidestatus IS NULL";
+my $sth = $mysql->prepare($sql);
+$sth->execute;
+print "Importing ".$sth->rows." records...\n";
+
+my $cdr_batch = new FS::cdr_batch({ 
+    'cdrbatch' => 'mysql-import-'. time2str('%Y/%m/%d-%T',time),
+  });
+my $error = $cdr_batch->insert;
+die $error if $error;
+my $cdrbatchnum = $cdr_batch->cdrbatchnum;
+my $imports = 0;
+my $updates = 0;
+
+my $row;
+while ( $row = $sth->fetchrow_hashref ) {
+  my $cdr = FS::cdr->new($row);
+  $cdr->startdate(str2time($cdr->calldate));
+  $cdr->cdrbatchnum($cdrbatchnum);
+  my $error = $cdr->insert;
+  if($error) {
+    print "failed import: $error\n";
+  }
+  else {
+    $imports++;
+    if( $mysql->do("UPDATE cdr SET freesidestatus = 'done' 
+        WHERE calldate = ? AND src = ? AND dst = ?",
+                undef,
+                $row->{'calldate'},
+                $row->{'src'},
+                $row->{'dst'},
+
+      ) ) {
+        $updates++;
+    }
+    else {
+      print "failed to set status: ".$mysql->errstr."\n";
+    }
+  }
+}
+print "Done.\nImported $imports CDRs, marked $updates CDRs as done.\n";
+$mysql->disconnect;
+
+sub usage {
+  "Usage: \n  cdr-mysql.import\n\t[ -H host ]\n\t-D database\n\t-U user\n\t-P password\n\tfreesideuser\n";
+}
+

-----------------------------------------------------------------------

Summary of changes:
 bin/cdr-mysql.import => FS/bin/freeside-cdr-mysql |    0
 1 file changed, 0 insertions(+), 0 deletions(-)
 copy bin/cdr-mysql.import => FS/bin/freeside-cdr-mysql (100%)




More information about the freeside-commits mailing list