diff options
author | Mark Wells <mark@freeside.biz> | 2015-01-27 22:46:55 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2015-01-27 22:46:55 -0800 |
commit | 167c155032545af623972ffb449455810d0a2b78 (patch) | |
tree | 6b0ae74a2409bf05986ba78197f77dddc20b0b64 /FS/FS | |
parent | 65b94bd80599a27c658b792f02c85d200488688d (diff) |
show months used/remaining in discounts on invoices, #31273, #32959
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/Template_Mixin.pm | 25 |
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); } } |