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> | 
