X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fvoip_cdr.pm;h=6a3a2acc2428cdb8e88a9aee7caace1464d3c8c3;hb=988ec48fea05902eb7ea22e43a44e86a36eee06a;hp=f7db685a0f72f489931f80ef01bb1270648849c0;hpb=53600749722225904c4cf2995cbfea47f016460a;p=freeside.git diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index f7db685a0..6a3a2acc2 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -7,6 +7,7 @@ use Tie::IxHash; use FS::Conf; use FS::Record qw(qsearchs qsearch); use FS::part_pkg::flat; +use FS::cdr; #use FS::rate; #use FS::rate_prefix; @@ -79,6 +80,11 @@ tie my %rating_method, 'Tie::IxHash', 'type' => 'checkbox', }, + 'output_format' => { 'name' => 'Simple output format', + 'type' => 'select', + 'select_options' => { FS::cdr::invoice_formats() }, + }, + #XXX also have option for an external db # 'cdr_location' => { 'name' => 'CDR database location' # 'type' => 'select', @@ -109,7 +115,7 @@ tie my %rating_method, 'Tie::IxHash', default_prefix disable_src domestic_prefix international_prefix - use_amaflags use_disposition + use_amaflags use_disposition output_format ) ], 'weight' => 40, @@ -136,6 +142,9 @@ sub calc_recur { my $downstream_cdr = ''; + my $output_format = $self->option('output_format', 'Hush!') + || 'voxlinesystems'; + foreach my $cust_svc ( grep { $_->part_svc->svcdb eq 'svc_phone' } $cust_pkg->cust_svc ) { @@ -292,15 +301,7 @@ sub calc_recur { $charge = sprintf('%.3f', $cdr->upstream_price); $charges += $charge; - @call_details = ( - #time2str("%Y %b %d - %r", $cdr->calldate_unix ), - time2str("%c", $cdr->calldate_unix), #XXX this should probably be a config option dropdown so they can select US vs- rest of world dates or whatnot - sprintf('%.2f', $cdr->billsec / 60 ).'m', - '$'.$charge, #XXX $money_char - #$pretty_destnum, - $cdr->userfield, #$rate_region->regionname, - $cdr->dst, - ); + @call_details = ($cdr->downstream_csv( 'format' => $output_format )); } else { die "don't know how to rate CDRs using method: ". @@ -363,9 +364,17 @@ sub calc_recur { } if ( $charge > 0 ) { - my $call_details = join(' - ', @call_details ); + my $call_details; + if ( $self->option('rating_method') eq 'upstream_simple' ) { + $call_details = [ 'C', $call_details[0] ]; + }else{ + $call_details = join(' - ', @call_details ); + } warn " adding details on charge to invoice: $call_details" - if $DEBUG; + if ( $DEBUG && !ref($call_details) ); + warn " adding details on charge to invoice: [ ". + join(', ', @{$call_details} ). " ]" + if ( $DEBUG && ref($call_details) ); push @$details, $call_details; #\@call_details, } @@ -382,6 +391,9 @@ sub calc_recur { } # $cdr + unshift @$details, [ 'C', FS::cdr::invoice_header( $output_format) ] + if (@$details && $self->option('rating_method') eq 'upstream_simple' ); + } # $cust_svc if ( $spool_cdr && length($downstream_cdr) ) { @@ -424,5 +436,12 @@ sub base_recur { $self->option('recur_fee'); } +# This equates svc_phone records; perhaps svc_phone should have a field +# to indicate it represents a line +sub calc_units { + my($self, $cust_pkg ) = @_; + scalar(grep { $_->part_svc->svcdb eq 'svc_phone' } $cust_pkg->cust_svc); +} + 1;