X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-cdrd;h=2cf75f31c7966437df78a1ff01fc7760c857d6ee;hb=fa71778349c136623f0755bf30ce9f65fbaabf14;hp=882fd5402a50502e2e06a7d0df9a5d86e8c965e3;hpb=e95a136f9dae69525dd926ce4d3314e407a567c9;p=freeside.git diff --git a/FS/bin/freeside-cdrd b/FS/bin/freeside-cdrd index 882fd5402..2cf75f31c 100644 --- a/FS/bin/freeside-cdrd +++ b/FS/bin/freeside-cdrd @@ -2,10 +2,11 @@ use strict; use FS::Daemon ':all'; #daemonize1 drop_root daemonize2 myexit logfile sig* -use FS::UID qw(adminsuidsetup); -use FS::Record qw(qsearch ); #qsearchs); +use FS::UID qw( adminsuidsetup ); +use FS::Record qw( qsearch ); #qsearchs); #use FS::cdr; use FS::cust_pkg; +use FS::queue; my $user = shift or die &usage; @@ -51,8 +52,16 @@ my $extra_sql = || svc_phone.phonenum ) ) - ) + ) + AND 0 = ( + SELECT COUNT(*) FROM queue + WHERE queue.job = 'FS::cust_main::queued_bill' + AND queue.custnum = cust_pkg.custnum + ) + "; +# don't repeatedly queue failures +# AND status != 'failed' while (1) { @@ -71,10 +80,17 @@ while (1) { #my $work_cust_pkg = $cust_pkg; - my $cust_main = $cust_pkg->cust_main; + #my $cust_main = $cust_pkg->cust_main; my $time = time; - $cust_main->bill_and_collect( + + my $job = new FS::queue { + 'job' => 'FS::cust_main::queued_bill', + 'secure' => 'Y', + 'custnum' => $cust_pkg->custnum, + }; + my $error = $job->insert( + 'custnum' => $cust_pkg->custnum, 'time' => $time, 'invoice_time' => $time, 'actual_time' => $time, @@ -82,10 +98,17 @@ while (1) { #'debug' => 1, ); + if ( $error ) { + #die "FATAL: error inserting billing job: $error\n"; + warn "WARNING: error inserting billing job (will retry in 30 seconds):". + " $error\n"; + sleep 30; #i dunno, wait and see if the database comes back? + } + } myexit() if sigterm() || sigint(); - sleep 5; # unless $found; + sleep 1 unless $found; } @@ -114,21 +137,21 @@ sub _shouldrun { } sub usage { - die "Usage:\n\n freeside-prepaidd user\n"; + die "Usage:\n\n freeside-cdrd user\n"; } =head1 NAME -freeside-prepaidd - Real-time daemon for prepaid packages +freeside-cdrd - Real-time daemon for CDRs =head1 SYNOPSIS - freeside-prepaidd + freeside-cdrd =head1 DESCRIPTION -Runs continuously and suspends or cancels any prepaid customer packages which -have passed their renewal date (next bill date). +Runs continuously, searches for CDRs and bills customers who have VoIP +price plands with the B option set. =head1 SEE ALSO