X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Felements%2Forder_pkg.js;h=3586a54cb175cbb74b724dd3c7b79bc269c38387;hb=edea94b6bd41a3fceac47267a3df3dc7fcf7c565;hp=8c1efd93a1192f1534fee15327d3032db1b2d910;hpb=468c9e660eb0edb2033f0f8dbb4458f20280082c;p=freeside.git diff --git a/httemplate/elements/order_pkg.js b/httemplate/elements/order_pkg.js index 8c1efd93a..3586a54cb 100644 --- a/httemplate/elements/order_pkg.js +++ b/httemplate/elements/order_pkg.js @@ -4,9 +4,18 @@ function pkg_changed () { if ( form.pkgpart.selectedIndex > 0 ) { + var opt = form.pkgpart.options[form.pkgpart.selectedIndex]; + var date_button = document.getElementById('start_date_button'); + var date_button_disabled = document.getElementById('start_date_disabled'); + 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_date = document.getElementById('start_on_date'); + form.submitButton.disabled = false; if ( discountnum ) { - if ( form.pkgpart.options[form.pkgpart.selectedIndex].getAttribute('data-can_discount') == 1 ) { + if ( opt.getAttribute('data-can_discount') == 1 ) { form.discountnum.disabled = false; discountnum_changed(form.discountnum); } else { @@ -15,16 +24,52 @@ function pkg_changed () { } } - if ( form.pkgpart.options[form.pkgpart.selectedIndex].getAttribute('data-can_start_date') == 1 ) { - form.start_date_text.disabled = false; - form.start_date.style.backgroundColor = '#ffffff'; - form.start_date_button.style.display = ''; - } else { - form.start_date_text.disabled = true; - form.start_date.style.backgroundColor = '#dddddd'; - form.start_date_button.style.display = 'none'; + // if this form element exists, then the start date is a future + // package change date; don't replace it + if ( form.delay ) { + return; + } + form.start_date_text.value = opt.getAttribute('data-start_date'); + if ( opt.getAttribute('data-can_start_date') == 1 ) { + date_text.style.backgroundColor = '#ffffff'; + date_text.disabled = false; + 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; + 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 { // 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 ( 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; + } + } } + get_part_pkg_usageprice( opt.value, update_part_pkg_usageprice ); + } else { form.submitButton.disabled = true; if ( discountnum ) { form.discountnum.disabled = true; } @@ -32,6 +77,69 @@ function pkg_changed () { } } +function update_part_pkg_usageprice(part_pkg_usageprice) { + + var table = document.getElementById('cust_pkg_usageprice_table'); + + // black the current usage price rows + for ( var r = table.rows.length - 1; r >= 0; r-- ) { + table.deleteRow(r); + } + + // add the new usage price rows + var rownum = 0; + var usagepriceArray = eval('(' + part_pkg_usageprice + ')' ); + for ( var s = 0; s < usagepriceArray.length; s=s+2 ) { + //surely this should be some kind of JSON structure + var html = usagepriceArray[s+0]; + var javascript = usagepriceArray[s+1]; + + // a lot like ("inspiried by") edit/elements/edit.html function spawn_<%$field%> + + // XXX evaluate the javascript + //if (window.ActiveXObject) { + // window.execScript(newfunc); + //} else { /* (window.XMLHttpRequest) */ + // //window.eval(newfunc); + // setTimeout(newfunc, 0); + //} + + var row = table.insertRow(rownum++); + + //var label_cell = document.createElement('TD'); + + //label_cell.id = '<% $field %>_label' + <%$field%>_fieldnum; + + //label_cell.style.textAlign = "right"; + //label_cell.style.verticalAlign = "top"; + //label_cell.style.borderTop = "1px solid black"; + //label_cell.style.paddingTop = "5px"; + + //label_cell.innerHTML = '<% $label %>'; + + //row.appendChild(label_cell); + + var widget_cell = document.createElement('TD'); + + //widget_cell.style.borderTop = "1px solid black"; + widget_cell.style.paddingTop = "3px"; + widget_cell.colSpan = "2"; + + widget_cell.innerHTML = html; + + row.appendChild(widget_cell); + + } + + if ( rownum > 0 ) { + document.getElementById('cust_pkg_usageprice_title').style.display = ''; + } else { + document.getElementById('cust_pkg_usageprice_title').style.display = 'none'; + } + +} + + function standardize_new_location() { var form = document.OrderPkgForm; var loc = form.locationnum; @@ -44,4 +152,5 @@ function standardize_new_location() { function submit_abort() { document.OrderPkgForm.submitButton.disabled = false; + nd(1); }