summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2011-10-24 01:15:54 +0000
committerivan <ivan>2011-10-24 01:15:54 +0000
commit60ad366f6b218de3f229b4ccdc033b96863ea3e9 (patch)
tree906becec320d9d9755c99156a1b3f2bed13f1043
parentc7cea202843a5a5140d1347c199c0f877a8fa55f (diff)
fix discounts not appearing for one-time charge packages, RT#13654
-rw-r--r--FS/FS/cust_pkg_discount.pm3
-rw-r--r--FS/FS/part_pkg/flat.pm6
-rw-r--r--httemplate/elements/order_pkg.js3
-rw-r--r--httemplate/elements/tr-select-discount.html30
-rw-r--r--httemplate/view/cust_main/order_pkg_link.html4
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;
</%init>