X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fflat.pm;h=c1d1f56b2b046ed316d28f94ee401c6d3459f7f9;hb=d3e18527e2fa36b7b7fe7b8b0a5906caae3cb8de;hp=0c54b3562dad878ea005a6ead3fdbebd132ccc43;hpb=2a54fd15d357ce97c8becef00d19ed1f711c1c6a;p=freeside.git diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index 0c54b3562..c1d1f56b2 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -1,19 +1,16 @@ package FS::part_pkg::flat; use strict; -use vars qw( @ISA %info - %usage_recharge_fields @usage_recharge_fieldorder +use base qw( FS::part_pkg + FS::part_pkg::prorate_Mixin + FS::part_pkg::discount_Mixin ); +use vars qw( %info %usage_recharge_fields @usage_recharge_fieldorder ); use Tie::IxHash; use List::Util qw(min); # max); #use FS::Record qw(qsearch); use FS::UI::bytecount; use FS::Conf; -use FS::part_pkg; - -@ISA = qw(FS::part_pkg - FS::part_pkg::prorate_Mixin - FS::part_pkg::discount_Mixin); tie my %temporalities, 'Tie::IxHash', 'upcoming' => "Upcoming (future)", @@ -91,7 +88,7 @@ sub price_info { } sub calc_setup { - my($self, $cust_pkg, $sdate, $details ) = @_; + my($self, $cust_pkg, $sdate, $details, $param ) = @_; my $i = 0; my $count = $self->option( 'additional_count', 'quiet' ) || 0; @@ -101,7 +98,16 @@ sub calc_setup { my $quantity = $cust_pkg->quantity || 1; - sprintf("%.2f", $quantity * $self->unit_setup($cust_pkg, $sdate, $details) ); + my $charge = $quantity * $self->unit_setup($cust_pkg, $sdate, $details); + + my $discount = 0; + if ( $charge > 0 ) { + $param->{'setup_charge'} = $charge; + $discount = $self->calc_discount($cust_pkg, $sdate, $details, $param); + delete $param->{'setup_charge'}; + } + + sprintf('%.2f', $charge - $discount); } sub unit_setup { @@ -190,6 +196,8 @@ sub is_free_options { sub is_prepaid { 0; } #no, we're postpaid +sub can_start_date { ! shift->option('start_1st', 1) } + #XXX discounts only on recurring fees for now (no setup/one-time or usage) sub can_discount { my $self = shift;