diff options
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/part_pkg.cgi | 5 | ||||
-rw-r--r-- | httemplate/elements/order_pkg.js | 24 | ||||
-rw-r--r-- | httemplate/elements/tr-select-cust-part_pkg.html | 17 | ||||
-rw-r--r-- | httemplate/misc/cust-part_pkg.cgi | 1 |
4 files changed, 34 insertions, 13 deletions
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index 65eca6cf4..cc5606e54 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -44,6 +44,7 @@ 'plan' => 'Price plan', 'disabled' => 'Disable new orders', 'disable_line_item_date_ranges' => 'Disable line item date ranges', + 'start_on_hold' => 'Start on hold', 'setup_cost' => 'Setup cost', 'recur_cost' => 'Recur cost', 'pay_weight' => 'Payment weight', @@ -110,6 +111,10 @@ ), {field=>'disabled', type=>$disabled_type, value=>'Y'}, {field=>'disable_line_item_date_ranges', type=>$disabled_type, value=>'Y'}, + { field => 'start_on_hold', + type => 'checkbox', + value => 'Y' + }, { type => 'tablebreak-tr-title', value => 'Pricing', #better name? diff --git a/httemplate/elements/order_pkg.js b/httemplate/elements/order_pkg.js index a145cbb03..3586a54cb 100644 --- a/httemplate/elements/order_pkg.js +++ b/httemplate/elements/order_pkg.js @@ -10,7 +10,7 @@ function pkg_changed () { var date_text = document.getElementById('start_date_text'); var radio_now = document.getElementById('start_now'); - //var radio_on_hold = document.getElementById('start_on_hold'); + var radio_on_hold = document.getElementById('start_on_hold'); var radio_on_date = document.getElementById('start_on_date'); form.submitButton.disabled = false; @@ -36,23 +36,35 @@ function pkg_changed () { date_button.style.display = ''; date_button_disabled.style.display = 'none'; if ( radio_on_date ) { + // un-disable all the buttons that might get disabled radio_on_date.disabled = false; - if ( form.start_date_text.value.length > 0 && radio_now.checked ) { + radio_now.disabled = false; + // if a start date has been entered, assume the user wants it + if ( form.start_date_text.value.length > 0 ) { radio_now.checked = false; radio_on_date.checked = true; + } else { + // if not, default to now + radio_now.checked = true; } } - } else { + } else { // the package is either fixed start date or start-on-hold date_text.style.backgroundColor = '#dddddd'; date_text.disabled = true; date_button.style.display = 'none'; date_button_disabled.style.display = ''; if ( radio_on_date ) { - if ( radio_on_date.checked ) { - radio_on_date.checked = false; + if ( opt.getAttribute('data-start_on_hold') == 1 ) { + // disallow all options but "On hold" + radio_on_hold.checked = true; + radio_now.checked = false; + radio_now.disabled = true; + } else { + // disallow all options but "On date" + radio_on_hold.checked = false; radio_now.checked = true; + radio_now.disabled = false; } - radio_on_date.disabled = true; } } diff --git a/httemplate/elements/tr-select-cust-part_pkg.html b/httemplate/elements/tr-select-cust-part_pkg.html index 696baff9f..0db989aed 100644 --- a/httemplate/elements/tr-select-cust-part_pkg.html +++ b/httemplate/elements/tr-select-cust-part_pkg.html @@ -5,9 +5,10 @@ <SCRIPT TYPE="text/javascript"> - function part_pkg_opt(what, value, text, can_discount, can_start_date, start_date) { + function part_pkg_opt(what, value, text, can_discount, start_on_hold, can_start_date, start_date) { var optionName = new Option(text, value, false, false); optionName.setAttribute('data-can_discount', can_discount); + optionName.setAttribute('data-start_on_hold', start_on_hold); optionName.setAttribute('data-can_start_date', can_start_date); optionName.setAttribute('data-start_date', start_date || ''); var length = what.length; @@ -37,14 +38,16 @@ // add the new packages opt(what.form.pkgpart, '', 'Select package'); var packagesArray = eval('(' + part_pkg + ')' ); - for ( var s = 0; s < packagesArray.length; s=s+5 ) { + while (packagesArray.length > 0) { //surely this should be some kind of JSON structure - var packagesLabel = packagesArray[s+1]; - var can_discount = packagesArray[s+2]; - var can_start_date = packagesArray[s+3]; - var start_date = packagesArray[s+4]; + var pkgpart = packagesArray.shift(); + var label = packagesArray.shift(); + var can_discount = packagesArray.shift(); + var start_on_hold = packagesArray.shift(); + var can_start_date = packagesArray.shift(); + var start_date = packagesArray.shift(); part_pkg_opt( - what.form.pkgpart, packagesArray[s], packagesLabel, can_discount, can_start_date, start_date + what.form.pkgpart, pkgpart, label, can_discount, start_on_hold, can_start_date, start_date ); } diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi index e129347ec..dc9ba2af1 100644 --- a/httemplate/misc/cust-part_pkg.cgi +++ b/httemplate/misc/cust-part_pkg.cgi @@ -56,6 +56,7 @@ my @return = map { ( $_->pkgpart, $_->pkg_comment, $_->can_discount, + ($_->start_on_hold ? 1 : 0), $_->can_start_date( num_ncancelled_pkgs => $num_ncancelled_pkgs, ), |