From b79a8cb932946c849328a3c117c35821d9d21e66 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 24 Oct 2011 01:15:59 +0000 Subject: [PATCH] fix discounts not appearing for one-time charge packages, RT#13654 --- FS/FS/cust_pkg_discount.pm | 3 +++ FS/FS/part_pkg/flat.pm | 6 +----- httemplate/elements/order_pkg.js | 3 +++ httemplate/elements/tr-select-discount.html | 30 +++++++++------------------ httemplate/view/cust_main/order_pkg_link.html | 4 ++-- 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/FS/FS/cust_pkg_discount.pm b/FS/FS/cust_pkg_discount.pm index d41f497a6..72a1e9c92 100644 --- a/FS/FS/cust_pkg_discount.pm +++ b/FS/FS/cust_pkg_discount.pm @@ -171,6 +171,9 @@ sub check { ; return $error if $error; + return "Discount does not apply to setup fees, and package has no recurring" + if ! $self->discount->setup && ! $self->cust_pkg->freq; + $self->usernum($FS::CurrentUser::CurrentUser->usernum) unless $self->usernum; $self->SUPER::check; diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index cb7e18369..d59c694b1 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -220,11 +220,7 @@ sub is_prepaid { 0; } #no, we're postpaid sub can_start_date { ! shift->option('start_1st', 1) } -#XXX discounts only on recurring fees for now (no setup/one-time or usage) -sub can_discount { - my $self = shift; - $self->freq =~ /^\d+$/ && $self->freq > 0; -} +sub can_discount { 1; } sub recur_temporality { my $self = shift; diff --git a/httemplate/elements/order_pkg.js b/httemplate/elements/order_pkg.js index 2f53e3631..48073593a 100644 --- a/httemplate/elements/order_pkg.js +++ b/httemplate/elements/order_pkg.js @@ -8,8 +8,10 @@ function pkg_changed () { if ( discountnum ) { if ( form.pkgpart.options[form.pkgpart.selectedIndex].getAttribute('data-can_discount') == 1 ) { form.discountnum.disabled = false; + discountnum_changed(form.discountnum); } else { form.discountnum.disabled = true; + discountnum_changed(form.discountnum); } } @@ -29,6 +31,7 @@ function pkg_changed () { } else { form.submitButton.disabled = true; if ( discountnum ) { form.discountnum.disabled = true; } + discountnum_changed(form.discountnum); } } diff --git a/httemplate/elements/tr-select-discount.html b/httemplate/elements/tr-select-discount.html index 6bfc48530..30a60ec85 100644 --- a/httemplate/elements/tr-select-discount.html +++ b/httemplate/elements/tr-select-discount.html @@ -81,12 +81,14 @@ function <% $name %>_changed(what) { var <% $name %> = what.options[what.selectedIndex].value; - if ( <% $name %> == '-1' ) { + if ( <% $name %> == '-1' && ! what.disabled ) { <% $ge %>('<% $name %>__type_label0').style.display = ''; <% $ge %>('<% $name %>__type_label0').style.visibility = ''; <% $ge %>('<% $name %>__type').style.display = ''; <% $ge %>('<% $name %>__type').style.visibility = ''; -% #XXX retrieve previous visibility for amount, percent :/ + + <% $name %>__type_changed( <% $ge %>('<% $name %>__type') ); + <% $ge %>('<% $name %>_months_label0').style.display = ''; <% $ge %>('<% $name %>_months_label0').style.visibility = ''; <% $ge %>('<% $name %>_months').style.display = ''; @@ -104,19 +106,7 @@ <% $ge %>('<% $name %>__type').style.display = 'none'; <% $ge %>('<% $name %>__type').style.visibility = 'hidden'; -% #XXX save visibility settings for amount, percent :/ - <% $ge %>('<% $name %>_amount_label0').style.display = 'none'; - <% $ge %>('<% $name %>_amount_label0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_amount_input0').style.display = 'none'; - <% $ge %>('<% $name %>_amount_input0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_amount_input0').style.display = 'none'; - <% $ge %>('<% $name %>_amount_input0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_percent_label0').style.display = 'none'; - <% $ge %>('<% $name %>_percent_label0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_percent_input0').style.display = 'none'; - <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_percent_input0').style.display = 'none'; - <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden'; + <% $name %>__type_changed( <% $ge %>('<% $name %>__type') ); <% $ge %>('<% $name %>_months_label0').style.display = 'none'; <% $ge %>('<% $name %>_months_label0').style.visibility = 'hidden'; @@ -137,15 +127,15 @@ function <% $name %>__type_changed(what) { var <% $name %>__type = what.options[what.selectedIndex].value; - if ( <% $name %>__type == '<% $select %>' ) { + if ( <% $name %>__type == '<% $select %>' || what.style.display == 'none' ) { <% $ge %>('<% $name %>_amount_label0').style.display = 'none'; <% $ge %>('<% $name %>_amount_label0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_amount').style.display = 'none'; - <% $ge %>('<% $name %>_amount').style.visibility = 'hidden'; + <% $ge %>('<% $name %>_amount_input0').style.display = 'none'; + <% $ge %>('<% $name %>_amount_input0').style.visibility = 'hidden'; <% $ge %>('<% $name %>_percent_label0').style.display = 'none'; <% $ge %>('<% $name %>_percent_label0').style.visibility = 'hidden'; - <% $ge %>('<% $name %>_percent').style.display = 'none'; - <% $ge %>('<% $name %>_percent').style.visibility = 'hidden'; + <% $ge %>('<% $name %>_percent_input0').style.display = 'none'; + <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden'; } else if ( <% $name %>__type == 'Amount' ) { <% $ge %>('<% $name %>_amount_label0').style.display = ''; <% $ge %>('<% $name %>_amount_label0').style.visibility = ''; diff --git a/httemplate/view/cust_main/order_pkg_link.html b/httemplate/view/cust_main/order_pkg_link.html index 29398432e..7bc5eef31 100644 --- a/httemplate/view/cust_main/order_pkg_link.html +++ b/httemplate/view/cust_main/order_pkg_link.html @@ -5,7 +5,7 @@ 'color' => '#333399', 'cust_main' => $cust_main, 'closetext' => emt('Close'), - 'width' => 763, + 'width' => 960, #763, 'height' => $height, %optional, &> @@ -17,6 +17,6 @@ my %optional = map { $_ => $opt{$_} } grep $opt{$_}, qw( lock_pkgpart lock_locationnum qualnum svcpart ); -my $height = $opt{'lock_locationnum'} ? 296 : 538; +my $height = $opt{'lock_locationnum'} ? 336 : 576; -- 2.11.0