summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate')
-rwxr-xr-xhttemplate/edit/part_pkg.cgi5
-rw-r--r--httemplate/elements/order_pkg.js24
-rw-r--r--httemplate/elements/tr-select-cust-part_pkg.html17
-rw-r--r--httemplate/misc/cust-part_pkg.cgi1
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,
),