From: Mark Wells Date: Sat, 17 Mar 2012 23:29:29 +0000 (-0700) Subject: fix term discount display, #16965 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;ds=sidebyside;h=d05c6d1891149292d1cd87d0bf6ec843f54b4ff0;p=freeside.git fix term discount display, #16965 --- 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