summaryrefslogtreecommitdiff
path: root/FS/bin/freeside-cdrd
diff options
context:
space:
mode:
Diffstat (limited to 'FS/bin/freeside-cdrd')
-rw-r--r--FS/bin/freeside-cdrd160
1 files changed, 0 insertions, 160 deletions
diff --git a/FS/bin/freeside-cdrd b/FS/bin/freeside-cdrd
deleted file mode 100644
index 2cf75f31c..000000000
--- a/FS/bin/freeside-cdrd
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/perl -w
-
-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::cdr;
-use FS::cust_pkg;
-use FS::queue;
-
-my $user = shift or die &usage;
-
-#daemonize1('freeside-sprepaidd', $user); #keep unique pid files w/multi installs
-daemonize1('freeside-cdrd');
-
-drop_root();
-
-adminsuidsetup($user);
-
-logfile( "%%%FREESIDE_LOG%%%/cdrd-log.". $FS::UID::datasrc );
-
-daemonize2();
-
-die "not running; no voip_cdr package defs w/ bill_every_call and customer pkgs"
- unless _shouldrun();
-
-#--
-
-my $addl_from =
- 'LEFT JOIN part_pkg USING ( pkgpart ) '.
- "LEFT JOIN part_pkg_option
- ON ( cust_pkg.pkgpart = part_pkg_option.pkgpart
- AND part_pkg_option.optionname = 'bill_every_call' )";
-
-#XXX should pay attention to disable_src for efficiency
-
-my $extra_sql =
- "WHERE plan = 'voip_cdr' ".
- " AND optionvalue = '1' ".
- " AND ( susp IS NULL OR susp = 0)".
- " AND ( cancel IS NULL OR cancel = 0)".
- " AND 0 < (
- SELECT COUNT(*) FROM svc_phone LEFT JOIN cust_svc USING (svcnum)
- WHERE cust_pkg.pkgnum = cust_svc.pkgnum
- AND 0 < ( SELECT COUNT(*) FROM cdr
- WHERE ( freesidestatus IS NULL OR freesidestatus = '' )
- AND ( charged_party = svc_phone.phonenum
- OR charged_party = svc_phone.countrycode
- || svc_phone.phonenum
- OR src = svc_phone.phonenum
- OR src = svc_phone.countrycode
- || 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) {
-
- my $found = 0;
- foreach my $cust_pkg (
- qsearch( {
- 'select' => 'cust_pkg.*, part_pkg.plan',
- 'table' => 'cust_pkg',
- 'addl_from' => $addl_from,
- 'hashref' => {},
- 'extra_sql' => $extra_sql,
- } )
- ) {
-
- $found = 1;
-
- #my $work_cust_pkg = $cust_pkg;
-
- #my $cust_main = $cust_pkg->cust_main;
-
- my $time = time;
-
- 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,
- 'check_freq' => '1d', #well
- #'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 1 unless $found;
-
-}
-
-#--
-
-sub _shouldrun {
-
- my $extra_sql =
- ' AND 0 < ( SELECT COUNT(*) FROM cust_pkg
- WHERE cust_pkg.pkgpart = part_pkg.pkgpart
- AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
- )
- ';
-
- my @part_pkg =
- grep $_->option('bill_every_call', 'hush'),
- qsearch({
- 'table' => 'part_pkg',
- 'hashref' => { 'plan' => 'voip_cdr' },
- 'extra_sql' => $extra_sql,
- })
- ;
-
- scalar(@part_pkg);
-
-}
-
-sub usage {
- die "Usage:\n\n freeside-cdrd user\n";
-}
-
-=head1 NAME
-
-freeside-cdrd - Real-time daemon for CDRs
-
-=head1 SYNOPSIS
-
- freeside-cdrd
-
-=head1 DESCRIPTION
-
-Runs continuously, searches for CDRs and bills customers who have VoIP
-price plands with the B<bill_every_call> option set.
-
-=head1 SEE ALSO
-
-=cut
-
-1;