X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr.pm;h=2426f4191c87035d8cb4ccf3a59bd9f58dc25ad2;hb=7b125e587a4d1ee0aca692e23ea7897f671855ae;hp=b9a4e41db3725a0111baf2d3f02147f3155d69b1;hpb=457cf05ffc31212de613249c95a8ab05aed34f47;p=freeside.git diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index b9a4e41db..2426f4191 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -14,6 +14,7 @@ use FS::cdr_type; use FS::cdr_calltype; use FS::cdr_carrier; use FS::cdr_batch; +use FS::cdr_termination; @ISA = qw(FS::Record); @EXPORT_OK = qw( _cdr_date_parser_maker _cdr_min_parser_maker ); @@ -386,11 +387,33 @@ error, otherwise returns false. =cut sub set_status_and_rated_price { - my($self, $status, $rated_price, $svcnum) = @_; - $self->freesidestatus($status); - $self->rated_price($rated_price); - $self->svcnum($svcnum) if $svcnum; - $self->replace(); + my($self, $status, $rated_price, $svcnum, %opt) = @_; + if($opt{'inbound'}) { + my $term = qsearchs('cdr_termination', { + acctid => $self->acctid, + termpart => 1 # inbound + }); + my $error; + if($term) { + warn "replacing existing cdr status (".$self->acctid.")\n" if $term; + $error = $term->delete; + return $error if $error; + } + $term = FS::cdr_termination->new({ + acctid => $self->acctid, + termpart => 1, + rated_price => $rated_price, + status => $status, + svcnum => $svcnum, + }); + return $term->insert; + } + else { + $self->freesidestatus($status); + $self->rated_price($rated_price); + $self->svcnum($svcnum) if $svcnum; + return $self->replace(); + } } =item calldate_unix @@ -723,7 +746,10 @@ sub _cdr_date_parse { ($mon, $day, $year, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 ); } elsif ( $date =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d+\.\d+)(\D|$)/ ) { # broadsoft: 20081223201938.314 - ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6); + ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 ); + } elsif ( $date =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ ) { + # WIP: 20100329121420 + ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 ); } else { die "unparsable date: $date"; #maybe we shouldn't die... }