X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fquotation_pkg_discount.pm;h=19a7bceb469552d9718f579fc7095678e0460b7f;hb=c6df7ad114570d49e51ef1f806b83bb7e1a1bca8;hp=34e13a61082819a745e44524619138b6e0629029;hpb=53fe471803155c11f32d7d1626960f6951b618bc;p=freeside.git diff --git a/FS/FS/quotation_pkg_discount.pm b/FS/FS/quotation_pkg_discount.pm index 34e13a610..19a7bceb4 100644 --- a/FS/FS/quotation_pkg_discount.pm +++ b/FS/FS/quotation_pkg_discount.pm @@ -1,8 +1,11 @@ package FS::quotation_pkg_discount; use strict; -use base qw( FS::Record ); +use base qw( FS::pkg_discount_Mixin FS::Record ); use FS::Record qw( qsearch qsearchs ); +use FS::quotation_pkg; +use FS::discount; +use FS::Maketext 'mt'; =head1 NAME @@ -37,12 +40,21 @@ primary key =item quotationpkgnum -quotationpkgnum +quotationpkgnum of the L record that this discount is +for. =item discountnum -discountnum +discountnum (L) +=item setup_amount + +Amount that will be discounted from setup fees, per package quantity. + +=item recur_amount + +Amount that will be discounted from recurring fees in the first billing +cycle, per package quantity. =back @@ -69,27 +81,15 @@ sub table { 'quotation_pkg_discount'; } Adds this record to the database. If there is an error, returns the error, otherwise returns false. -=cut - -# the insert method can be inherited from FS::Record - =item delete Delete this record from the database. -=cut - -# the delete method can be inherited from FS::Record - =item replace OLD_RECORD Replaces the OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false. -=cut - -# the replace method can be inherited from FS::Record - =item check Checks all fields to make sure this is a valid quotation package discount. @@ -108,6 +108,8 @@ sub check { $self->ut_numbern('quotationpkgdiscountnum') || $self->ut_foreign_key('quotationpkgnum', 'quotation_pkg', 'quotationpkgnum' ) || $self->ut_foreign_key('discountnum', 'discount', 'discountnum' ) + || $self->ut_moneyn('setup_amount') + || $self->ut_moneyn('recur_amount') ; return $error if $error; @@ -116,6 +118,50 @@ sub check { =back +=item amount + +Returns the total amount of this discount (setup + recur), for compatibility +with L. + +=cut + +sub amount { + my $self = shift; + return $self->get('setup_amount') + $self->get('recur_amount'); +} + +=item description + +Returns a string describing the discount (for use on the quotation). + +=cut + +sub description { + my $self = shift; + my $discount = $self->discount; + my $desc = $discount->description_short; + # XXX localize to prospect language, once prospects get languages + $desc .= mt(' each') if $self->quotation_pkg->quantity > 1; + + if ($discount->months) { + # unlike cust_bill_pkg_discount, there are no "months remaining"; it + # hasn't started yet. + $desc .= mt(' (for [quant,_1,month])', $discount->months); + } + return $desc; +} + +#stub for 3.x +sub quotation_pkg { + my $self = shift; + FS::quotation_pkg->by_key($self->quotationpkgnum); +} + +sub discount { + my $self = shift; + FS::discount->by_key($self->discountnum); +} + =head1 BUGS =head1 SEE ALSO