X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fflat.pm;h=762ecebc08be28c73f0f01c1b7faf11149f89aa5;hb=57bb423fe457ba4e13726877f53bcdf944f828f8;hp=0bc3860a322a56028f2eaf453b3975bd2f338327;hpb=1ef463d50def1a8af49a8687ae4fc53f40311ab4;p=freeside.git diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index 0bc3860a3..762ecebc0 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -57,6 +57,12 @@ tie my %contract_years, 'Tie::IxHash', ( 'the customer\'s next bill date', 'type' => 'checkbox', }, + 'prorate_defer_change_bill' => { + 'name' => 'When synchronizing, defer bill for '. + 'package changes until the customer\'s '. + 'next bill date', + 'type' => 'checkbox', + }, 'prorate_round_day' => { 'name' => 'When synchronizing, round the prorated '. 'period', @@ -87,7 +93,8 @@ tie my %contract_years, 'Tie::IxHash', ( }, 'fieldorder' => [ qw( recur_temporality start_1st - sync_bill_date prorate_defer_bill prorate_round_day + sync_bill_date prorate_defer_bill + prorate_defer_change_bill prorate_round_day suspend_bill unsuspend_adjust_bill bill_recur_on_cancel bill_suspend_as_cancel @@ -114,35 +121,30 @@ sub price_info { } sub calc_setup { - my($self, $cust_pkg, $sdate, $details, $param ) = @_; + my($self, $cust_pkg, $time, $details, $param ) = @_; - return 0 if $self->prorate_setup($cust_pkg, $sdate); + return 0 if $self->prorate_setup($cust_pkg, $time); - 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, $time, $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); + $discount = $self->calc_discount($cust_pkg, \$time, $details, $param); delete $param->{'setup_charge'}; - } - - return sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); } - return; - + sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); } sub base_setup { - my($self, $cust_pkg, $sdate, $details ) = @_; + my($self, $cust_pkg, $time, $details ) = @_; $self->option('setup_fee', 1) || 0; }