projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9ab5259
)
fix sync_bill_date near the end of the month, RT#10503
author
mark
<mark>
Tue, 9 Nov 2010 21:40:18 +0000
(21:40 +0000)
committer
mark
<mark>
Tue, 9 Nov 2010 21:40:18 +0000
(21:40 +0000)
FS/FS/part_pkg/flat.pm
patch
|
blob
|
history
FS/FS/part_pkg/prorate_Mixin.pm
patch
|
blob
|
history
diff --git
a/FS/FS/part_pkg/flat.pm
b/FS/FS/part_pkg/flat.pm
index
a17813b
..
e8f54d1
100644
(file)
--- a/
FS/FS/part_pkg/flat.pm
+++ b/
FS/FS/part_pkg/flat.pm
@@
-198,7
+198,7
@@
sub calc_recur {
my $charge = $self->base_recur($cust_pkg);
if ( $self->option('sync_bill_date',1) ) {
my $next_bill = $cust_pkg->cust_main->next_bill_date;
my $charge = $self->base_recur($cust_pkg);
if ( $self->option('sync_bill_date',1) ) {
my $next_bill = $cust_pkg->cust_main->next_bill_date;
- if ( defined($next_bill)
and $next_bill != $$sdate
) {
+ if ( defined($next_bill) ) {
my $cutoff_day = (localtime($next_bill))[3];
$charge = $self->calc_prorate(@_, $cutoff_day);
}
my $cutoff_day = (localtime($next_bill))[3];
$charge = $self->calc_prorate(@_, $cutoff_day);
}
diff --git
a/FS/FS/part_pkg/prorate_Mixin.pm
b/FS/FS/part_pkg/prorate_Mixin.pm
index
9c0c266
..
4516904
100644
(file)
--- a/
FS/FS/part_pkg/prorate_Mixin.pm
+++ b/
FS/FS/part_pkg/prorate_Mixin.pm
@@
-33,8
+33,8
@@
sub calc_recur {
=item calc_prorate CUST_PKG
Takes all the arguments of calc_recur, followed by a day of the month
=item calc_prorate CUST_PKG
Takes all the arguments of calc_recur, followed by a day of the month
-to prorate to
. Calculates a prorated charge from the $sdate to that day,
-and sets the $sdate and $param->{months} accordingly.
+to prorate to
(which must be <= 28). Calculates a prorated charge from
+
the $sdate to that day,
and sets the $sdate and $param->{months} accordingly.
Options:
- recur_fee: The charge to use for a complete billing period.
Options:
- recur_fee: The charge to use for a complete billing period.
@@
-60,6
+60,17
@@
sub calc_prorate {
}
my $mend;
my $mstart;
}
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));
if ( $mday >= $cutoff_day ) {
$mend =
timelocal(0,0,0,$cutoff_day,$mon == 11 ? 0 : $mon + 1,$year+($mon==11));