summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-12-03 22:13:31 -0600
committerJonathan Prykop <jonathan@freeside.biz>2015-12-03 22:13:31 -0600
commit4350b9742f567ac32089d57df42e08339f944a66 (patch)
tree88663b9fa83769fcecd6e0603ba0b15d38b4bea0 /FS
parent907994b69d446eb479a01fe8985bf589f0056277 (diff)
RT#37901: Galactic Telecom CDRs [skip duplicates, midnight start]
Diffstat (limited to 'FS')
-rw-r--r--FS/bin/freeside-cdr-portaone-import23
1 files changed, 18 insertions, 5 deletions
diff --git a/FS/bin/freeside-cdr-portaone-import b/FS/bin/freeside-cdr-portaone-import
index d9a606a82..9a02a7259 100644
--- a/FS/bin/freeside-cdr-portaone-import
+++ b/FS/bin/freeside-cdr-portaone-import
@@ -7,9 +7,12 @@ use Date::Parse 'str2time';
use Getopt::Long;
use JSON;
use Net::HTTPS::Any qw(https_post);
+use Time::Local;
use FS::Record qw(qsearchs dbh);
use FS::UID qw(adminsuidsetup);
+use FS::cdr;
+use FS::cdr_batch;
sub usage {
"Usage:
@@ -54,7 +57,8 @@ unless ($startdate) {
}
$startdate ||= '2010-01-01 00:00:00'; #seems decently in the past
-my $now = time;
+my @now = localtime();
+my $now = timelocal(0,0,0,$now[3],$now[4],$now[5]); #most recent midnight
if ($enddate) {
$enddate = str2time($enddate) or die "Can't parse enddate $enddate";
$now = $enddate;
@@ -65,8 +69,11 @@ $enddate ||= time2str("%Y-%m-%d %H:%M:%S",$now);
$FS::UID::AutoCommit = 0;
+my $cdrbatchname = 'portaone-import-'. time2str('%Y/%m/%d-%T',$now);
+die "Batch $cdrbatchname already exists, please specify a different end date. " . usage()
+ if FS::cdr_batch->row_exists('cdrbatch = ?', $cdrbatchname);
my $cdr_batch = new FS::cdr_batch({
- 'cdrbatch' => 'portaone-import-'. time2str('%Y/%m/%d-%T',$now),
+ 'cdrbatch' => $cdrbatchname,
'_date' => $now,
});
my $error = $cdr_batch->insert;
@@ -102,8 +109,13 @@ foreach my $custnum (@custnum) {
'offset' => $offset,
});
my @xdrs = @{$xdrs->{'xdr_list'}};
- print "Inserting ".@xdrs." records\n" if $verbose && @xdrs;
+ print "Retrieved ".@xdrs." records\n" if $verbose && @xdrs;
+ my $skipped = 0; # for verbose display only
foreach my $xdr (@xdrs) {
+ if ( FS::cdr->row_exists('uniqueid = ?', $xdr->{'i_xdr'}) ) {
+ $skipped += 1;
+ next;
+ }
my $desc = $xdr->{'country'};
if ($xdr->{'subdivision'}) {
$desc = ', ' . $desc if $desc;
@@ -131,11 +143,12 @@ foreach my $custnum (@custnum) {
die "Error inserting cdr: $error";
}
} #foreach $xdr
- $totalcount += @xdrs;
+ print "Skipped $skipped duplicate records\n" if $verbose && $skipped;
+ $totalcount += @xdrs - $skipped;
$lastcount = @xdrs;
$offset += $step;
} #while $lastcount == $step
- print scalar($totalcount) . " xdrs retrieved\n" if $verbose;
+ print scalar($totalcount) . " records inserted\n" if $verbose;
} #foreach $custnum
call_api('Session','logout',$auth_info);