From 86d3bab91d8baadcbe33e5bbceeb607990efa1eb Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Sun, 16 Feb 2014 17:23:51 -0800 Subject: credit limit for CDR prerating, RT#27267 --- FS/bin/freeside-cdrrated | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'FS/bin') diff --git a/FS/bin/freeside-cdrrated b/FS/bin/freeside-cdrrated index 99ea67594..1333240ec 100644 --- a/FS/bin/freeside-cdrrated +++ b/FS/bin/freeside-cdrrated @@ -37,7 +37,7 @@ our %svcnum = (); # phonenum => svcnum our %pkgnum = (); # phonenum => pkgnum our %cust_pkg = (); # pkgnum => cust_pkg (NOT phonenum => cust_pkg!) our %pkgpart = (); # phonenum => pkgpart -our %part_pkg = (); # phonenum => part_pkg +our %part_pkg = (); # pkgpart => part_pkg #some false laziness w/freeside-cdrrewrited @@ -127,10 +127,12 @@ while (1) { } - #unless ( $part_pkg{$pkgpart{$number}} ) { - #} - - #XXX if $part_pkg->option('min_included') then we can't prerate this CDR + if ( $part_pkg{ $pkgpart{$number} }->option('min_included') ) { + #then we can't prerate this CDR + #some sort of warning? + # (sucks if you're depending on credit limit fraud warnings) + next; + } my $error = $cdr->rate( 'part_pkg' => $part_pkg{ $pkgpart{$number} }, @@ -141,6 +143,21 @@ while (1) { #XXX ??? warn $error; sleep 30; + } else { + + #this could get expensive on a per-call basis + # trigger in a separate process with less frequency? + + my $cust_main = $cust_pkg{ $pkgnum{$number} }->cust_main; + + my $error = $cust_main->check_credit_limit; + if ( $error ) { + #"should never happen" normally, but as a daemon, better to survive + # e.g. database going away and coming back and resume doing our thing + warn $error; + sleep 30; + } + } last if sigterm() || sigint(); -- cgit v1.2.1