package FS::part_pkg::discount_Mixin;
use strict;
-use vars qw(@ISA %info);
-use FS::part_pkg;
+use vars qw( %info );
+use Time::Local qw( timelocal );
+use List::Util qw( min );
use FS::cust_pkg;
use FS::cust_bill_pkg_discount;
-use Time::Local qw(timelocal);
-use List::Util 'min';
-@ISA = qw(FS::part_pkg);
%info = ( 'disabled' => 1 );
=head1 NAME
by which to reduce the recurring fee; also increments months used on the
discount and generates an invoice detail describing it.
-If the configuration option 'discount-show_available' is enabled, and this
-package is eligible for a prepayment discount but doesn't have one, an
-invoice detail will be generated to describe the available discounts.
-
=cut
sub calc_discount {
$tot_discount += $amount;
}
- if (!@cust_pkg_discount and $conf->exists('discount-show_available') ) {
- push @$details, $self->available_discounts;
- }
-
sprintf('%.2f', $tot_discount);
}
-=item available_discounts
-
-Returns a list of details decribing the available prepayment discounts
-for this package.
-
-=cut
-
-sub available_discounts {
- my $self = shift;
- return if $self->freq ne '1';
- my @details;
- my $money_char = FS::Conf->new->config('money_char') || '$';
- my @discounts = map { $_->discount } $self->part_pkg_discount;
- # probably the most logical way to arrange these
- foreach my $discount (sort { $a->months <=> $b->months } @discounts) {
- my $months = $discount->months;
- my $amount;
- if ( $discount->amount > 0 ) {
- $amount = $money_char . sprintf('%.2f', $discount->amount);
- }
- elsif ( $discount->percent ) {
- $amount = $discount->percent .'%';
- }
- else { #?
- next;
- }
- push @details, "Prepay $months months for $amount discount."
- # better way to display this?
- # if it's a problem, we'll add discount.invoice_text or something
- # for the customer-visible text line.
- }
- return @details;
-}
-
-
1;