From: mark Date: Sat, 3 Dec 2011 19:49:43 +0000 (+0000) Subject: fix edge case with prorate_defer_bill, #15432 X-Git-Tag: freeside_2_3_1~114 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=94e8f9186cfe936b06e2b2049b38962ef0b6b9db fix edge case with prorate_defer_bill, #15432 --- diff --git a/FS/FS/part_pkg/prorate_Mixin.pm b/FS/FS/part_pkg/prorate_Mixin.pm index 380f0b029..78a089313 100644 --- a/FS/FS/part_pkg/prorate_Mixin.pm +++ b/FS/FS/part_pkg/prorate_Mixin.pm @@ -103,7 +103,7 @@ sub calc_prorate { $months += $param->{'freq_override'} - 1; } elsif ( ( $self->option('add_full_period',1) - or $self->option('prorate_defer_bill',1) ) # necessary + or $self->option('prorate_defer_bill',1) ) and $months < $self->freq ) { $months += $self->freq; $$sdate = $self->add_freq($mstart); @@ -131,10 +131,12 @@ sub prorate_setup { and $cutoff_day ) { my ($mnow, $mend, $mstart) = $self->_endpoints($sdate, $cutoff_day); - # if today is the cutoff day, set the next bill to right now instead - # of waiting a month. + # If today is the cutoff day, set the next bill and setup both to + # midnight today, so that the customer will be billed normally for a + # month starting today. if ( $mnow - $mstart < 86400 ) { - $cust_pkg->bill($mnow); + $cust_pkg->setup($mstart); + $cust_pkg->bill($mstart); } else { $cust_pkg->bill($mend);