diff options
author | Mark Wells <mark@freeside.biz> | 2012-03-17 16:29:29 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-03-17 16:29:29 -0700 |
commit | d05c6d1891149292d1cd87d0bf6ec843f54b4ff0 (patch) | |
tree | ebbd32391b8111900cace8be4514b2496793f5e5 | |
parent | 68cd93a81814d8725118a66b54f20e2c2c1c20f0 (diff) |
fix term discount display, #16965
-rw-r--r-- | FS/FS/cust_bill.pm | 3 | ||||
-rw-r--r-- | FS/FS/discount_plan.pm | 11 |
2 files changed, 11 insertions, 3 deletions
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index bb44c0524..3aa75eca5 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -5261,6 +5261,9 @@ sub _items_discounts_avail { join(', ', map { "#$_" } $plan->pkgnums) if $list_pkgnums; + # discounts for non-integer months don't work anyway + $months = sprintf("%d", $months); + +{ description => $self->mt('Save [_1]% by paying for [_2] months', $percent, $months), diff --git a/FS/FS/discount_plan.pm b/FS/FS/discount_plan.pm index 3ae44c8d4..6a456766d 100644 --- a/FS/FS/discount_plan.pm +++ b/FS/FS/discount_plan.pm @@ -80,19 +80,24 @@ sub new { $self->{discounted} += $setup; } - if ( $discount->percent ) { + if ( $discount->percent > 0 ) { $discountable += $months * $permonth; $discountable -= ($discountable * $discount->percent / 100); $discountable -= ($permonth - $recur); # correct for prorate $self->{discounted} += $discountable; } - else { + elsif ( $discount->amount > 0 ) { $discountable += $recur; $discountable -= $discount->amount * $recur/$permonth; $discountable += ($months - 1) * max($permonth - $discount->amount,0); + $self->{discounted} += $discountable; + } + else { + warn "discountnum ".$discount->discountnum. + " has no amount or percentage, ignored\n"; + $self->{discounted} = $self->{base}; } - $self->{discounted} += $discountable; push @{ $self->{pkgnums} }, $cust_pkg->pkgnum; } else { #no discount |