summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2015-09-10 16:27:43 -0700
committerMark Wells <mark@freeside.biz>2015-09-10 16:28:33 -0700
commitf023ced4d618137a5e2f1d3d519d23ecdeb7fc7d (patch)
tree17fd0ff931806ab790f3a47c05503ead2f3e9045 /FS/FS
parentba74d54e5955b22ab4b20f73c408eede3bfbe23f (diff)
improve usage_class_summary with number of calls and total minutes, #37122
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/Template_Mixin.pm2
-rw-r--r--FS/FS/cust_bill.pm12
2 files changed, 10 insertions, 4 deletions
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index e9b60a8..206c03c 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -1519,7 +1519,7 @@ sub print_generic {
# usage subtotals
if ( $conf->exists('usage_class_summary')
and $self->can('_items_usage_class_summary') ) {
- my @usage_subtotals = $self->_items_usage_class_summary(escape => $escape_function);
+ my @usage_subtotals = $self->_items_usage_class_summary(escape => $escape_function, 'money_char' => $other_money_char);
if ( @usage_subtotals ) {
unshift @sections, $usage_subtotals[0]->{section}; # do not summarize
unshift @detail_items, @usage_subtotals;
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index dee8a8f..54488f9 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -2658,10 +2658,12 @@ sub _items_usage_class_summary {
my %opt = @_;
my $escape = $opt{escape} || sub { $_[0] };
+ my $money_char = $opt{money_char};
my $invnum = $self->invnum;
my @classes = qsearch({
'table' => 'usage_class',
- 'select' => 'classnum, classname, SUM(amount) AS amount',
+ 'select' => 'classnum, classname, SUM(amount) AS amount,'.
+ ' COUNT(*) AS calls, SUM(duration) AS duration',
'addl_from' => ' LEFT JOIN cust_bill_pkg_detail USING (classnum)' .
' LEFT JOIN cust_bill_pkg USING (billpkgnum)',
'extra_sql' => " WHERE cust_bill_pkg.invnum = $invnum".
@@ -2672,17 +2674,21 @@ sub _items_usage_class_summary {
my @l;
my $section = {
description => &{$escape}($self->mt('Usage Summary')),
- no_subtotal => 1,
usage_section => 1,
+ subtotal => 0,
};
foreach my $class (@classes) {
+ $section->{subtotal} += $class->get('amount');
push @l, {
'description' => &{$escape}($class->classname),
- 'amount' => sprintf('%.2f', $class->amount),
+ 'amount' => $money_char.sprintf('%.2f', $class->get('amount')),
+ 'quantity' => $class->get('calls'),
+ 'duration' => $class->get('duration'),
'usage_classnum' => $class->classnum,
'section' => $section,
};
}
+ $section->{subtotal} = $money_char.sprintf('%.2f', $section->{subtotal});
return @l;
}