diff options
author | Mark Wells <mark@freeside.biz> | 2015-01-31 14:44:16 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2015-01-31 14:44:22 -0800 |
commit | f6abf4cd6d8e7a0121124e9394b5f28f5bc4daa5 (patch) | |
tree | db6264c4c2c38a423310d82d4443580607ecc82d /FS/FS/cust_bill_pkg_discount.pm | |
parent | 3d796bf211374d941bda1116ee27a0543045ea8a (diff) |
discounts + quotations, #33099
Diffstat (limited to 'FS/FS/cust_bill_pkg_discount.pm')
-rw-r--r-- | FS/FS/cust_bill_pkg_discount.pm | 33 |
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 |