projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6d0ece6
)
correctly handle percentage discounts with duration less than package billing cycle...
author
Mark Wells
<mark@freeside.biz>
Sat, 5 Dec 2015 00:45:29 +0000
(16:45 -0800)
committer
Mark Wells
<mark@freeside.biz>
Sat, 5 Dec 2015 00:45:29 +0000
(16:45 -0800)
FS/FS/part_pkg/discount_Mixin.pm
patch
|
blob
|
history
diff --git
a/FS/FS/part_pkg/discount_Mixin.pm
b/FS/FS/part_pkg/discount_Mixin.pm
index
e411c84
..
5b3f100
100644
(file)
--- a/
FS/FS/part_pkg/discount_Mixin.pm
+++ b/
FS/FS/part_pkg/discount_Mixin.pm
@@
-134,11
+134,12
@@
sub calc_discount {
} else {
# we are calculating a recurring fee discount. estimate the recurring
} else {
# we are calculating a recurring fee discount. estimate the recurring
- # fee:
- # XXX it would be more accurate for calc_recur to just _tell us_ what
- # it's going to charge
+ # fee. Note we use $months here rather than $chg_months so that if the
+ # remaining discount amount is for less time than the package period,
+ # the "estimated recurring fee" is only for as long as the discount
+ # lasts.
- my $recur_charge = $br * $
chg_
months / $self->freq;
+ my $recur_charge = $br * $months / $self->freq;
# round this, because the real recur charge is rounded
$recur_charge = sprintf('%.2f', $recur_charge);
# round this, because the real recur charge is rounded
$recur_charge = sprintf('%.2f', $recur_charge);
@@
-218,7
+219,7
@@
sub calc_discount {
'pkgdiscountnum' => $cust_pkg_discount->pkgdiscountnum,
'amount' => $amount,
'months' => $months,
'pkgdiscountnum' => $cust_pkg_discount->pkgdiscountnum,
'amount' => $amount,
'months' => $months,
- # XXX should have a 'setuprecur'
+ # XXX should have a 'setuprecur'
(and on 4.x, it does)
};
push @{ $param->{'discounts'} }, $cust_bill_pkg_discount;
$tot_discount += $amount;
};
push @{ $param->{'discounts'} }, $cust_bill_pkg_discount;
$tot_discount += $amount;