X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr.pm;h=92586db679716d4e782efc5796cea04fcba2dc9a;hb=33668d4e9e8e538f75a4b6ef7958d27a98eb3a9d;hp=0fc16587fa1c329589c2e5d99e577b3359758df4;hpb=5b73387992a96f7b80e40b5ecb2fedabd8a78d6b;p=freeside.git diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index 0fc16587f..92586db67 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -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 @@ use FS::rate_detail; $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,16 @@ sub clear_status { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - $self->freesidestatus(''); + if ( $cdr_prerate && $cdr_prerate_cdrtypenums{$self->cdrtypenum} + && $self->rated_ratedetailnum #avoid putting old CDRs back in "rated" + && $self->freesidestatus eq 'done' + ) + { #special case + $self->freesidestatus('rated'); + } else { + $self->freesidestatus(''); + } + my $error = $self->replace; if ( $error ) { $dbh->rollback if $oldAutoCommit;