summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Houghton <houghton@freeside.biz>2014-09-09 16:46:29 -0400
committerDavid Houghton <houghton@freeside.biz>2014-09-10 16:03:41 -0400
commitdf8debf67bd9d24505854ebf2b93ebf095c3e8ea (patch)
treec3c238d4ca2507c9fb8b4246eecf1c7de5b020e8
parent149719dd87d1f0d2208a94dcd7e9072c378d872a (diff)
ticket: 28287; add undiscounted monthly amount
I figured this need only parallel the discount report. That is, the discount only is reported and applied if the period of recurrence is some whole number of months. From my exploration of discounts it appeared that one could specify discounts for other periods, but they did not appear on invoices.
-rw-r--r--FS/FS/part_pkg/discount_Mixin.pm21
1 files changed, 15 insertions, 6 deletions
diff --git a/FS/FS/part_pkg/discount_Mixin.pm b/FS/FS/part_pkg/discount_Mixin.pm
index 1edf258d6..56c86d520 100644
--- a/FS/FS/part_pkg/discount_Mixin.pm
+++ b/FS/FS/part_pkg/discount_Mixin.pm
@@ -7,8 +7,6 @@ use List::Util qw( min );
use FS::cust_pkg;
use FS::cust_bill_pkg_discount;
-%info = ( 'disabled' => 1 );
-
=head1 NAME
FS::part_pkg::discount_Mixin - Mixin class for part_pkg:: classes that
@@ -168,11 +166,22 @@ sub calc_discount {
$months = sprintf('%.2f', $months) if $months =~ /\./;
my $d = 'Includes ';
- $d .= 'setup ' if defined $param->{'setup_charge'};
- $d .= 'discount of '. $discount->description_short;
- $d .= " for $months month". ( $months!=1 ? 's' : '' ) unless defined $param->{'setup_charge'};
- $d .= ": $money_char$amount" if $months != 1 || $discount->percent;
+ my $format;
+
+ if ( $months eq '1' ) {
+ $d .= "discount of $money_char$amount each";
+ $format = 'Undiscounted amount: %s%.2f';
+ } else {
+ $d .= 'setup ' if defined $param->{'setup_charge'};
+ $d .= 'discount of '. $discount->description_short;
+ $d .= " for $months month". ( $months!=1 ? 's' : '' )
+ unless defined $param->{'setup_charge'};
+ $d .= ": $money_char$amount" if $months != 1 || $discount->percent;
+ $format = 'Undiscounted monthly amount: %s%.2f';
+ }
+
push @$details, $d;
+ push @$details, sprintf $format, $money_char, $br;
$tot_discount += $amount;
}