[freeside-commits] branch FREESIDE_4_BRANCH updated. a0e9787492ab306e94f41492ac7f59fb6a3e4802
Mark Wells
mark at 420.am
Mon Sep 12 12:25:38 PDT 2016
The branch, FREESIDE_4_BRANCH has been updated
via a0e9787492ab306e94f41492ac7f59fb6a3e4802 (commit)
from 063a22ac07d158729cd8159c2d3c8f974088cae4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a0e9787492ab306e94f41492ac7f59fb6a3e4802
Author: Mark Wells <mark at freeside.biz>
Date: Mon Sep 12 12:25:21 2016 -0700
respect CDR price rounding in invoice details, #72451 and #72330
diff --git a/FS/FS/detail_format.pm b/FS/FS/detail_format.pm
index 78517dd..46c6300 100644
--- a/FS/FS/detail_format.pm
+++ b/FS/FS/detail_format.pm
@@ -35,9 +35,9 @@ a subclass.
OPTIONS may contain:
- buffer: an arrayref to store details into. This may avoid the need for a
-large copy operation at the end of processing. However, since summary formats
-will produce nothing until the end of processing, C<finish> must be called
-after all CDRs have been appended.
+large copy operation at the end of processing. However, since summary
+formats will produce nothing until the end of processing, C<finish> must be
+called after all CDRs have been appended.
- inbound: a flag telling the formatter to format CDRs for display to the
receiving party, rather than the originator. In this case, the
@@ -48,6 +48,9 @@ with the C<inbound> method.
- locale: a locale string to use for static text and date formats. This is
optional.
+- rounding: the number of decimal places to show in the amount column. This
+is optional, and defaults to whatever's in the schema (which is 4).
+
=cut
sub new {
@@ -72,6 +75,7 @@ sub new {
my $self = { conf => FS::Conf->new({ locale => $locale }),
csv => Text::CSV_XS->new({ binary => 1 }),
inbound => ($opt{'inbound'} ? 1 : 0),
+ rounding => $opt{'rounding'},
buffer => ($opt{'buffer'} || []),
_lh => FS::L10N->get_handle($locale),
_dh => eval { Date::Language->new($language_name) } ||
@@ -212,6 +216,8 @@ sub single_detail {
my $object = $self->{inbound} ? $cdr->cdr_termination(1) : $cdr;
my $price = $object->rated_price if $object;
$price = 0 if $cdr->freesidestatus eq 'no-charge';
+ $price = sprintf('%.*f', $self->{'rounding'}, $price)
+ if $self->{'rounding'} and length($price);
FS::cust_bill_pkg_detail->new( {
'acctid' => ($self->{inbound} ? '' : $cdr->acctid),
@@ -303,7 +309,15 @@ sub price {
my $object = $self->{inbound} ? $cdr->cdr_termination(1) : $cdr;
my $price = $object->rated_price if $object;
$price = '0.00' if $object->freesidestatus eq 'no-charge';
- length($price) ? $self->money_char . $price : '';
+ $price = sprintf('%.*f', $self->{'rounding'}, $price)
+ if $self->{'rounding'};
+ if (length($price)) {
+ $price = sprintf('%.*f', $self->{'rounding'}, $price)
+ if $self->{'rounding'};
+ return $self->money_char . $price;
+ } else {
+ return '';
+ }
}
1;
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 7d9a7f5..50ae0af 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -423,7 +423,8 @@ sub calc_usage {
my $formatter = FS::detail_format->new($output_format,
buffer => $details,
- locale => $cust_pkg->cust_main->locale
+ locale => $cust_pkg->cust_main->locale,
+ rounding => ($self->option_cacheable('rounding') || 2),
);
my $use_duration = $self->option('use_duration');
diff --git a/FS/FS/part_pkg/voip_tiered.pm b/FS/FS/part_pkg/voip_tiered.pm
index 0ad0ff6..d8607a6 100644
--- a/FS/FS/part_pkg/voip_tiered.pm
+++ b/FS/FS/part_pkg/voip_tiered.pm
@@ -196,7 +196,10 @@ sub calc_usage {
my $output_format = $self->option('output_format', 'Hush!') || 'default';
- my $formatter = FS::detail_format->new($output_format, buffer => $details);
+ my $formatter = FS::detail_format->new($output_format,
+ buffer => $details,
+ rounding => ($self->option_cacheable('rounding') || 2))
+ ;
my $charges = 0;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/detail_format.pm | 22 ++++++++++++++++++----
FS/FS/part_pkg/voip_cdr.pm | 3 ++-
FS/FS/part_pkg/voip_tiered.pm | 5 ++++-
3 files changed, 24 insertions(+), 6 deletions(-)
More information about the freeside-commits
mailing list