X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=bin%2Fcdr-vitelity.import;h=55eb8ccf18ba282cd7cf0f4b96111b5794adb702;hp=150902f9779463d7f7fe2b056e1ec7704f3c7b84;hb=5f4099e52bd894d644c676ea75e1b0cb588393c8;hpb=3146245f510ef873c4176bc06dc891f990db8f1e diff --git a/bin/cdr-vitelity.import b/bin/cdr-vitelity.import index 150902f97..55eb8ccf1 100755 --- a/bin/cdr-vitelity.import +++ b/bin/cdr-vitelity.import @@ -2,8 +2,8 @@ =pod -cdr-vitelity.import [ -v ] [ -k ] [ -r ] - [ -s date ] [ -e date ] +cdr-vitelity.import [ -v ] [ -k ] + -s date -e date username [ exportnum ] @@ -13,16 +13,11 @@ Download CDRs using the Vitelity API. -k: Keep the .csv file for debugging purposes, instead of deleting it. --r: Reset the CDR counter before fetching. This will download previously -imported CDRs. +-s date: Import only records on or after 'date' Now required as the Vitelity +API has changed. --s date: Import only records on or after 'date'. If not specified, the -script will import the entire history (if -r is specified) or everything -since the last import (if not). Note that the API request doesn't have any -limits, so the entire data file will be downloaded regardless, but parsing -and importing the records is considerably slower than downloading them. - --e date: Import only records before 'date'. See above. +-e date: Import only records before 'date'. Now required as the Vitelity API +has changed. username: a Freeside user @@ -42,11 +37,15 @@ use Date::Format 'time2str'; use Date::Parse 'str2time'; my %opt; -getopts('vrkas:e:', \%opt); +getopts('vks:e:', \%opt); my $user = shift or die &usage; my $exportnum = shift; my $dbh = adminsuidsetup $user; + +my $start = $opt{'s'} ? str2time($opt{'s'}) : die &usage('-s is now required'); +my $end = $opt{'e'} ? str2time($opt{'e'}) : die &usage('-e is now required'); + local $FS::UID::AutoCommit = 0; my @part_exports; @@ -65,14 +64,6 @@ foreach my $export (@part_exports) { $export->isa('FS::part_export::vitelity') or die "exportnum $exportnum is not a Vitelity export\n"; - if ( $opt{'r'} ) { - my $result = $export->vitelity_command('getcdr'); - if ( $result ne 'ok' ) { - $dbh->rollback; - die "Failed to reset CDR list: $result\n"; - } - } - my $dir = $FS::UID::cache_dir . "/cache.". $FS::UID::datasrc; my $temp = new File::Temp ( TEMPLATE => 'download.XXXXXXXX', SUFFIX => '.csv', @@ -82,11 +73,20 @@ foreach my $export (@part_exports) { print "Downloading to ".$temp->filename."\n" if $opt{'v'}; print "Sending API request..." if $opt{'v'}; - my @records = eval { $export->vitelity_command('cdrlist') }; + + my $s = time2str('%m-%d-%Y', $start); + my $e = time2str('%m-%d-%Y', $end); + + my @records = eval { $export->vitelity_command('getcdr', + 'startdate' => $s, + 'enddate' => $e, + ); + }; if ( $@ ) { print "download error: $@\n"; exit(-1); } + print "received ".scalar(@records)." records\n" if $opt{'v'}; if ( !@records ) { print "No records to process.\n" if $opt{'v'}; @@ -95,21 +95,10 @@ foreach my $export (@part_exports) { print $temp "Date,Source,Destination,Seconds,CallerID,Disposition,Cost\n"; - my $regex = qr/^(\d{4})-(\d{2})-(\d{2})/; - my $start = $opt{'s'} ? str2time($opt{'s'}) : ''; - my $s = time2str('%Y-%m-%d', $start) if $start; - my $end = $opt{'e'} ? str2time($opt{'e'}) : ''; - my $e = time2str('%Y-%m-%d', $end) if $end; - my $count = 0; while (my $rec = shift @records) { - my $date = substr($rec, 0, 10); - next if ($start and $s gt $date); - next if ($end and $e le $date); print $temp $rec, "\n"; - $count++; } close $temp; - print "Selected $count records in date range." if $opt{'v'} and ($s or $e); my $format = 'vitelity'; my $batchname = "vitelity-$exportnum-".time2str('%Y/%m/%d-%T',time); @@ -132,11 +121,12 @@ print "done.\n"; exit(0); sub usage { -"Usage: -cdr-vitelity.import [ -v ] [ -k ] [ -r ] - [ -s date ] [ -e date ] + my $err = @_ ? shift."\n\n" : ''; +$err."Usage: +cdr-vitelity.import [ -v ] [ -k ] + -s date -e date username [ exportnum ] -" +"; }