projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e1bd031
)
limit unused-time credit if the invoice already has credits applied, #72873, from...
author
Mark Wells
<mark@freeside.biz>
Mon, 17 Oct 2016 23:03:13 +0000
(16:03 -0700)
committer
Mark Wells
<mark@freeside.biz>
Mon, 17 Oct 2016 23:08:39 +0000
(16:08 -0700)
FS/FS/cust_pkg.pm
patch
|
blob
|
history
diff --git
a/FS/FS/cust_pkg.pm
b/FS/FS/cust_pkg.pm
index
634895a
..
4de2faa
100644
(file)
--- a/
FS/FS/cust_pkg.pm
+++ b/
FS/FS/cust_pkg.pm
@@
-1817,6
+1817,8
@@
sub credit_remaining {
# the cancellation date (can happen with advance billing). in that
# case, use the entire recurring charge:
my $amount = $cust_bill_pkg->recur - $cust_bill_pkg->usage;
# the cancellation date (can happen with advance billing). in that
# case, use the entire recurring charge:
my $amount = $cust_bill_pkg->recur - $cust_bill_pkg->usage;
+ my $max_credit = $amount
+ - $cust_bill_pkg->credited('', '', setuprecur => 'recur') || 0;
# but if the cancellation happens during the interval, prorate it:
# (XXX obey prorate_round_day here?)
# but if the cancellation happens during the interval, prorate it:
# (XXX obey prorate_round_day here?)
@@
-1825,14
+1827,23
@@
sub credit_remaining {
($edate - $time) / ($edate - $cust_bill_pkg->sdate);
}
($edate - $time) / ($edate - $cust_bill_pkg->sdate);
}
+ # if there are existing credits, don't let the sum of credits exceed
+ # the recurring charge
+ $amount = $max_credit if $amount > $max_credit;
+
$amount = sprintf('%.2f', $amount);
$amount = sprintf('%.2f', $amount);
- push @billpkgnums, $cust_bill_pkg->billpkgnum;
- push @amounts, $amount;
- push @setuprecurs, 'recur';
+ # if no time has been used and/or there are existing line item
+ # credits, we may end up not needing to credit anything.
+ if ( $amount > 0 ) {
- warn "Crediting for $amount on package ".$remain_pkg->pkgnum."\n"
- if $DEBUG;
+ push @billpkgnums, $cust_bill_pkg->billpkgnum;
+ push @amounts, $amount;
+ push @setuprecurs, 'recur';
+
+ warn "Crediting for $amount on package ".$remain_pkg->pkgnum."\n"
+ if $DEBUG;
+ }
}
}