diff options
author | levinse <levinse> | 2011-02-15 04:20:19 +0000 |
---|---|---|
committer | levinse <levinse> | 2011-02-15 04:20:19 +0000 |
commit | 99a7600cf4b5986b6f2be8ee1ad871ca77799c6b (patch) | |
tree | 344528d4334979db92b15c21a802d34cc36c0d9c /httemplate | |
parent | 6d167446d719a361d84bf6be752ad24d718eaa35 (diff) |
quick payment tool improvements, RT10698
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/elements/customer-table.html | 163 | ||||
-rw-r--r-- | httemplate/misc/xmlhttp-cust_main-search.cgi | 16 |
2 files changed, 174 insertions, 5 deletions
diff --git a/httemplate/elements/customer-table.html b/httemplate/elements/customer-table.html index 3c3f8b2ee..c3a5df937 100644 --- a/httemplate/elements/customer-table.html +++ b/httemplate/elements/customer-table.html @@ -41,6 +41,15 @@ Example: <SCRIPT TYPE="text/javascript"> + function clearhint_invnum() { + + if ( this.value == 'Not found' || this.value == 'Multiple' ) { + this.value = ''; + this.style.color = '#000000'; + } + + } + function clearhint_custnum() { if ( this.value == 'Not found' || this.value == 'Multiple' ) { @@ -58,6 +67,82 @@ Example: this.value = ''; } + + function <% $opt{prefix} %>search_invnum() { + + this.style.color = '#000000' + + var invnum_obj = this; + var searchrow = this.getAttribute('rownum'); + var invnum = this.value; + + if ( invnum == 'searching...' || invnum == 'Not found' || invnum == '' ) + return; + + if ( this.getAttribute('magic') == 'nosearch' ) { + this.setAttribute('magic', ''); + return; + } + + if ( ( <% $opt{prefix} %>rownum - searchrow ) == 1 ) { + <% $opt{prefix} %>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); + + customer.style.display = ''; + customer_select.style.display = 'none'; + + var custnum_obj = document.getElementById('custnum'+searchrow); + var balance = document.getElementById('balance'+searchrow); + balance.value = ''; + + function search_invnum_update(customers) { + + var customerArray = eval('(' + customers + ')'); + + custnum_obj.disabled = false; + custnum_obj.style.backgroundColor = '#ffffff'; + customer.disabled = false; + customer.style.backgroundColor = '#ffffff'; + + if ( customerArray.length == 0 ) { + + custnum_obj.value = 'Not found'; + customer.value = 'Not found'; + custnum_obj.style.color = '#ff0000'; + customer.style.color = '#ff0000'; + + customer.style.display = ''; + customer_select.style.display = 'none'; + + } else if ( customerArray.length == 3 ) { + + custnum_obj.value = customerArray[0]; + custnum_obj.style.color = '#000000'; + customer.value = customerArray[1]; + balance.value = customerArray[2]; + + customer.style.display = ''; + customer_select.style.display = 'none'; + +% if ( $opt{invnum_update_callback} ) { + <% $opt{invnum_update_callback} %>(searchrow, '<% $opt{prefix} %>') +% } + + } + + } + + invnum_search( invnum, search_invnum_update ); + + } + function <% $opt{prefix} %>search_custnum() { @@ -89,6 +174,12 @@ Example: customer.style.display = ''; customer_select.style.display = 'none'; + var invnum = document.getElementById('invnum'+searchrow); + invnum.value = ''; + + var balance = document.getElementById('balance'+searchrow); + balance.value = ''; + function search_custnum_update(name) { var name = eval('(' + name + ')' ); @@ -132,6 +223,9 @@ Example: if ( ( <% $opt{prefix} %>rownum - searchrow ) == 1 ) { <% $opt{prefix} %>addRow(); } + + var invnum = document.getElementById('invnum'+searchrow); + invnum.value = ''; var custnum_obj = document.getElementById('custnum'+searchrow); custnum_obj.value = 'searching...'; @@ -140,6 +234,9 @@ Example: custnum_obj.style.backgroundColor = '#dddddd'; var customer_select = document.getElementById('cust_select'+searchrow); + + var balance = document.getElementById('balance'+searchrow); + balance.value = ''; function search_customer_update(customers) { @@ -157,11 +254,11 @@ Example: customer_obj.style.display = ''; customer_select.style.display = 'none'; - } else if ( customerArray.length == 1 ) { custnum_obj.value = customerArray[0][0]; customer_obj.value = customerArray[0][1]; + balance.value = customerArray[0][2]; customer_obj.style.display = ''; customer_select.style.display = 'none'; @@ -250,16 +347,34 @@ Example: <TABLE ID="<% $opt{prefix} %>OneTrueTable" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0> <TR> + <TH>Inv #</TH> <TH>Cust #</TH> <TH>Customer</TH> % foreach my $header ( @{$opt{header}} ) { <TH><% $header %></TH> % } + <TH>Balance</TH> </TR> % my $row = 0; % for ( $row = 0; exists($param->{"custnum$row"}); $row++ ) { <TR> + <TD> + <INPUT TYPE = "text" + NAME = "invnum<% $row %>" + ID = "invnum<% $row %>" + SIZE = 8 + MAXLENGTH = 12 + STYLE = "text-align:right;" + VALUE = "<% $param->{"invnum$row"} %>" + rownum = "<% $row %>" + > + <SCRIPT TYPE="text/javascript"> + var invnum_input<% $row %> = document.getElementById("invnum<% $row %>"); + invnum_input<% $row %>.onfocus = clearhint_invnum; + invnum_input<% $row %>.onchange = <% $opt{prefix} %>search_invnum; + </SCRIPT> + </TD> <TD> <INPUT TYPE = "text" @@ -332,12 +447,22 @@ Example: </TD> % $col++; % } - + <TD> + <INPUT TYPE = "text" + NAME = "balance<% $row %>" + ID = "balance<% $row %>" + SIZE = 8 + MAXLENGTH = 12 + STYLE = "text-align:right;" + VALUE = "<% $param->{"balance$row"} %>" + rownum = "<% $row %>" + > + </TD> </TR> % } <TR> - <TH COLSPAN=2 ID="<% $opt{'prefix'} %>_TOTAL_TOTAL"> + <TH COLSPAN=3 ID="<% $opt{'prefix'} %>_TOTAL_TOTAL"> Total <% $row ? $row-1 : 0 %> <% PL($opt{name_singular} || 'customer', ( $row ? $row-1 : 0 ) ) %> </TH> @@ -394,7 +519,7 @@ Example: <% include('/elements/xmlhttp.html', 'url' => $p. 'misc/xmlhttp-cust_main-search.cgi', - 'subs' => [qw( custnum_search smart_search )], + 'subs' => [qw( custnum_search smart_search invnum_search )], ) %> @@ -411,6 +536,21 @@ Example: var tablebody = table.getElementsByTagName('tbody').item(0); var row = table.insertRow(rownum+1); + + var invnum_cell = document.createElement('TD'); + + var invnum_input = document.createElement('INPUT'); + invnum_input.setAttribute('name', 'invnum'+<% $opt{prefix} %>rownum); + invnum_input.setAttribute('id', 'invnum'+<% $opt{prefix} %>rownum); + invnum_input.style.textAlign = 'right'; + invnum_input.setAttribute('size', 8); + invnum_input.setAttribute('maxlength', 12); + invnum_input.setAttribute('rownum', <% $opt{prefix} %>rownum); + invnum_input.onfocus = clearhint_invnum; + invnum_input.onchange = <% $opt{prefix} %>search_invnum; + invnum_cell.appendChild(invnum_input); + + row.appendChild(invnum_cell); var custnum_cell = document.createElement('TD'); @@ -487,6 +627,21 @@ Example: % $col++; % } + var balance_cell = document.createElement('TD'); + + var balance_input = document.createElement('INPUT'); + balance_input.setAttribute('name', 'balance'+<% $opt{prefix} %>rownum); + balance_input.setAttribute('id', 'balance'+<% $opt{prefix} %>rownum); + balance_input.style.textAlign = 'right'; + balance_input.setAttribute('size', 8); + balance_input.setAttribute('maxlength', 12); + balance_input.setAttribute('rownum', <% $opt{prefix} %>rownum); + balance_input.disabled = true; + balance_input.style.backgroundColor = '#dddddd'; + balance_cell.appendChild(balance_input); + + row.appendChild(balance_cell); + //update the total # of rows display if ( <% $opt{prefix} %>rownum == 1 ) { <% $opt{prefix} %>total_el.innerHTML = diff --git a/httemplate/misc/xmlhttp-cust_main-search.cgi b/httemplate/misc/xmlhttp-cust_main-search.cgi index 481bea264..c71953ba9 100644 --- a/httemplate/misc/xmlhttp-cust_main-search.cgi +++ b/httemplate/misc/xmlhttp-cust_main-search.cgi @@ -25,9 +25,23 @@ % my @cust_main = smart_search( 'search' => $string, % 'no_fuzzy_on_exact' => 1, #pref? % ); -% my $return = [ map [ $_->custnum, $_->name ], @cust_main ]; +% my $return = [ map [ $_->custnum, $_->name, $_->balance ], @cust_main ]; % <% objToJson($return) %> +% } elsif ( $sub eq 'invnum_search' ) { +% +% my $string = $cgi->param('arg'); +% my $inv = qsearchs('cust_bill', { 'invnum' => $string }); +% my $return = []; +% if ( $inv ) { +% my $cust_main = qsearchs({ +% 'table' => 'cust_main', +% 'hashref' => { 'custnum' => $inv->custnum }, +% 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, +% }); +% $return = [ $cust_main->custnum, $cust_main->name, $cust_main->balance ]; +% } +<% objToJson($return) %> % } <%init> |