summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2015-01-27 22:46:55 -0800
committerMark Wells <mark@freeside.biz>2015-01-27 22:46:55 -0800
commit167c155032545af623972ffb449455810d0a2b78 (patch)
tree6b0ae74a2409bf05986ba78197f77dddc20b0b64 /FS/FS
parent65b94bd80599a27c658b792f02c85d200488688d (diff)
show months used/remaining in discounts on invoices, #31273, #32959
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/Template_Mixin.pm25
1 files changed, 23 insertions, 2 deletions
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 1fed7f1b9..996cb55a4 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -3448,8 +3448,29 @@ sub _items_cust_bill_pkg {
ext_description => \@ext,
};
foreach my $cust_bill_pkg_discount (@discounts) {
- my $def = $cust_bill_pkg_discount->cust_pkg_discount->discount;
- push @ext, &{$escape_function}( $def->description );
+ my $discount = $cust_bill_pkg_discount->cust_pkg_discount->discount;
+ my $discount_desc = $discount->description_short;
+
+ if ($discount->months) {
+
+ # calculate months remaining after this invoice
+ my $used = FS::Record->scalar_sql(
+ 'SELECT SUM(months) FROM cust_bill_pkg_discount
+ JOIN cust_bill_pkg USING (billpkgnum)
+ JOIN cust_bill USING (invnum)
+ WHERE pkgdiscountnum = ? AND _date <= ?',
+ $cust_bill_pkg_discount->pkgdiscountnum,
+ $self->_date
+ );
+ $used ||= 0;
+ my $remaining = sprintf('%.2f', $discount->months - $used);
+ # append "for X months (Y months remaining)"
+ $discount_desc .= $self->mt(' for [quant,_1,month] ([quant,_2,month] remaining)',
+ $cust_bill_pkg_discount->months,
+ $remaining
+ );
+ } # else it's not time-limited
+ push @ext, &{$escape_function}($discount_desc);
}
}