From 7ba804d78accc21c51ecc298623f5168e0875db2 Mon Sep 17 00:00:00 2001 From: mark Date: Thu, 16 Jun 2011 22:07:42 +0000 Subject: [PATCH] better calculation of prorate rounding, #13299 --- FS/FS/part_pkg/prorate_Mixin.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/FS/FS/part_pkg/prorate_Mixin.pm b/FS/FS/part_pkg/prorate_Mixin.pm index ec4a1f5bf..a53728be2 100644 --- a/FS/FS/part_pkg/prorate_Mixin.pm +++ b/FS/FS/part_pkg/prorate_Mixin.pm @@ -55,7 +55,13 @@ sub calc_prorate { my $mnow = $$sdate; my ($sec, $min, $hour, $mday, $mon, $year) = (localtime($mnow))[0..5]; if( $self->option('prorate_round_day',1) ) { - $mday++ if $hour >= 12; + # If the time is 12:00-23:59, move to the next day by adding 18 + # hours to $mnow. Because of DST this can end up from 05:00 to 18:59 + # but it's always within the next day. + $mnow += 64800 if $hour >= 12; + # Get the new day, month, and year. + ($mday,$mon,$year) = (localtime($mnow))[3..5]; + # Then set $mnow to midnight on that date. $mnow = timelocal(0,0,0,$mday,$mon,$year); } my $mend; -- 2.11.0