summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2011-10-25 00:05:20 +0000
committerivan <ivan>2011-10-25 00:05:20 +0000
commit196009897987b51fdfe36f5e4ad92dcf7c321607 (patch)
treeb433f52ed4bbda89f1b479fc280367d976b80a00
parente960748681b0fc8f131739a509e9041dabb3eeb7 (diff)
make discount-show-always get along with setup discounts, RT#11512
-rw-r--r--FS/FS/cust_main/Billing.pm19
1 files changed, 11 insertions, 8 deletions
diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm
index f4842e6e8..3cc7b9bc8 100644
--- a/FS/FS/cust_main/Billing.pm
+++ b/FS/FS/cust_main/Billing.pm
@@ -842,7 +842,6 @@ sub _make_lines {
my $old_cust_pkg = new FS::cust_pkg \%hash;
my @details = ();
- my @discounts = ();
my $lineitems = 0;
$cust_pkg->pkgpart($part_pkg->pkgpart);
@@ -853,7 +852,8 @@ sub _make_lines {
my $setup = 0;
my $unitsetup = 0;
- my %setup_param = ();
+ my @setup_discounts = ();
+ my %setup_param = ( 'discounts' => \@setup_discounts );
if ( ! $options{recurring_only}
and ! $options{cancel}
and ( $options{'resetup'}
@@ -900,6 +900,7 @@ sub _make_lines {
#XXX unit stuff here too
my $recur = 0;
my $unitrecur = 0;
+ my @recur_discounts = ();
my $sdate;
if ( ! $cust_pkg->start_date
and ( ! $cust_pkg->susp || $part_pkg->option('suspend_bill', 1) )
@@ -931,12 +932,12 @@ sub _make_lines {
&& ( $cust_pkg->getfield('bill') || 0 ) <= $time
&& !$options{cancel}
);
- my %param = ( 'precommit_hooks' => $precommit_hooks,
+ my %param = ( %setup_param,
+ 'precommit_hooks' => $precommit_hooks,
'increment_next_bill' => $increment_next_bill,
- 'discounts' => \@discounts,
+ 'discounts' => \@recur_discounts,
'real_pkgpart' => $real_pkgpart,
'freq_override' => $options{freq_override} || '',
- %setup_param,
);
my $method = $options{cancel} ? 'calc_cancel' : 'calc_recur';
@@ -1009,8 +1010,10 @@ sub _make_lines {
return "negative recur $recur for pkgnum ". $cust_pkg->pkgnum;
}
- my $discount_show_always = ($recur == 0 && scalar(@discounts)
- && $conf->exists('discount-show-always'));
+ my $discount_show_always = $conf->exists('discount-show-always')
+ && ( ($setup == 0 && scalar(@setup_discounts))
+ || ($recur == 0 && scalar(@recur_discounts))
+ );
if ( $setup != 0
|| $recur != 0
@@ -1039,7 +1042,7 @@ sub _make_lines {
'unitrecur' => $unitrecur,
'quantity' => $cust_pkg->quantity,
'details' => \@details,
- 'discounts' => \@discounts,
+ 'discounts' => [ @setup_discounts, @recur_discounts ],
'hidden' => $part_pkg->hidden,
'freq' => $part_pkg->freq,
};