[freeside-commits] freeside/FS/FS/part_pkg voip_cdr.pm, 1.123.2.7, 1.123.2.8 voip_tiered.pm, 1.1.2.3, 1.1.2.4
Mark Wells
mark at wavetail.420.am
Mon Dec 19 14:51:34 PST 2011
Update of /home/cvs/cvsroot/freeside/FS/FS/part_pkg
In directory wavetail.420.am:/tmp/cvs-serv11355/FS/FS/part_pkg
Modified Files:
Tag: FREESIDE_2_3_BRANCH
voip_cdr.pm voip_tiered.pm
Log Message:
CDR summary format for tiered packages, #15535
Index: voip_cdr.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_pkg/voip_cdr.pm,v
retrieving revision 1.123.2.7
retrieving revision 1.123.2.8
diff -u -w -d -r1.123.2.7 -r1.123.2.8
--- voip_cdr.pm 16 Dec 2011 22:06:37 -0000 1.123.2.7
+++ voip_cdr.pm 19 Dec 2011 22:51:32 -0000 1.123.2.8
@@ -850,37 +850,8 @@
}
}
else { #$self->sum_usage
- my $count = scalar(@invoice_details_sort);
- if ( $count > 0 ) {
- my $sum_detail = {
- amount => 0,
- format => 'C',
- classnum => '', #XXX
- duration => 0,
- phonenum => $svc_x->phonenum,
- accountcode => '', #XXX
- startdate => '', #XXX
- regionnam => '',
- };
- # combine the entire set of CDRs
- foreach ( @invoice_details_sort ) {
- $sum_detail->{amount} += $_->[0]{amount};
- $sum_detail->{duration} += $_->[0]{duration};
+ push @$details, $self->sum_detail($svc_x, \@invoice_details_sort);
}
- my $total_cdr = FS::cdr->new({
- 'billsec' => $sum_detail->{duration},
- 'src' => $sum_detail->{phonenum},
- });
- $sum_detail->{detail} = $total_cdr->downstream_csv(
- format => $output_format,
- seconds => $sum_detail->{duration},
- charge => sprintf('%.2f',$sum_detail->{amount}),
- phonenum => $sum_detail->{phonenum},
- count => $count,
- );
- push @$details, $sum_detail;
- } # if $count > 0
- } #if $self->sum_usage
} # $cust_svc
unshift @$details, { format => 'C',
@@ -888,33 +859,6 @@
}
if @$details && $rating_method ne 'upstream';
-# if ( $spool_cdr && length($downstream_cdr) ) {
-#
-# use FS::UID qw(datasrc);
-# my $dir = '/usr/local/etc/freeside/export.'. datasrc. '/cdr';
-# mkdir $dir, 0700 unless -d $dir;
-# $dir .= '/'. $cust_pkg->custnum.
-# mkdir $dir, 0700 unless -d $dir;
-# my $filename = time2str("$dir/CDR%Y%m%d-spool.CSV", time); #XXX invoice date instead? would require changing the order things are generated in cust_main::bill insert cust_bill first - with transactions it could be done though
-#
-# push @{ $param->{'precommit_hooks'} },
-# sub {
-# #lock the downstream spool file and append the records
-# use Fcntl qw(:flock);
-# use IO::File;
-# my $spool = new IO::File ">>$filename"
-# or die "can't open $filename: $!\n";
-# flock( $spool, LOCK_EX)
-# or die "can't lock $filename: $!\n";
-# seek($spool, 0, 2)
-# or die "can't seek to end of $filename: $!\n";
-# print $spool $downstream_cdr;
-# flock( $spool, LOCK_UN );
-# close $spool;
-# };
-#
-# } #if ( $spool_cdr && length($downstream_cdr) )
-
$charges;
}
@@ -1050,6 +994,41 @@
$self->option('output_format') =~ /^sum_/;
}
+sub sum_detail {
+ my $self = shift;
+ my $svc_x = shift;
+ my $invoice_details = shift || [];
+ my $count = scalar(@$invoice_details);
+ return () if !$count;
+ my $sum_detail = {
+ amount => 0,
+ format => 'C',
+ classnum => '', #XXX
+ duration => 0,
+ phonenum => $svc_x->phonenum,
+ accountcode => '', #XXX
+ startdate => '', #XXX
+ regionnam => '',
+ };
+ # combine the entire set of CDRs
+ foreach ( @$invoice_details ) {
+ $sum_detail->{amount} += $_->[0]{amount};
+ $sum_detail->{duration} += $_->[0]{duration};
+ }
+ my $total_cdr = FS::cdr->new({
+ 'billsec' => $sum_detail->{duration},
+ 'src' => $sum_detail->{phonenum},
+ });
+ $sum_detail->{detail} = $total_cdr->downstream_csv(
+ format => $self->option('output_format'),
+ seconds => $sum_detail->{duration},
+ charge => sprintf('%.2f',$sum_detail->{amount}),
+ phonenum => $sum_detail->{phonenum},
+ count => $count,
+ );
+ return $sum_detail;
+}
+
# and whether cust_bill should show a detail line for the service label
# (separate from usage details)
sub hide_svc_detail {
Index: voip_tiered.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_pkg/voip_tiered.pm,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -w -d -r1.1.2.3 -r1.1.2.4
--- voip_tiered.pm 18 Nov 2011 00:09:52 -0000 1.1.2.3
+++ voip_tiered.pm 19 Dec 2011 22:51:32 -0000 1.1.2.4
@@ -227,7 +227,7 @@
if ( $charge > 0 ) {
$charges += $charge;
- my $detail =
+ my $detail = $self->sum_usage ? '' :
$cdr->downstream_csv( 'format' => $output_format,
'charge' => $charge,
'seconds' => ($use_duration ?
@@ -267,12 +267,23 @@
} # $pass
+ if ( $self->sum_usage ) {
+ # then summarize all accumulated details within this svc_x
+ # and then flush them
+ push @$details, $self->sum_detail($svc_x, \@invoice_details_sort);
+ @invoice_details_sort = ();
+ }
+
} # $cust_svc
- my @sorted_invoice_details = sort { ${$a}[1] <=> ${$b}[1] } @invoice_details_sort;
+ if ( !$self->sum_usage ) {
+ #sort them
+ my @sorted_invoice_details =
+ sort { ${$a}[1] <=> ${$b}[1] } @invoice_details_sort;
foreach my $sorted_call_detail ( @sorted_invoice_details ) {
push @$details, ${$sorted_call_detail}[0];
}
+ }
unshift @$details, { format => 'C',
detail => FS::cdr::invoice_header($output_format),
More information about the freeside-commits
mailing list