#my $job = $param->{job};
my $line;
my $imported = 0;
+ my $unique_skip = 0; #lines skipped because they're already in the system
my( $last, $min_sec ) = ( time, 5 ); #progressbar foo
while (1) {
}
last if exists( $param->{skiprow} );
}
+ $unique_skip++ if $param->{unique_skip}; #line is already in the system
next if exists( $param->{skiprow} );
if ( $preinsert_callback ) {
unless ( $imported || $param->{empty_ok} ) {
$dbh->rollback if $oldAutoCommit;
- return "Empty file!";
+ # freeside-cdr-conexiant-import is sensitive to the text of this message
+ return $unique_skip ? "All records in file were previously imported" : "Empty file!";
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
skip(3), #LookupError,Direction,LegType
sub { #CallId
my($cdr,$value,$conf,$param) = @_;
+ #filter out already-imported cdrs here
if (qsearchs('cdr',{'uniqueid' => $value})) {
$param->{'skiprow'} = 1;
- $param->{'empty_ok'} = 1;
+ $param->{'unique_skip'} = 1; #tell batch_import why we're skipping
} else {
$cdr->uniqueid($value);
}
# Download files are created automatically at regular frequent intervals,
# but they contain overlapping data.
#
-# FS::cdr::conexiant automatically skips previously imported cdrs,
-# though if it does so for all records in a file,
-# then batch_import thinks the file is empty
+# FS::cdr::conexiant automatically skips previously imported cdrs
foreach my $file (@$files) {
next unless $file->{'BilledCallsOnly'};
my $cdrbatch = 'conexiant-' . $file->{'Identifier'};
- # files that were "empty" will unfortunately be re-downloaded,
+ # files that contained no new records will unfortunately be re-downloaded,
# but the alternative is to leave an excess of empty batches in system,
# and re-downloading is harmless (all files expire after 48 hours anyway)
if (qsearchs('cdr_batch',{ 'cdrbatch' => $cdrbatch })) {
'format' => 'conexiant'
});
if ($error eq 'Empty file!') {
+ print "File contains no records\n" if $verbose;
+ $error = '';
+ } elsif ($error eq "All records in file were previously imported") {
print "File contains no new cdrs, no batch created\n" if $verbose;
$error = '';
} elsif ($verbose && !$error) {