diff options
author | ivan <ivan> | 2011-10-25 00:05:20 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-10-25 00:05:20 +0000 |
commit | 196009897987b51fdfe36f5e4ad92dcf7c321607 (patch) | |
tree | b433f52ed4bbda89f1b479fc280367d976b80a00 | |
parent | e960748681b0fc8f131739a509e9041dabb3eeb7 (diff) |
make discount-show-always get along with setup discounts, RT#11512
-rw-r--r-- | FS/FS/cust_main/Billing.pm | 19 |
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, }; |