summaryrefslogtreecommitdiff
path: root/FS/FS/quotation_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/quotation_pkg_discount.pm
parent3d796bf211374d941bda1116ee27a0543045ea8a (diff)
discounts + quotations, #33099
Diffstat (limited to 'FS/FS/quotation_pkg_discount.pm')
-rw-r--r--FS/FS/quotation_pkg_discount.pm49
1 files changed, 47 insertions, 2 deletions
diff --git a/FS/FS/quotation_pkg_discount.pm b/FS/FS/quotation_pkg_discount.pm
index 19930ac..633308c 100644
--- a/FS/FS/quotation_pkg_discount.pm
+++ b/FS/FS/quotation_pkg_discount.pm
@@ -1,5 +1,6 @@
package FS::quotation_pkg_discount;
use base qw( FS::Record );
+use FS::Maketext 'mt'; # XXX not really correct
use strict;
@@ -36,12 +37,21 @@ primary key
=item quotationpkgnum
-quotationpkgnum
+quotationpkgnum of the L<FS::quotation_pkg> record that this discount is
+for.
=item discountnum
-discountnum
+discountnum (L<FS::discount>)
+=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
@@ -107,6 +117,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;
@@ -115,6 +127,39 @@ sub check {
=back
+=item amount
+
+Returns the total amount of this discount (setup + recur), for compatibility
+with L<FS::cust_bill_pkg_discount>.
+
+=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;
+}
+
=head1 BUGS
=head1 SEE ALSO