X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg_discount.pm;h=1d6866a324acf11ff9bdac5eed0b26215a2f6100;hb=d46254f9b36873e457424eefdcf3610b71ef889d;hp=e7dd5f22fc87224ec364f2de92fad76f04269fe7;hpb=624b2d44625f69d71175c3348cae635d580c890b;p=freeside.git diff --git a/FS/FS/cust_bill_pkg_discount.pm b/FS/FS/cust_bill_pkg_discount.pm index e7dd5f22f..1d6866a32 100644 --- a/FS/FS/cust_bill_pkg_discount.pm +++ b/FS/FS/cust_bill_pkg_discount.pm @@ -28,8 +28,8 @@ FS::cust_bill_pkg_discount - Object methods for cust_bill_pkg_discount records =head1 DESCRIPTION An FS::cust_bill_pkg_discount object represents the slice of a customer -applied to a line item. FS::cust_bill_pkg_discount inherits from -FS::Record. The following fields are currently supported: +discount applied to a specific line item. FS::cust_bill_pkg_discount inherits +from FS::Record. The following fields are currently supported: =over 4 @@ -144,6 +144,39 @@ sub 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