[freeside-commits] freeside/FS/FS cdr.pm,1.80,1.81

Ivan,,, ivan at wavetail.420.am
Sun Jan 1 19:59:05 PST 2012


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv1081

Modified Files:
	cdr.pm 
Log Message:
reprocess a CDR listed in cdr-prerate-cdrtypenums will now place it back in "rated" state, RT#15839

Index: cdr.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cdr.pm,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -w -d -r1.80 -r1.81
--- cdr.pm	30 Dec 2011 10:16:39 -0000	1.80
+++ cdr.pm	2 Jan 2012 03:59:03 -0000	1.81
@@ -1,7 +1,9 @@
 package FS::cdr;
 
 use strict;
-use vars qw( @ISA @EXPORT_OK $DEBUG $me );
+use vars qw( @ISA @EXPORT_OK $DEBUG $me
+             $conf $cdr_prerate %cdr_prerate_cdrtypenums
+           );
 use Exporter;
 use Tie::IxHash;
 use Date::Parse;
@@ -25,6 +27,17 @@
 $DEBUG = 0;
 $me = '[FS::cdr]';
 
+#ask FS::UID to run this stuff for us later
+FS::UID->install_callback( sub { 
+  $conf = new FS::Conf;
+
+  my @cdr_prerate_cdrtypenums;
+  $cdr_prerate = $conf->exists('cdr-prerate');
+  @cdr_prerate_cdrtypenums = $conf->config('cdr-prerate-cdrtypenums')
+    if $cdr_prerate;
+  %cdr_prerate_cdrtypenums = map { $_=>1 } @cdr_prerate_cdrtypenums;
+});
+
 =head1 NAME
 
 FS::cdr - Object methods for cdr records
@@ -1240,7 +1253,15 @@
   local $FS::UID::AutoCommit = 0;
   my $dbh = dbh;
 
+  if ( $cdr_prerate && $cdr_prerate_cdrtypenums{$self->cdrtypenum}
+       && $self->freesidestatus eq 'done'
+     )
+  { #special case
+    $self->freesidestatus('rated');
+  } else {
   $self->freesidestatus('');
+  }
+
   my $error = $self->replace;
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;



More information about the freeside-commits mailing list