X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg_discount.pm;h=9e64d20769063772c91c9dbd9f37a6bfc4446d2b;hb=292ef074d01bb925e9a466ed771bf2ac418bb44f;hp=dfa83d393c34917042085c9f7cc33a70d1dbec62;hpb=4d6c465f4b32a49f8bce091f6cb5abb209123ec2;p=freeside.git diff --git a/FS/FS/cust_bill_pkg_discount.pm b/FS/FS/cust_bill_pkg_discount.pm index dfa83d393..9e64d2076 100644 --- a/FS/FS/cust_bill_pkg_discount.pm +++ b/FS/FS/cust_bill_pkg_discount.pm @@ -1,10 +1,7 @@ package FS::cust_bill_pkg_discount; +use base qw( FS::cust_main_Mixin FS::Record ); use strict; -use base qw( FS::cust_main_Mixin FS::Record ); -use FS::Record qw( qsearch qsearchs ); -use FS::cust_bill_pkg; -use FS::cust_pkg_discount; =head1 NAME @@ -125,25 +122,43 @@ sub check { Returns the associated line item (see L). -=cut - -sub cust_bill_pkg { - my $self = shift; - qsearchs( 'cust_bill_pkg', { 'billpkgnum' => $self->billpkgnum } ) ; -} - =item cust_pkg_discount Returns the associated customer discount (see L). +=item description + +Returns a string describing the discount (for use on an invoice). + =cut -sub cust_pkg_discount { +sub description { my $self = shift; - qsearchs( 'cust_pkg_discount', { 'pkgdiscountnum' => $self->pkgdiscountnum }); + 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