X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fvoip_inbound.pm;h=f4e51836fbdde424e795d6ea47ae3f45442fb087;hb=984fff08c579ff72f6eb7f658d9373079eafb16a;hp=7fb0a5d632815b12db6ebb624c5345b5eb4cf3c6;hpb=fb4ab1073f0d15d660c6cdc4e07afebf68ef3924;p=freeside.git diff --git a/FS/FS/part_pkg/voip_inbound.pm b/FS/FS/part_pkg/voip_inbound.pm index 7fb0a5d63..f4e51836f 100644 --- a/FS/FS/part_pkg/voip_inbound.pm +++ b/FS/FS/part_pkg/voip_inbound.pm @@ -10,6 +10,7 @@ use FS::Conf; use FS::Record qw(qsearchs qsearch); use FS::cdr; use FS::rate_detail; +use FS::detail_format; $DEBUG = 0; @@ -177,12 +178,13 @@ sub calc_recur { } -sub calc_cancel { - my $self = shift; - my($cust_pkg, $sdate, $details, $param ) = @_; - - $self->calc_usage(@_); -} +# use the default +#sub calc_cancel { +# my $self = shift; +# my($cust_pkg, $sdate, $details, $param ) = @_; +# +# $self->calc_usage(@_); +#} #false laziness w/voip_sqlradacct calc_recur resolve it if that one ever gets used again @@ -207,6 +209,10 @@ sub calc_usage { my $included_min = $self->option('min_included', 1) || 0; my $use_duration = $self->option('use_duration'); my $output_format = $self->option('output_format', 1) || 'default'; + + my $formatter = + FS::detail_format->new($output_format, buffer => $details, inbound => 1); + my $granularity = length($self->option('sec_granularity')) ? $self->option('sec_granularity') : 60; @@ -278,31 +284,41 @@ sub calc_usage { 'granularity' => $granularity, ) ); - push @$details, - { format => 'C', - detail => $call_details[0], - amount => $charge, - classnum => $cdr->calltypenum, #classnum - #phonenum => $self->phonenum, - accountcode => $cdr->accountcode, - startdate => $cdr->startdate, - duration => $seconds, - # regionname?? => '', #regionname, not set for inbound calls - }; - } - - my $error = $cdr->set_status_and_rated_price( 'done', - $charge, - $cust_svc->svcnum, - 'inbound' => 1 ); - die $error if $error; +# push @$details, +# { format => 'C', +# detail => $call_details[0], +# amount => $charge, +# classnum => $cdr->calltypenum, #classnum +# #phonenum => $self->phonenum, +# accountcode => $cdr->accountcode, +# startdate => $cdr->startdate, +# duration => $seconds, +# # regionname?? => '', #regionname, not set for inbound calls +# }; + } + + # eventually use FS::cdr::rate for this + my $error = $cdr->set_status_and_rated_price( + 'done', + $charge, + $cust_svc->svcnum, + 'rated_seconds' => $use_duration ? $cdr->duration : $cdr->billsec, + 'rated_granularity' => $granularity, + 'rated_classnum' => $cdr->calltypenum, + 'inbound' => 1, + ); + die $error if $error; + $formatter->append($cdr); } #$cdr } # $cust_svc - unshift @$details, { format => 'C', - detail => FS::cdr::invoice_header($output_format), - } - if @$details; +# unshift @$details, { format => 'C', +# detail => FS::cdr::invoice_header($output_format), +# } +# if @$details; + + $formatter->finish; + unshift @$details, $formatter->header if @$details; $charges; }