From 94e8f9186cfe936b06e2b2049b38962ef0b6b9db Mon Sep 17 00:00:00 2001 From: mark Date: Sat, 3 Dec 2011 19:49:43 +0000 Subject: [PATCH] fix edge case with prorate_defer_bill, #15432 --- FS/FS/part_pkg/prorate_Mixin.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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); -- 2.11.0