summaryrefslogtreecommitdiff
path: root/httemplate/misc/batch-cust_pay.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/misc/batch-cust_pay.html')
-rw-r--r--httemplate/misc/batch-cust_pay.html414
1 files changed, 338 insertions, 76 deletions
diff --git a/httemplate/misc/batch-cust_pay.html b/httemplate/misc/batch-cust_pay.html
index b09876b89..ac7f7ffa3 100644
--- a/httemplate/misc/batch-cust_pay.html
+++ b/httemplate/misc/batch-cust_pay.html
@@ -1,99 +1,234 @@
<%= header( 'Quick payment entry',
menubar(
- 'Main Menu' => popurl(1),
+ 'Main Menu' => $p, #popurl(1),
+ 'Old-style quick payment entry' =>
+ $p. 'search/cust_main-quickpay.html',
),
- 'onLoad="addRow()"',
+ ( $cgi->param('error') ? '' : 'onload="addRow()"' ),
)
%>
<% if ( $cgi->param('error') ) { %>
- <FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
+ <FONT SIZE="+1" COLOR="#ff0000"><%= $cgi->param('error') %></FONT><BR><BR>
<% } %>
-<SCRIPT TYPE="text/javascript">
-
- var rownum = 0;
- function addRow() {
+<FORM ACTION="process/batch-cust_pay.cgi" NAME="OneTrueForm" METHOD="POST" onsubmit="document.OneTrueForm.submit.disabled=true;">
- var table = document.getElementById('OneTrueTable');
- var tablebody = table.getElementsByTagName('tbody').item(0);
+<!-- <B>Batch</B> <INPUT TYPE="text" NAME="paybatch"><BR><BR> -->
- var row = document.createElement('TR');
-
- var custnum_cell = document.createElement('TD');
- var custnum_input = document.createElement('INPUT');
- custnum_input.setAttribute('name', 'custnum'+rownum);
- custnum_input.setAttribute('size', 8);
- custnum_input.setAttribute('maxlength', 7);
- custnum_input.setAttribute('rownum', rownum);
- custnum_input.onchange = search_custnum;
-
- custnum_cell.appendChild(custnum_input);
- row.appendChild(custnum_cell);
-
- var customer_cell = document.createElement('TD');
- var customer_input = document.createElement('INPUT');
- custnum_input.setAttribute('name', 'customer'+rownum);
- customer_input.setAttribute('size', 32);
- customer_input.setAttribute('value', '(last name or company)' );
- customer_input.onfocus = clearhint;
- customer_input.setAttribute('rownum', rownum);
- customer_input.onchange = search_customer;
- customer_cell.appendChild(customer_input);
- row.appendChild(customer_cell);
+<SCRIPT TYPE="text/javascript">
- var paid_cell = document.createElement('TD');
- var paid_text = document.createTextNode('$');
- var paid_input = document.createElement('INPUT');
- paid_input.setAttribute('name', 'paid'+rownum);
- paid_input.setAttribute('size', 8);
- paid_input.setAttribute('maxlength', 8);
- paid_cell.appendChild(paid_text);
- paid_cell.appendChild(paid_input);
- row.appendChild(paid_cell);
+ function clearhint_custnum() {
- var payinfo_cell = document.createElement('TD');
- var payinfo_input = document.createElement('INPUT');
- payinfo_input.setAttribute('name', 'payinfo'+rownum);
- payinfo_input.setAttribute('size', 10);
- payinfo_cell.appendChild(payinfo_input);
- row.appendChild(payinfo_cell);
+ //this.style.color = '#000000';
- tablebody.appendChild(row);
-
- rownum++;
+ if ( this.value == 'Not found' || this.value == 'Multiple' ) {
+ this.value = '';
+ this.style.color = '#000000';
+ }
}
- function clearhint() {
+ function clearhint_customer() {
- if ( this.value == '(last name or company)' )
+ this.style.color = '#000000';
+
+ if ( this.value == '(last name or company)' || this.value == 'Not found' )
this.value = '';
}
function search_custnum() {
+ this.style.color = '#000000'
+
+ var custnum_obj = this;
var searchrow = this.getAttribute('rownum');
+ var custnum = this.value;
+
+ if ( custnum == 'searching...' || custnum == 'Not found' || custnum == '' )
+ return;
+
+ if ( this.getAttribute('magic') == 'nosearch' ) {
+ this.setAttribute('magic', '');
+ return;
+ }
+
+ if ( ( rownum - searchrow ) == 1 ) {
+ addRow();
+ }
+ var customer = document.getElementById('customer'+searchrow);
+ customer.value = 'searching...';
+ customer.disabled = true;
+ customer.style.color = '#000000';
+ customer.style.backgroundColor = '#dddddd';
+
+ var customer_select = document.getElementById('cust_select'+searchrow);
+
+ //alert('search for custnum ' + custnum + ', row#' + searchrow );
+
+ customer.style.display = '';
+ customer_select.style.display = 'none';
+
+ function search_custnum_update(name) {
+
+ var name = eval('(' + name + ')' );
+
+ customer.disabled = false;
+ customer.style.backgroundColor = '#ffffff';
+
+ if ( name.length > 0 ) {
+ //alert('custnum found: ' + name);
+ customer.value = name;
+ customer.setAttribute('magic', 'nosearch');
+ } else {
+ customer.value = 'Not found';
+ customer.style.color = '#ff0000';
+ custnum_obj.style.color = '#ff0000';
- alert('search for custnum row#' + searchrow );
+ }
+
+ }
+
+ custnum_search( custnum, search_custnum_update );
}
function search_customer() {
+ var customer_obj = this;
var searchrow = this.getAttribute('rownum');
+ var customer = this.value;
+
+ if ( customer == 'searching...' || customer == 'Not found' || customer == '' )
+ return;
+
+ if ( this.getAttribute('magic') == 'nosearch' ) {
+ this.setAttribute('magic', '');
+ return;
+ }
+
+ if ( ( rownum - searchrow ) == 1 ) {
+ addRow();
+ }
+
+ var custnum_obj = document.getElementById('custnum'+searchrow);
+ custnum_obj.value = 'searching...';
+ custnum_obj.disabled = true;
+ custnum_obj.style.color = '#000000';
+ custnum_obj.style.backgroundColor = '#dddddd';
+
+ var customer_select = document.getElementById('cust_select'+searchrow);
+
+ //alert('search for customer ' + customer + ', row#' + searchrow );
+
+ function search_customer_update(customers) {
+
+ //alert('customers returned: ' + customers);
+
+ var customerArray = eval('(' + customers + ')');
+
+ custnum_obj.disabled = false;
+ custnum_obj.style.backgroundColor = '#ffffff';
+
+ if ( customerArray.length == 0 ) {
+
+ custnum_obj.value = 'Not found';
+ custnum_obj.style.color = '#ff0000';
+ customer_obj.style.color = '#ff0000';
+
+ customer_obj.style.display = '';
+ customer_select.style.display = 'none';
+
+
+ } else if ( customerArray.length == 1 ) {
- alert('search for customer row#' + searchrow );
+ //alert('one customer found: ' + customerArray[0]);
+
+ custnum_obj.value = customerArray[0][0];
+ customer_obj.value = customerArray[0][1];
+
+ customer_obj.style.display = '';
+ customer_select.style.display = 'none';
+
+
+ } else {
+
+ custnum_obj.value = 'Multiple'; // or something
+ custnum_obj.style.color = '#ff0000';
+
+ //alert('multiple customers found, have to create select dropdown');
+
+ //blank the current list
+ for ( var i = customer_select.length; i >= 0; i-- )
+ customer_select.options[i] = null;
+
+ opt(customer_select, '', 'Multiple customers match "' + customer + '" - select one', '#ff0000');
+
+ //add the multiple customers
+ for ( var s = 0; s < customerArray.length; s++ )
+ opt(customer_select, customerArray[s][0], customerArray[s][1], '#000000');
+
+ opt(customer_select, 'cancel', '(Edit search string)', '#000000');
+
+ customer_obj.style.display = 'none';
+
+ customer_select.style.display = '';
+
+ }
+
+ }
+
+ smart_search( customer, search_customer_update );
}
-</SCRIPT>
+ function select_customer() {
-<FORM ACTION="<%= $p %>process/batch-cust_pay.cgi" METHOD=POST>
+ var custnum = this.options[this.selectedIndex].value;
+ var customer = this.options[this.selectedIndex].text;
-<B>Batch <INPUT TYPE="text" NAME="paybatch"><BR><BR>
+ var searchrow = this.getAttribute('rownum');
+ var custnum_obj = document.getElementById('custnum'+searchrow);
+ var customer_obj = document.getElementById('customer'+searchrow);
+
+ if ( custnum == '' ) {
+ //this.style.color = '#ff0000';
+
+ } else if ( custnum == 'cancel' ) {
+
+ custnum_obj.value = '';
+ custnum_obj.style.color = '#000000';
+
+ this.style.display = 'none';
+ customer_obj.style.display = '';
+ customer_obj.focus();
+
+ } else {
+
+
+ custnum_obj.value = custnum;
+ custnum_obj.style.color = '#000000';
+
+ customer_obj.value = customer;
+ customer_obj.style.color = '#000000';
+
+ this.style.display = 'none';
+ customer_obj.style.display = '';
+
+ }
+
+ }
+
+ function opt(what,value,text,color) {
+ var optionName = new Option(text, value, false, false);
+ optionName.style.color = color;
+ var length = what.length;
+ what.options[length] = optionName;
+ }
+
+</SCRIPT>
<TABLE ID="OneTrueTable" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0>
@@ -102,33 +237,160 @@
<TH>Customer</TH>
<TH>Amount</TH>
<TH>Check #</TH>
+ <TH BGCOLOR="#e8e8e8"></TH>
</TR>
-<!--
-<TR>
- <TD>
- <INPUT TYPE="text" NAME="custnum0" SIZE=8 MAXLENGTH=7 onChange="alert('search for custnum')" >
- </TD>
- <TD>
- <INPUT TYPE="text" NAME="customer0" SIZE=32 VALUE="(last name or company)" onChange="alert('search for customer')" >
- </TD>
- <TD>
- $<INPUT TYPE="text" NAME="paid0" SIZE=8 MAXLENGTH=8>
- </TD>
- <TD>
- <INPUT TYPE="text" NAME="payinfo" SIZE=10>
- </TD>
-</TR>
--->
+<% my $row = 0;
+ if ( $cgi->param('error') ) {
+ my $param = $cgi->Vars;
+%>
+
+ <% for ( $row = 0; exists($param->{"custnum$row"}); $row++ ) { %>
+
+ <TR>
+
+ <TD>
+ <INPUT TYPE="text" NAME="custnum<%= $row %>" ID="custnum<%= $row %>" SIZE=8 MAXLENGTH=12 VALUE="<%= $param->{"custnum$row"} %>" rownum="<%= $row %>">
+ <SCRIPT TYPE="text/javascript">
+ var custnum_input<%= $row %> = document.getElementById("custnum<%= $row %>");
+ custnum_input<%= $row %>.onfocus = clearhint_custnum;
+ custnum_input<%= $row %>.onchange = search_custnum;
+ </SCRIPT>
+ </TD>
+
+ <TD>
+ <INPUT TYPE="text" NAME="customer<%= $row %>" ID="customer<%= $row %>" SIZE=64 VALUE="<%= $param->{"customer$row"} %>" rownum="<%= $row %>">
+ <SCRIPT TYPE="text/javascript">
+ var customer_input<%= $row %> = document.getElementById("customer<%= $row %>");
+ customer_input<%= $row %>.onfocus = clearhint_customer;
+ customer_input<%= $row %>.onclick = clearhint_customer;
+ customer_input<%= $row %>.onchange = search_customer;
+ </SCRIPT>
+ <SELECT NAME="cust_select<%= $row %>" ID="cust_select<%= $row %>" rownum="<%= $row %>" STYLE="color:#ff0000; display:none"">
+ </SELECT>
+ <SCRIPT TYPE="text/javascript">
+ var customer_select<%= $row %> = document.getElementById("cust_select<%= $row %>");
+ customer_select<%= $row %>.onchange = select_customer;
+ </SCRIPT>
+ </TD>
+
+ <TD>
+ $<INPUT TYPE="text" NAME="paid<%= $row %>" SIZE=8 MAXLENGTH=8 VALUE="<%= $param->{"paid$row"} %>" >
+ </TD>
+
+ <TD>
+ <INPUT TYPE="text" NAME="payinfo<%= $row %>" SIZE=10 VALUE="<%= $param->{"payinfo$row"} %>" >
+ </TD>
+
+ <TD BGCOLOR="#e8e8e8">
+ <% if ( $param->{"error$row"} ) { %>
+ <FONT SIZE="-1" COLOR="#ff0000">Error: <%= $param->{"error$row"} %></FONT>
+ <% } %>
+ </TD>
+
+ </TR>
+
+ <% } %>
+
+<% } %>
</TABLE>
-<BR>
-<INPUT TYPE="button" VALUE="TEST addrow" onClick="addRow()">
+<!-- <BR>
+<INPUT TYPE="button" VALUE="TEST addrow" onclick="addRow()"> -->
<BR>
-<INPUT TYPE="submit" VALUE="Post payments">
+<INPUT TYPE="submit" NAME="submit" VALUE="Post payments">
</FORM>
+
+
+<%= include('/elements/xmlhttp.html',
+ 'url' => $p. 'misc/xmlhttp-cust_main-search.cgi',
+ 'subs' => [qw( custnum_search smart_search )],
+ )
+%>
+
+<SCRIPT TYPE="text/javascript">
+
+ var rownum = <%= $row %>;
+
+ function addRow() {
+
+ var table = document.getElementById('OneTrueTable');
+ var tablebody = table.getElementsByTagName('tbody').item(0);
+
+ var row = document.createElement('TR');
+
+ var custnum_cell = document.createElement('TD');
+
+ var custnum_input = document.createElement('INPUT');
+ custnum_input.setAttribute('name', 'custnum'+rownum);
+ custnum_input.setAttribute('id', 'custnum'+rownum);
+ custnum_input.setAttribute('size', 8);
+ custnum_input.setAttribute('maxlength', 12);
+ custnum_input.setAttribute('rownum', rownum);
+ custnum_input.onfocus = clearhint_custnum;
+ custnum_input.onchange = search_custnum;
+ custnum_cell.appendChild(custnum_input);
+
+ row.appendChild(custnum_cell);
+
+ var customer_cell = document.createElement('TD');
+
+ var customer_input = document.createElement('INPUT');
+ customer_input.setAttribute('name', 'customer'+rownum);
+ customer_input.setAttribute('id', 'customer'+rownum);
+ customer_input.setAttribute('size', 64);
+ customer_input.setAttribute('value', '(last name or company)' );
+ customer_input.setAttribute('rownum', rownum);
+ customer_input.onfocus = clearhint_customer;
+ customer_input.onclick = clearhint_customer;
+ customer_input.onchange = search_customer;
+ customer_cell.appendChild(customer_input);
+
+ var customer_select = document.createElement('SELECT');
+ customer_select.setAttribute('name', 'cust_select'+rownum);
+ customer_select.setAttribute('id', 'cust_select'+rownum);
+ customer_select.setAttribute('rownum', rownum);
+ customer_select.style.color = '#ff0000';
+ customer_select.style.display = 'none';
+ customer_select.onchange = select_customer;
+ customer_cell.appendChild(customer_select);
+
+ row.appendChild(customer_cell);
+
+ var paid_cell = document.createElement('TD');
+
+ var paid_text = document.createTextNode('$');
+ paid_cell.appendChild(paid_text);
+
+ var paid_input = document.createElement('INPUT');
+ paid_input.setAttribute('name', 'paid'+rownum);
+ paid_input.setAttribute('size', 8);
+ paid_input.setAttribute('maxlength', 8);
+ paid_cell.appendChild(paid_input);
+
+ row.appendChild(paid_cell);
+
+ var payinfo_cell = document.createElement('TD');
+ var payinfo_input = document.createElement('INPUT');
+ payinfo_input.setAttribute('name', 'payinfo'+rownum);
+ payinfo_input.setAttribute('size', 10);
+ payinfo_cell.appendChild(payinfo_input);
+ row.appendChild(payinfo_cell);
+
+ var error_cell = document.createElement('TD');
+ error_cell.style.backgroundColor = '#e8e8e8';
+ row.appendChild(error_cell);
+
+ tablebody.appendChild(row);
+
+ rownum++;
+
+ }
+
+</SCRIPT>
+
</BODY>
</HTML>