X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcdr.pm;h=850f797bcd3fb2b39c2056e1d5319bb08f49c4ee;hp=e7b6e6cd3fcd9d45fac2fc69cb9750af599d859d;hb=bda8c33f9b346ba6cd7aa4174ce0d3e37db7bd49;hpb=d632cda4e4c3e77d63ce61aae4096e4c81c29b9d diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index e7b6e6cd3..850f797bc 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -401,13 +401,15 @@ error, otherwise returns false. sub set_status_and_rated_price { my($self, $status, $rated_price, $svcnum, %opt) = @_; - if($opt{'inbound'}) { + + if ($opt{'inbound'}) { + my $term = qsearchs('cdr_termination', { acctid => $self->acctid, termpart => 1 # inbound }); my $error; - if($term) { + if ( $term ) { warn "replacing existing cdr status (".$self->acctid.")\n" if $term; $error = $term->delete; return $error if $error; @@ -419,13 +421,19 @@ sub set_status_and_rated_price { status => $status, svcnum => $svcnum, }); + $term->rated_seconds($opt{rated_seconds}) if exists($opt{rated_seconds}); + $term->rated_minutes($opt{rated_minutes}) if exists($opt{rated_minutes}); return $term->insert; - } - else { + + } else { + $self->freesidestatus($status); $self->rated_price($rated_price); + $self->rated_seconds($opt{rated_seconds}) if exists($opt{rated_seconds}); + $self->rated_minutes($opt{rated_minutes}) if exists($opt{rated_minutes}); $self->svcnum($svcnum) if $svcnum; return $self->replace(); + } } @@ -642,6 +650,20 @@ sub export_formats { return %export_formats; } +=item downstream_csv OPTION => VALUE ... + +Options: + +format + +charge + +seconds + +granularity + +=cut + sub downstream_csv { my( $self, %opt ) = @_; @@ -948,6 +970,14 @@ sub batch_import { my $iopt = _import_options; $opt->{$_} = $iopt->{$_} foreach keys %$iopt; + if ( defined $opt->{'cdrtypenum'} ) { + $opt->{'preinsert_callback'} = sub { + my($record,$param) = (shift,shift); + $record->cdrtypenum($opt->{'cdrtypenum'}); + ''; + }; + } + FS::Record::batch_import( $opt ); }