quick payment entry improvements, RT8121
[freeside.git] / httemplate / elements / customer-table.html
index c3a5df9..aa085c4 100644 (file)
@@ -100,7 +100,9 @@ Example:
     
     var custnum_obj = document.getElementById('custnum'+searchrow);
     var balance = document.getElementById('balance'+searchrow);
-    balance.value = '';
+    var status = document.getElementById('status'+searchrow);
+    balance.innerHTML = '';
+    status.innerHTML = '';
 
     function search_invnum_update(customers) {
       
@@ -121,12 +123,14 @@ Example:
         customer.style.display = '';
         customer_select.style.display = 'none';
 
-      } else if ( customerArray.length == 3 ) {
+      } else if ( customerArray.length == 5 ) {
 
         custnum_obj.value = customerArray[0];
         custnum_obj.style.color = '#000000';
         customer.value = customerArray[1];
-        balance.value = customerArray[2];
+        balance.innerHTML = '<% $money_char %>' + customerArray[2] + ' &nbsp; ';
+        status.innerHTML = customerArray[3]; 
+        status.style.color = '#'+customerArray[4];
 
         customer.style.display = '';
         customer_select.style.display = 'none';
@@ -178,31 +182,43 @@ Example:
     invnum.value = '';
     
     var balance = document.getElementById('balance'+searchrow);
-    balance.value = '';
+    balance.innerHTML = '';
+    
+    var status = document.getElementById('status'+searchrow);
+    status.innerHTML = '';
 
-    function search_custnum_update(name) {
+    function search_custnum_update(customers) {
 
-      var name = eval('(' + name + ')' );
+      var customerArray = eval('(' + customers + ')');
 
       customer.disabled = false;
       customer.style.backgroundColor = '#ffffff';
+      
+      if ( customerArray.length == 0 ) {
 
-      if ( name.length > 0 ) {
-        customer.value = name;
-        customer.setAttribute('magic', 'nosearch');
-% if ( $opt{custnum_update_callback} ) {
-        <% $opt{custnum_update_callback} %>(searchrow, '<% $opt{prefix} %>')
-% }
-      } else {
-        customer.value = 'Not found';
+       customer.value = 'Not found';
         customer.style.color = '#ff0000';
         custnum_obj.style.color = '#ff0000';
 
-      }
+      } else if ( customerArray.length == 5 ) {
+
+        custnum_obj.value = customerArray[0];
+        custnum_obj.style.color = '#000000';
+        customer.value = customerArray[1];
+        balance.innerHTML = '<% $money_char %>' + customerArray[2] + ' &nbsp; ';
+        status.innerHTML = customerArray[3]; 
+        status.style.color = '#'+customerArray[4];
+
+        customer.style.display = '';
+        customer_select.style.display = 'none';
 
+% if ( $opt{custnum_update_callback} ) {
+        <% $opt{custnum_update_callback} %>(searchrow, '<% $opt{prefix} %>')
+% }
+      }
     }
 
-    custnum_search( custnum, search_custnum_update );
+    custnum_search(custnum, search_custnum_update );
 
   }
 
@@ -236,7 +252,10 @@ Example:
     var customer_select = document.getElementById('cust_select'+searchrow);
     
     var balance = document.getElementById('balance'+searchrow);
-    balance.value = '';
+    balance.innerHTML = '';
+    
+    var status = document.getElementById('status'+searchrow);
+    status.innerHTML = '';
 
     function search_customer_update(customers) {
 
@@ -258,7 +277,9 @@ Example:
 
         custnum_obj.value = customerArray[0][0];
         customer_obj.value = customerArray[0][1];
-        balance.value = customerArray[0][2];
+        balance.innerHTML = '<% $money_char %>' + customerArray[0][2] + ' &nbsp; ';
+        status.innerHTML = customerArray[0][3]; 
+        status.style.color = '#'+customerArray[0][4];
 
         customer_obj.style.display = '';
         customer_select.style.display = 'none';
@@ -280,7 +301,7 @@ Example:
 
         //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, customerArray[s][0] + '_' + customerArray[s][2] + '_' + customerArray[s][3] + '_' + customerArray[s][4], customerArray[s][1], '#000000');
 
         opt(customer_select, 'cancel', '(Edit search string)', '#000000');
 
@@ -298,16 +319,18 @@ Example:
 
   function select_customer() {
 
-    var custnum = this.options[this.selectedIndex].value;
+    var custnum_balance_status = this.options[this.selectedIndex].value;
     var customer = this.options[this.selectedIndex].text;
 
     var searchrow = this.getAttribute('rownum');
     var custnum_obj = document.getElementById('custnum'+searchrow);
     var customer_obj = document.getElementById('customer'+searchrow);
+    var balance_obj = document.getElementById('balance'+searchrow);
+    var status_obj = document.getElementById('status'+searchrow);
 
-    if ( custnum == '' ) {
+    if ( custnum_balance_status == '' ) {
 
-    } else if ( custnum == 'cancel' ) {
+    } else if ( custnum_balance_status == 'cancel' ) {
 
       custnum_obj.value = '';
       custnum_obj.style.color = '#000000';
@@ -317,6 +340,14 @@ Example:
       customer_obj.focus();
 
     } else {
+    
+      var pos_underscore1 = custnum_balance_status.indexOf('_'); 
+      var pos_underscore2 = custnum_balance_status.indexOf('_',pos_underscore1+1); 
+      var pos_underscore3 = custnum_balance_status.indexOf('_',pos_underscore2+1); 
+      var custnum = custnum_balance_status.substring(0,pos_underscore1);
+      var balance = custnum_balance_status.substring(pos_underscore1+1,pos_underscore2) + ' &nbsp; ';
+      var status = custnum_balance_status.substring(pos_underscore2+1,pos_underscore3);
+      var color = custnum_balance_status.substring(pos_underscore3+1);
 
       custnum_obj.value = custnum;
       custnum_obj.style.color = '#000000';
@@ -324,6 +355,11 @@ Example:
       customer_obj.value = customer;
       customer_obj.style.color = '#000000';
 
+      balance_obj.innerHTML = '<% $money_char %>' + balance;
+
+      status_obj.innerHTML = status;
+      status_obj.style.color = '#'+color;
+
       this.style.display = 'none';
       customer_obj.style.display = '';
 
@@ -349,11 +385,12 @@ Example:
 <TR>
   <TH>Inv #</TH>
   <TH>Cust #</TH>
+  <TH>Status</TH>
   <TH>Customer</TH>
+  <TH>Balance</TH>
 % foreach my $header ( @{$opt{header}} ) {
     <TH><% $header %></TH>
 % }
-  <TH>Balance</TH>
 </TR>
 % my $row = 0;
 % for ( $row = 0; exists($param->{"custnum$row"}); $row++ ) { 
@@ -392,6 +429,16 @@ Example:
           custnum_input<% $row %>.onchange = <% $opt{prefix} %>search_custnum;
         </SCRIPT>
       </TD>
+      
+      <TD>
+        <SPAN 
+               NAME      = "status<% $row %>"
+               ID        = "status<% $row %>"
+               rownum    = "<% $row %>"
+               STYLE     = "text-align:center; font-weight: bold"
+        >
+        </SPAN>
+      </TD>
 
       <TD>
         <INPUT TYPE="text" NAME="customer<% $row %>" ID="customer<% $row %>" SIZE=64 VALUE="<% $param->{"customer$row"} %>" rownum="<% $row %>">
@@ -447,22 +494,20 @@ Example:
       </TD>
 %     $col++;
 %   }
-      <TD>
-       <INPUT TYPE      = "text"
+      <TD STYLE="text-align:right;">
+        <SPAN 
                NAME      = "balance<% $row %>"
                ID        = "balance<% $row %>"
-               SIZE      = 8
-               MAXLENGTH = 12
-               STYLE     = "text-align:right;"
-               VALUE     = "<% $param->{"balance$row"} %>"
                rownum    = "<% $row %>"
         >
+        </SPAN>
+        &nbsp;
       </TD>
     </TR>
 % } 
 
 <TR>
-  <TH COLSPAN=3 ID="<% $opt{'prefix'} %>_TOTAL_TOTAL">
+  <TH COLSPAN=5 ID="<% $opt{'prefix'} %>_TOTAL_TOTAL">
     Total <% $row ? $row-1 : 0 %>
     <% PL($opt{name_singular} || 'customer', ( $row ? $row-1 : 0 ) ) %>
   </TH>
@@ -566,6 +611,18 @@ Example:
       custnum_cell.appendChild(custnum_input);
 
     row.appendChild(custnum_cell);
+    
+    var status_cell = document.createElement('TD');
+        
+        var status_span = document.createElement('SPAN');
+        status_span.setAttribute('name', 'status'+<% $opt{prefix} %>rownum);
+        status_span.setAttribute('id',   'status'+<% $opt{prefix} %>rownum);
+        status_span.style.textAlign = 'center';
+        status_span.style.fontWeight = 'bold';
+        status_span.setAttribute('rownum', <% $opt{prefix} %>rownum);
+        status_cell.appendChild(status_span);
+        
+    row.appendChild(status_cell);
 
     var customer_cell = document.createElement('TD');
 
@@ -590,6 +647,17 @@ Example:
       customer_cell.appendChild(customer_select);
 
     row.appendChild(customer_cell);
+    
+    var balance_cell = document.createElement('TD');
+        balance_cell.style.textAlign = 'right';
+        
+        var balance_span = document.createElement('SPAN');
+        balance_span.setAttribute('name', 'balance'+<% $opt{prefix} %>rownum);
+        balance_span.setAttribute('id',   'balance'+<% $opt{prefix} %>rownum);
+        balance_span.setAttribute('rownum', <% $opt{prefix} %>rownum);
+        balance_cell.appendChild(balance_span);
+
+    row.appendChild(balance_cell);
 
 %   my $col = 0;
 %   foreach my $field ( @{$opt{fields}} ) {
@@ -627,21 +695,6 @@ 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 =
@@ -667,6 +720,7 @@ Example:
 <%init>
 
 my(%opt) = @_;
+my $conf = new FS::Conf;
 
 $opt{prefix} = '' unless defined $opt{prefix};
 $opt{prefix} .= '_' if $opt{prefix};
@@ -687,4 +741,6 @@ my %align = (
   'c' => 'center',
 );
 
+my $money_char = $conf->config('money_char') || '$';
+
 </%init>