summaryrefslogtreecommitdiff
path: root/FS/FS/cust_bill_pkg_discount.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2015-01-31 14:44:16 -0800
committerMark Wells <mark@freeside.biz>2015-01-31 14:44:22 -0800
commitf6abf4cd6d8e7a0121124e9394b5f28f5bc4daa5 (patch)
treedb6264c4c2c38a423310d82d4443580607ecc82d /FS/FS/cust_bill_pkg_discount.pm
parent3d796bf211374d941bda1116ee27a0543045ea8a (diff)
discounts + quotations, #33099
Diffstat (limited to 'FS/FS/cust_bill_pkg_discount.pm')
-rw-r--r--FS/FS/cust_bill_pkg_discount.pm33
1 files changed, 33 insertions, 0 deletions
diff --git a/FS/FS/cust_bill_pkg_discount.pm b/FS/FS/cust_bill_pkg_discount.pm
index 534a067..9e64d20 100644
--- a/FS/FS/cust_bill_pkg_discount.pm
+++ b/FS/FS/cust_bill_pkg_discount.pm
@@ -126,6 +126,39 @@ Returns the associated line item (see L<FS::cust_bill_pkg>).
Returns the associated customer discount (see L<FS::cust_pkg_discount>).
+=item description
+
+Returns a string describing the discount (for use on an invoice).
+
+=cut
+
+sub description {
+ my $self = shift;
+ my $discount = $self->cust_pkg_discount->discount;
+ my $desc = $discount->description_short;
+ $desc .= $self->mt(' each') if $self->cust_bill_pkg->quantity > 1;
+
+ if ($discount->months) {
+ # calculate months remaining on this cust_pkg_discount after this invoice
+ my $date = $self->cust_bill_pkg->cust_bill->_date;
+ 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 <= ?',
+ $self->pkgdiscountnum,
+ $date
+ );
+ $used ||= 0;
+ my $remaining = sprintf('%.2f', $discount->months - $used);
+ $desc .= $self->mt(' for [quant,_1,month] ([quant,_2,month] remaining)',
+ $self->months,
+ $remaining
+ );
+ }
+ return $desc;
+}
+
=back
=head1 BUGS