diff options
author | Christopher Burger <burgerc@freeside.biz> | 2018-04-20 12:08:43 -0400 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2018-05-04 12:43:58 -0400 |
commit | b8aea2bf8dcebf7a6b9a217ee78114e42404fe68 (patch) | |
tree | 36ef497612f597699f8d52809cc35ec725c0b82d /FS | |
parent | f394ef58c444b753ea9508a02593ce38f012e5d4 (diff) |
RT# 77964 - fixed so deferring date now works when waive setup fee is set
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_main/Billing.pm | 2 | ||||
-rw-r--r-- | FS/FS/part_pkg/flat.pm | 23 |
2 files changed, 14 insertions, 11 deletions
diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index 08b10c1..44a4dbb 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -1030,7 +1030,6 @@ sub _make_lines { warn " bill setup\n" if $DEBUG > 1; - unless ( $cust_pkg->waive_setup ) { $lineitems++; $setup = eval { $cust_pkg->calc_setup( $time, \@details, \%setup_param ) }; @@ -1050,7 +1049,6 @@ sub _make_lines { $setup_billed_currency = delete $setup_param{'billed_currency'}; $setup_billed_amount = delete $setup_param{'billed_amount'}; } - } 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 6fd9c7d..0bc3860 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -118,22 +118,27 @@ sub calc_setup { return 0 if $self->prorate_setup($cust_pkg, $sdate); - my $i = 0; - my $count = $self->option( 'additional_count', 'quiet' ) || 0; - while ($i < $count) { - push @$details, $self->option( 'additional_info' . $i++ ); - } + 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 $charge = $self->base_setup($cust_pkg, $sdate, $details); + my $charge = $self->base_setup($cust_pkg, $sdate, $details); - my $discount = 0; - if ( $charge > 0 ) { + 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) ); } - sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); + return; + } sub base_setup { |