From: Christopher Burger Date: Tue, 1 May 2018 14:07:54 +0000 (-0400) Subject: RT# 77964 - Placed waive setup fee check back to billing.pm, and added check for... X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=d263897b2b9247340901f93c57f44c7f85d87d37 RT# 77964 - Placed waive setup fee check back to billing.pm, and added check for prorate package in billing.pm --- diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index 44a4dbb04..a5a38fdc2 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -1027,9 +1027,10 @@ sub _make_lines { || $cust_pkg->expire > $cmp_time ) ) { - + warn " bill setup\n" if $DEBUG > 1; + unless ($cust_pkg->waive_setup) { $lineitems++; $setup = eval { $cust_pkg->calc_setup( $time, \@details, \%setup_param ) }; @@ -1049,6 +1050,12 @@ sub _make_lines { $setup_billed_currency = delete $setup_param{'billed_currency'}; $setup_billed_amount = delete $setup_param{'billed_amount'}; } + } + + if ($cust_pkg->waive_setup && $part_pkg->plan eq "prorate") { + $lineitems++; + $setup = 0 if $part_pkg->prorate_setup($cust_pkg, $time); + } if ( $cust_pkg->get('setup') ) { # don't change it diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index 0bc3860a3..cfee58465 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -118,26 +118,22 @@ sub calc_setup { return 0 if $self->prorate_setup($cust_pkg, $sdate); - if (!$cust_pkg->waive_setup) { - my $i = 0; - my $count = $self->option( 'additional_count', 'quiet' ) || 0; - while ($i < $count) { - push @$details, $self->option( 'additional_info' . $i++ ); - } + my $i = 0; + my $count = $self->option( 'additional_count', 'quiet' ) || 0; + while ($i < $count) { + push @$details, $self->option( 'additional_info' . $i++ ); + } - my $charge = $self->base_setup($cust_pkg, $sdate, $details); + my $charge = $self->base_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'}; - } - - return sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); + my $discount = 0; + if ( $charge > 0 ) { + $param->{'setup_charge'} = $charge; + $discount = $self->calc_discount($cust_pkg, $sdate, $details, $param); + delete $param->{'setup_charge'}; } - return; + sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); }