summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-03-24 16:35:59 -0700
committerMark Wells <mark@freeside.biz>2012-03-24 16:35:59 -0700
commitbb6b1e9ed5209a5e28e55c6a7b3a1034575d49b9 (patch)
tree42ae3f6f5ff2dcc42a397de908edefad86605ae2
parent98550895c14615062ba0b03199a58144796829de (diff)
better sync behavior near the end of the month, #17043
-rw-r--r--FS/FS/part_pkg/prorate_Mixin.pm21
1 files changed, 5 insertions, 16 deletions
diff --git a/FS/FS/part_pkg/prorate_Mixin.pm b/FS/FS/part_pkg/prorate_Mixin.pm
index 0f40576be..a01b5c409 100644
--- a/FS/FS/part_pkg/prorate_Mixin.pm
+++ b/FS/FS/part_pkg/prorate_Mixin.pm
@@ -2,7 +2,7 @@ package FS::part_pkg::prorate_Mixin;
use strict;
use vars qw( %info );
-use Time::Local qw( timelocal );
+use Time::Local qw( timelocal timelocal_nocheck );
use Date::Format qw( time2str );
%info = (
@@ -202,28 +202,17 @@ sub _endpoints {
}
my $mend;
my $mstart;
- # if cutoff day > 28, force it to the 1st of next month
- if ( $cutoff_day > 28 ) {
- $cutoff_day = 1;
- # and if we are currently after the 28th, roll the current day
- # forward to that day
- if ( $mday > 28 ) {
- $mday = 1;
- #set $mnow = $mend so the amount billed will be zero
- $mnow = timelocal(0,0,0,1,$mon == 11 ? 0 : $mon + 1,$year+($mon==11));
- }
- }
if ( $mday >= $cutoff_day ) {
$mend =
- timelocal(0,0,0,$cutoff_day,$mon == 11 ? 0 : $mon + 1,$year+($mon==11));
+ timelocal_nocheck(0,0,0,$cutoff_day,$mon == 11 ? 0 : $mon + 1,$year+($mon==11));
$mstart =
- timelocal(0,0,0,$cutoff_day,$mon,$year);
+ timelocal_nocheck(0,0,0,$cutoff_day,$mon,$year);
}
else {
$mend =
- timelocal(0,0,0,$cutoff_day,$mon,$year);
+ timelocal_nocheck(0,0,0,$cutoff_day,$mon,$year);
$mstart =
- timelocal(0,0,0,$cutoff_day,$mon == 0 ? 11 : $mon - 1,$year-($mon==0));
+ timelocal_nocheck(0,0,0,$cutoff_day,$mon == 0 ? 11 : $mon - 1,$year-($mon==0));
}
return ($mnow, $mend, $mstart);
}