6 $isInEditList = GetIsInEditList($dbh, $Hu);
9 <script type=
"text/javascript">
13 getShowWaitFunctions();
17 var billingIdentifierDDLData = [];
33 function SetupDialogs() {
40 $(
"#salesItemGrid").on(
"click",
".k-grid-customDelete",
function() {
41 var salesItemGrid = $(
"#salesItemGrid").data(
"kendoGrid");
42 var siTr = $(
this).closest(
"tr");
43 var siDataItem = salesItemGrid.dataItem(siTr);
45 var productId = siDataItem.productId;
47 var deleteSalesItemDialog = $(
"#deleteSalesItemDialog").data(
"kendoDialog");
48 if (deleteSalesItemDialog ==
null) {
49 deleteSalesItemDialog = $(
"<div id='deleteSalesItemDialog'></div>").appendTo(
"body").kendoDialog({
50 title:
"Confirm Deletion",
53 {text:
"Delete", primary:
true, action:
function() {
58 var productId = $(
"#deleteSalesItemDialog").data(
"productId");
60 var parameters = {productId: productId};
62 $.post(
"index.prg?operation=salesItemRemove", parameters,
66 var productId = $(
"#deleteSalesItemDialog").data(
"productId");
67 var salesItemGrid = $(
"#salesItemGrid").data(
"kendoGrid");
69 if (data.status !==
"000") {
70 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
72 var gridData = salesItemGrid.dataSource.data();
73 gridData = $.grep(gridData,
function(n,i) {
return n.productId != productId; });
74 salesItemGrid.dataSource.data(gridData);
81 if (window.activeWindows !=
null) {
82 window.activeWindows.push(
this);
86 if (window.activeWindows !=
null) {
87 window.activeWindows.pop();
91 content:
"Are you sure that you want to delete this line item?" 92 }).data(
"kendoDialog");
95 $(
"#deleteSalesItemDialog").data({productId: productId});
96 deleteSalesItemDialog.open().center();
103 function InitSalesItemMaintenance() {
104 $.homecuValidator.setup({formValidate:
'formMain', formStatusField:
'formValidateMainDiv'});
105 var grid = $(
"#salesItemGrid").kendoGrid({
109 url:
"index.prg?operation=salesItemLoad",
114 url:
"index.prg?operation=salesItemUpdate",
119 url:
"index.prg?operation=salesItemCreate",
123 parameterMap:
function(data, type) {
125 if (type ==
"read") {
128 var parameters = {prodName: data.prodName, description: data.description, billingId: data.billingId, fixed: data.fixed,
129 variable: data.variable, qty1: data.qty1, qty2: data.qty2, calcId: data.calcId, frequency: data.frequency, billsOn: data.billsOn};
130 if (type ==
"update") {
131 parameters.productId = data.productId;
141 productId: {type:
"number", editable:
false, nullable:
false},
142 description: {type:
"string"},
143 billingId: {type:
"string"},
144 prodName: {type:
"string"},
145 template: {type:
"string"},
146 calcId: {type:
"number"},
147 prodDescr: {type:
"string"},
148 billingIdDescr: {type:
"string"},
151 fixed: {type:
"number"},
152 variable: {type:
"number"},
153 qty1: {type:
"number"},
154 qty2: {type:
"number"},
156 frequencyDescr: {type:
"string"},
157 frequency: {type:
"number"},
158 billsOn: {type:
"string"}
161 parse:
function (data) {
163 if (data.status !==
"000") {
164 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
166 }
else if (data.operation ==
"read") {
168 prodDDLData = data.productDDL;
169 billingIdentifierDDLData = data.billingItemDDL;
176 <?php
if ($isInEditList) { ?> {title:
"", width:
"10%"}, <?php } ?>
177 {field:
"prodDescr", title:
"Product Name"},
178 {field:
"billingIdDescr", title:
"Billing Identifier"},
179 {field:
"description", title:
"Display Name"},
180 {field:
"frequencyDescr", title:
"Frequency"},
181 {field:
"calcId", title:
"Calc ID"}
183 rowTemplate: $(
"#rowTemplate").html(),
185 filterable: {extra:
false},
186 toolbar: [<?php
if ($isInEditList) { ?> {name:
"create", text:
"", iconClass:
"fa fa-plus"},
187 <?php } ?> {name:
"showDeleted", text:
"Show Deleted Items"}],
188 <?php
if ($isInEditList) { ?>
191 template: kendo.template($(
"#popupTemplate").html()),
199 edit:
function (eThis) {
201 $.homecuValidator.setup({formValidate:
'popupForm', formStatusField:
'formValidatePopupDiv', homecuCustomRules: {
202 addRangeGtError:
function(input) {
203 if (!$(
"#quantityRangeDiv").is(
":visible")) {
206 if (!$(input).is(
"[name='qty2Range']")) {
209 var qty1 = qty1NtbRange.value();
210 var qty2 = qty2NtbRange.value();
212 if(qty1 !=
null && qty2 !=
null && qty2 != -1 && qty2 < qty1) {
213 $(input).attr(
"data-addRangeGtError-msg",
"Range is invalid.");
221 var popupWindow = eThis.sender.editable.element.data(
"kendoWindow");
222 popupWindow.title(eThis.model.isNew() ?
"Add Sales Item" :
"Edit Sales Item");
224 var billingInfo = $.grep(billingIdentifierDDLData,
function(n,i) {
return n.value == eThis.model.billingId; });
225 var decimals = billingInfo.length === 0 ? 2 : billingInfo[0].configuration.decimals;
226 var format =
"{0:c" + decimals +
"}";
228 $(
"input[name='calcId']").kendoNumericTextBox({
233 }).data(
"kendoNumericTextBox");
235 $(
"#productNameDDL").kendoDropDownList({
239 dataTextField:
"text",
240 dataValueField:
"value",
241 filter:
"startswith",
242 dataBound:
function () {
243 if (eThis.model.isNew()) {
245 eThis.model.prodName = this.value();
247 this.value(eThis.model.prodName);
250 change:
function () {
251 eThis.model.prodName = this.value();
253 }).data(
"kendoDropDownList");
255 var fixedNtb = $(
"input[name='fixed']").kendoNumericTextBox({
258 change:
function () {
259 eThis.model.fixed = this.value();
261 }).data(
"kendoNumericTextBox");
262 var variableNtb = $(
"input[name='variable']").kendoNumericTextBox({
265 change:
function () {
266 eThis.model.variable = this.value();
268 }).data(
"kendoNumericTextBox");
269 var qty1Ntb = $(
"input[name='qty1']").kendoNumericTextBox({
273 change:
function () {
274 eThis.model.qty1 = this.value();
276 }).data(
"kendoNumericTextBox");
277 var qty2Ntb = $(
"input[name='qty2']").kendoNumericTextBox({
281 change:
function () {
282 eThis.model.qty2 = this.value();
284 }).data(
"kendoNumericTextBox");
285 var qty1NtbRange = $(
"input[name='qty1Range']").kendoNumericTextBox({
289 change:
function () {
290 eThis.model.qty1 = this.value();
292 }).data(
"kendoNumericTextBox");
293 var qty2NtbRange = $(
"input[name='qty2Range']").kendoNumericTextBox({
297 change:
function () {
298 if (this.value() !=
null) {
299 eThis.model.qty2 = this.value();
301 eThis.model.qty2 = -1;
304 }).data(
"kendoNumericTextBox");
315 function FeatureDetailDDLChange(e, theObject) {
316 var dataItem = theObject.dataItem();
317 eThis.model.billingId = theObject.value();
319 UpdateSetupRecurring(dataItem.configuration.setup);
320 UpdateQuantityLabels(dataItem.configuration, eThis.model);
321 UpdateFixedVariableLabels(dataItem.configuration, eThis.model);
323 eThis.model.qty1 = 0;
324 eThis.model.fixed = 0;
325 eThis.model.variable = 0;
326 if ($(
"#quantityRangeDiv:visible").length > 0) {
327 eThis.model.qty2 = -1;
329 eThis.model.qty2 = 0;
333 variableNtb.value(0);
336 qty1NtbRange.value(0);
337 qty2NtbRange.value(
null);
340 var billingIdDDL = $(
"#billingIdDDL").kendoDropDownList({
342 data: billingIdentifierDDLData,
347 value: {type:
"string"},
348 text: {type:
"string"},
349 configuration: {type:
"odata"}
354 dataTextField:
"text",
355 dataValueField:
"value",
356 filter:
"startswith",
357 dataBound:
function(e) {
358 if (eThis.model.isNew()) {
361 this.value(eThis.model.billingId);
363 FeatureDetailDDLChange(e,
this);
365 change:
function(e) {
366 FeatureDetailDDLChange(e,
this);
368 }).data(
"kendoDropDownList");
371 $(
"input[name='qty2Range']").prev().attr(
"placeholder", $(
"#infinity").text());
374 if (eThis.model.isNew()) {
375 $(
"#idLine").
remove();
379 var templateDecoded = JSON && JSON.parse(eThis.model.template) || $.parseJSON(eThis.model.template);
380 fixedNtb.value(templateDecoded.fixed);
381 variableNtb.value(templateDecoded.variable);
382 qty1Ntb.value(templateDecoded.qty1);
383 qty2Ntb.value(templateDecoded.qty2);
384 qty1NtbRange.value(templateDecoded.qty1);
386 if (templateDecoded.qty2 == -1) {
387 qty2NtbRange.value(
null);
389 qty2NtbRange.value(templateDecoded.qty2);
392 eThis.model.fixed = templateDecoded.fixed;
393 eThis.model.variable = templateDecoded.variable;
394 eThis.model.qty1 = templateDecoded.qty1;
395 eThis.model.qty2 = templateDecoded.qty2;
398 if (!eThis.model.setup) {
399 var months = [ {value: 0, text:
"January"}, {value: 1, text:
"February"}, {value: 2, text:
"March"}, {value: 3, text:
"April"}, {value: 4, text:
"May"},
400 {value: 5, text:
"June"}, {value: 6, text:
"July"}, {value: 7, text:
"August"}, {value: 8, text:
"September"},
401 {value: 9, text:
"October"}, {value: 10, text:
"November"}, {value: 11, text:
"December"} ];
406 dataTextField:
"text",
407 dataValueField:
"value" 410 var billsOn1DDL = $(
"#billsOn1DDL").kendoDropDownList(billsOn).data(
"kendoDropDownList");
411 var billsOn2DDL = $(
"#billsOn2DDL").kendoDropDownList(billsOn).data(
"kendoDropDownList");
413 billsOn1DDL.bind(
"change",
function () {
414 if ($(
"#billsOn2Div:visible").length > 0) {
415 var val1 = this.value();
416 var val2 = (val1 + 6) % 12;
417 billsOn2DDL.value(val2);
418 var data1 = $.grep(months,
function(n,i) {
return n.value != val2; });
419 billsOn1DDL.dataSource.data(data1);
420 var data2 = $.grep(months,
function(n,i) {
return n.value != val1; });
421 billsOn2DDL.dataSource.data(data2);
425 billsOn2DDL.bind(
"change",
function () {
426 if ($(
"#billsOn1Div:visible").length > 0) {
427 var val2 = this.value();
428 var val1 = (val2 - 6) % 12;
429 var data1 = $.grep(months,
function(n,i) {
return n.value != val2; });
430 billsOn1DDL.dataSource.data(data1);
431 var data2 = $.grep(months,
function(n,i) {
return n.value != val1; });
432 billsOn2DDL.dataSource.data(data2);
436 var frequencyDDL = $(
"#frequencyDDL").kendoDropDownList({
438 data: [{value: 0, text:
"Monthly"}, {value: 1, text:
"Semiyearly"}, {value: 2, text:
"Yearly"}]
440 dataTextField:
"text",
441 dataValueField:
"value",
443 switch(this.value()) {
445 $(
"#billsOn1Div").hide();
446 $(
"#billsOn2Div").hide();
449 $(
"#billsOn1Div").show();
450 $(
"#billsOn2Div").show();
451 billsOn1DDL.value(0);
452 billsOn2DDL.value(6);
453 billsOn1DDL.dataSource.data($.grep(months,
function(n,i) {
return n.value != 6; }));
454 billsOn2DDL.dataSource.data($.grep(months,
function(n,i) {
return n.value != 0; }));
457 $(
"#billsOn1Div").show();
458 $(
"#billsOn2Div").hide();
459 billsOn1DDL.value(0);
460 billsOn1DDL.dataSource.data(months.slice(0));
464 }).data(
"kendoDropDownList");
466 if (eThis.model.isNew()) {
467 frequencyDDL.value(0);
469 var billsOn = eThis.model.billsOn;
471 var frequency = eThis.model.frequency;
472 frequencyDDL.value(frequency);
476 $(
"#billsOn1Div").show();
477 $(
"#billsOn2Div").show();
480 $(
"#billsOn1Div").show();
484 var billsOnArray = eThis.model.billsOn.split(
",");
485 if (billsOnArray.length >= 2) {
486 billsOn2DDL.value(billsOnArray[1]);
487 billsOn1DDL.value(billsOnArray[0]);
488 billsOn1DDL.dataSource.data($.grep(months,
function(n,i) {
return n.value != billsOnArray[1]; }));
489 billsOn2DDL.dataSource.data($.grep(months,
function(n,i) {
return n.value != billsOnArray[0]; }));
490 }
else if (billsOnArray.length == 1) {
491 billsOn1DDL.value(billsOnArray[0]);
497 if (!$.homecuValidator.validate()) {
501 $.homecuValidator.setup({formValidate:
'formMain', formStatusField:
'formValidateMainDiv'});
504 if (!e.model.setup) {
505 e.model.frequency = $(
"#frequencyDDL").data(
"kendoDropDownList").value();
508 switch(e.model.frequency) {
510 billsOn.push($(
"#billsOn1DDL").data(
"kendoDropDownList").value());
511 billsOn.push($(
"#billsOn2DDL").data(
"kendoDropDownList").value());
514 billsOn.push($(
"#billsOn1DDL").data(
"kendoDropDownList").value());
517 e.model.billsOn = kendo.stringify(billsOn);
521 }).data(
"kendoGrid");
523 $(
"#salesItemGrid .k-grid-showDeleted").click(
function () {
524 ShowDeletedItemModal();
529 <?php
if ($isInEditList) {
533 function UpdateSetupRecurring(isSetup) {
534 var endDatePicker = $(
"#endDate").data(
"kendoDatePicker");
536 $(
"#recurringOnly").hide();
538 $(
"#recurringOnly").show();
547 function UpdateQuantityLabels(configuration, model) {
548 var labelType = configuration.quantityLabelType;
549 var labels = configuration.quantityLabels;
550 if (!model.isNew()) {
551 if (typeof(configuration.quantityLabelTypeVariance) !=
"undefined") {
552 var typeVariance = configuration.quantityLabelTypeVariance[model.productId];
553 labelType = typeof(typeVariance) ==
"undefined" ? configuration.quantityLabelType : typeVariance;
556 if (typeof(configuration.quantityLabelsVariance) !=
"undefined") {
557 var labelsVariance = configuration.quantityLabelsVariance[model.productId];
558 labels = typeof(labelsVariance) ==
"undefined" ? configuration.quantityLabels : labelsVariance;
561 var legalArray = [
"range",
"left",
"left and right",
"none",
"no qty1",
"no qty2"];
562 if (typeof(labelType) ==
"undefined" || legalArray.indexOf(labelType) == -1) {
563 $(
"#quantity1Row").show();
564 $(
"#quantity2Row").show();
565 $(
"#quantityRangeDiv").hide();
566 $(
"#quantity1Row .custLabel:eq(0)").text(
"Quantity 1:");
567 $(
"#quantity1Row .custLabel:eq(1)").text(
"");
568 $(
"#quantity2Row .custLabel:eq(0)").text(
"Quantity 2:");
569 $(
"#quantity2Row .custLabel:eq(1)").text(
"");
570 }
else if (labelType ==
"none") {
571 $(
"#quantity1Row").hide();
572 $(
"#quantity2Row").hide();
573 $(
"#quantityRangeDiv").hide();
574 }
else if (labelType ==
"no qty1") {
575 $(
"#quantity1Row").hide();
576 $(
"#quantity2Row").show();
577 $(
"#quantityRangeDiv").hide();
579 if (typeof(labels) ==
"undefined") {
580 $(
"#quantity2Row .custLabel:eq(0)").text(
"Quantity 2:");
581 $(
"#quantity2Row .custLabel:eq(1)").text(
"");
583 $(
"#quantity2Row .custLabel:eq(0)").text(labels[0]);
584 $(
"#quantity2Row .custLabel:eq(1)").text(labels[1]);
586 }
else if (labelType ==
"no qty2") {
587 $(
"#quantity1Row").show();
588 $(
"#quantity2Row").hide();
589 $(
"#quantityRangeDiv").hide();
591 if (typeof(labels) ==
"undefined") {
592 $(
"#quantity1Row .custLabel:eq(0)").text(
"Quantity 1:");
593 $(
"#quantity1Row .custLabel:eq(1)").text(
"");
595 $(
"#quantity1Row .custLabel:eq(0)").text(labels[0]);
596 $(
"#quantity1Row .custLabel:eq(1)").text(labels[1]);
598 }
else if (labelType ==
"range") {
599 $(
"#quantity1Row").hide();
600 $(
"#quantity2Row").hide();
601 $(
"#quantityRangeDiv").show();
603 if (typeof(labels) ==
"undefined") {
604 $(
"#quantityRangeDiv .custLabel:eq(0)").text(
"Range:");
606 $(
"#quantityRangeDiv .custLabel:eq(0)").text(labels[0]);
608 }
else if (labelType ==
"left") {
609 $(
"#quantity1Row").show();
610 $(
"#quantity2Row").show();
611 $(
"#quantityRangeDiv").hide();
612 $(
"#quantity1Row .custLabel:eq(1)").text(
"");
613 $(
"#quantity2Row .custLabel:eq(1)").text(
"");
615 if (typeof(labels) ==
"undefined") {
616 $(
"#quantity1Row .custLabel:eq(0)").text(
"Quantity 1:");
617 $(
"#quantity2Row .custLabel:eq(0)").text(
"Quantity 2:");
619 $(
"#quantity1Row .custLabel:eq(0)").text(labels[0]);
620 $(
"#quantity2Row .custLabel:eq(0)").text(labels[1]);
622 }
else if (labelType ==
"left and right") {
623 $(
"#quantity1Row").show();
624 $(
"#quantity2Row").show();
625 $(
"#quantityRangeDiv").hide();
627 if (typeof(labels) ==
"undefined") {
628 $(
"#quantity1Row .custLabel:eq(0)").text(
"Quantity 1:");
629 $(
"#quantity1Row .custLabel:eq(1)").text(
"");
630 $(
"#quantity2Row .custLabel:eq(0)").text(
"Quantity 2:");
631 $(
"#quantity2Row .custLabel:eq(1)").text(
"");
633 $(
"#quantity1Row .custLabel:eq(0)").text(labels[0]);
634 $(
"#quantity1Row .custLabel:eq(1)").text(labels[1]);
635 $(
"#quantity2Row .custLabel:eq(0)").text(labels[2]);
636 $(
"#quantity2Row .custLabel:eq(1)").text(labels[3]);
645 function UpdateFixedVariableLabels(configuration, model) {
646 var labelType = configuration.fixedVariableLabelType;
647 var labels = configuration.fixedVariableLabels;
648 if (!model.isNew()) {
649 if (typeof(configuration.fixedVariableLabelTypeVariance) !=
"undefined") {
650 var typeVariance = configuration.fixedVariableLabelTypeVariance[model.productId];
651 labelType = typeof(typeVariance) ==
"undefined" ? configuration.fixedVariableLabelType : typeVariance;
653 if (typeof(configuration.fixedVariableLabelsVariance) !=
"undefined") {
654 var labelsVariance = configuration.fixedVariableLabelsVariance[model.productId];
655 labels = typeof(labelsVariance) ==
"undefined" ? configuration.fixedVariableLabels : labelsVariance;
659 var legalArray = [
"left",
"none",
"no fixed",
"no variable"];
660 if (typeof(labelType) ==
"undefined" || legalArray.indexOf(labelType) == -1) {
661 $(
"#fixedRow").show();
662 $(
"#variableRow").show();
663 $(
"#fixedRow .custLabel:eq(0)").text(
"Fixed:");
664 $(
"#variableRow .custLabel:eq(0)").text(
"Variable:");
665 }
else if (labelType ==
"none") {
666 $(
"#fixedRow").hide();
667 $(
"#variableRow").hide();
668 }
else if (labelType ==
"no fixed") {
669 $(
"#fixedRow").hide();
670 $(
"#variableRow").show();
672 if (typeof(labels) !=
"undefined") {
673 $(
"#variableRow .custLabel:eq(0)").text(labels[0]);
675 $(
"#variableRow .custLabel:eq(0)").text(
"Variable:");
677 }
else if (labelType ==
"no variable") {
678 $(
"#fixedRow").show();
679 $(
"#variableRow").hide();
681 if (typeof(labels) !=
"undefined") {
682 $(
"#fixedRow .custLabel:eq(0)").text(labels[0]);
684 $(
"#variableRow .custLabel:eq(0)").text(
"Fixed:");
686 }
else if (labelType ==
"left") {
687 $(
"#fixedRow").show();
688 $(
"#variableRow").show();
690 if (typeof(labels) !=
"undefined") {
691 $(
"#fixedRow .custLabel:eq(0)").text(labels[0]);
692 $(
"#variableRow .custLabel:eq(0)").text(labels[1]);
694 $(
"#fixedRow .custLabel:eq(0)").text(
"Fixed:");
695 $(
"#variableRow .custLabel:eq(0)").text(
"Variable:");
702 function ShowDeletedItemModal() {
703 var modal = $(
"#deletedItemModal").data(
"kendoWindow");
704 var grid = $(
"#deletedItemGrid").data(
"kendoGrid");
706 grid.dataSource.read();
707 modal.open().center();
709 modal = $(
"<div id='deletedItemModal'></div>").kendoWindow({
711 template: kendo.template($(
"#deletedItemTemplate").html())
714 title:
"Deleted Sales Items",
720 }).data(
"kendoWindow");
722 grid = $(
"#deletedItemGrid").kendoGrid({
726 url:
"index.prg?operation=getDeletedSalesItems",
730 parameterMap:
function(data, type) {
739 salesItemId: {type:
"number"},
740 deletedDate: {type:
"date"},
741 productName: {type:
"string"},
742 billingName: {type:
"string"},
743 displayName: {type:
"string"}
746 parse:
function (data) {
748 if (data.status !==
"000") {
749 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
757 sort: {field:
"deletedDate", dir:
"desc"}
762 {field:
"deletedDate", title:
"Date", format:
"{0:d}"},
763 {field:
"displayName", title:
"Name"},
764 {field:
"productName", title:
"Product"},
765 {field:
"billingName", title:
"Feature"}
767 }).data(
"kendoGrid");
769 modal.open().center();
771 $(
"#deletedItemModal .okayBtn").click(
function () {
773 grid.dataSource.data([]);
779 var activeWindows = [];
780 $(document).ready(
function () {
781 InitSalesItemMaintenance();
783 $(
"body").on(
"click",
".k-overlay",
function() {
if (activeWindows.length > 0) activeWindows[activeWindows.length - 1].close();
return false; });
786 <script
id=
"deletedItemTemplate" type=
"text/x-kendo-template">
787 <div
class=
"container_12">
788 <div
class=
"grid_12"><div
id=
"deletedItemGrid"></div></div>
789 <div
class=
"grid_12">
790 <a
class=
"k-button k-button-icontext okayBtn" href=
"\#">
791 <span
class=
"k-icon k-update"></span>
797 <script
id=
"rowTemplate" type=
"text/x-kendo-template">
798 <tr
class=
"normalRow" data-uid=
"#= uid #">
799 <?php
if ($isInEditList) { ?> <td
class=
"needsBorder">
800 <a
class=
"k-button k-button-icontext k-grid-edit" href=
"\#">
801 <span
class=
"fa fa-edit"></span>
803 <a
class=
"k-button k-button-icontext k-grid-customDelete" href=
"\#">
804 <span
class=
"fa fa-trash"></span>
807 <td
class=
"needsBorder">#: prodDescr #</td>
808 <td>#: billingIdDescr #</td>
809 <td>#: description #</td>
810 <td>#: frequencyDescr #</td>
814 <?php
if ($isInEditList) { ?>
815 <script
id=
"popupTemplate" type=
"text/x-kendo-template">
816 <div
id=
"formValidatePopupDiv" style=
"display:none;"></div>
817 <form
id=
"popupForm">
818 <div
class=
"container_12">
819 <div
class=
"grid_12" id=
"idLine">
820 <div
class=
"grid_4 alpha">
824 <div
id=
"nameLabel">#: productId #</div>
826 <div
class=
"grid_1 omega">
827 <span data-
for=
'productId' class=
'k-invalid-msg'></span>
830 <div
class=
"grid_12">
831 <div
class=
"grid_4 alpha">
832 <label>Product Name:</label>
835 <div
id=
"productNameDDL" style=
"width:100%"></div>
837 <div
class=
"grid_1 omega">
838 <span data-
for=
'prodName' class=
'k-invalid-msg'></span>
841 <div
class=
"grid_12">
842 <div
class=
"grid_4 alpha">
843 <label>Billing Identifier:</label>
846 <div
id=
"billingIdDDL" style=
"width:100%"></div>
848 <div
class=
"grid_1 omega">
849 <span data-
for=
'billingId' class=
'k-invalid-msg'></span>
852 <div
class=
"grid_12" id=
"descriptionRow">
853 <div
class=
"grid_4 alpha">
854 <label>Display Name:</label>
857 <input type=
"text" class=
"k-input" id=
"descriptionInput" name=
"description" style=
"width: 100%" maxlength=20>
859 <div
class=
"grid_1 omega">
860 <span data-
for=
'description' class=
'k-invalid-msg'></span>
863 <div
class=
"grid_12" id=
"fixedRow">
864 <div
class=
"grid_4 alpha">
865 <label
class=
"custLabel" data-
for=
"fixed">Fixed:</label>
868 <input type=
"text" name=
"fixed" style=
"width: 100%" value=
"0">
870 <div
class=
"grid_1 omega">
871 <span data-
for=
'fixed' class=
'k-invalid-msg'></span>
874 <div
id=
"recurringOnly">
875 <div
class=
"grid_12" id=
"variableRow">
876 <div
class=
"grid_4 alpha">
877 <label
class=
"custLabel" data-
for=
"variable">Variable:</label>
880 <input type=
"text" name=
"variable" style=
"width: 100%" value=
"0">
882 <div
class=
"grid_1 omega">
883 <span data-
for=
'variable' class=
'k-invalid-msg'></span>
886 <div
class=
"grid_12" id=
"quantity1Row">
887 <div
class=
"grid_4 alpha">
888 <label
class=
"custLabel" data-
for=
"qty1">Quantity 1:</label>
891 <input type=
"text" name=
"qty1" style=
"width: 100%" value=
"0">
894 <label
class=
"custLabel" data-
for=
"qty1"></label>
896 <div
class=
"grid_1 omega">
897 <span data-
for=
'qty1' class=
'k-invalid-msg'></span>
900 <div
class=
"grid_12" id=
"quantity2Row">
901 <div
class=
"grid_4 alpha">
902 <label
class=
"custLabel" data-
for=
"qty2">Quantity 2:</label>
905 <input type=
"text" name=
"qty2" style=
"width: 100%" value=
"0">
908 <label
class=
"custLabel" data-
for=
"qty2"></label>
910 <div
class=
"grid_1 omega">
911 <span data-
for=
'qty2' class=
'k-invalid-msg'></span>
914 <div
class=
"grid_12" id=
"quantityRangeDiv" style=
"display:none;">
915 <div
class=
"grid_4 alpha">
916 <label
class=
"custLabel">Quantity 1:</label>
919 <input type=
"text" name=
"qty1Range" style=
"width: 100%" value=
"0">
921 <div
class=
"grid_1">To</div>
923 <input type=
"text" name=
"qty2Range" style=
"width: 100%" data-gt-msg=
"The second amount has to be greater than the first.">
924 <div
id=
"infinity" style=
"display:none;">∞</div>
926 <div
class=
"grid_1 omega">
927 <span data-
for=
'qty1Range' class=
'k-invalid-msg'></span>
928 <span data-
for=
'qty2Range' class=
'k-invalid-msg'></span>
931 <div
class=
"grid_12">
932 <div
class=
"grid_4 alpha">
933 <label>Frequency:</label>
936 <div
id=
"frequencyDDL"></div>
938 <div
class=
"grid_1 omega">
942 <div
class=
"grid_12" id=
"billsOn1Div" style=
"display:none;">
943 <div
class=
"grid_4 alpha">
944 <label>Bills On:</label>
947 <div
id=
"billsOn1DDL"></div>
949 <div
class=
"grid_1 omega">
953 <div
class=
"grid_12" id=
"billsOn2Div" style=
"display:none;">
954 <div
class=
"grid_4 alpha">
958 <div
id=
"billsOn2DDL"></div>
960 <div
class=
"grid_1 omega">
965 <div
class=
"grid_12">
966 <div
class=
"grid_4 alpha">
967 <label>Calculation ID: </label>
969 <div
class=
"grid_4 offset_3">
970 <input type=
"text" name=
"calcId" style=
"width:100%">
972 <div
class=
"grid_1 omega">
973 <span data-
for=
'calcId' class=
'k-invalid-msg'></span>
980 <div
class=
"container_12">
981 <div
id=
"formMain"></div>
982 <div
id=
"formValidateMainDiv" style=
"display:none;"></div>
983 <div
class=
"grid_12">
984 <div
id=
"salesItemGrid" class=
"minifiedActionGrid"></div>