Replaced the ajax paging in stock movements with the old file.
[fa-stable.git] / includes / ui / ui_lists.inc
index e2fc6a10cb91505a1cf5012bc2c91cb4303eaa41..77b34a0be0b4824a585ac6bf650cc11046acf51f 100644 (file)
@@ -49,7 +49,8 @@ $opts = array(                // default options
        'search' => array(), // sql field names to search
        'format' => null,        // format functions for regular options
        'disabled' => false,
-       'box_hint' => null // box/selectors hints; null = std see below
+       'box_hint' => null, // box/selectors hints; null = std see below
+       'category' => false     // category column name or false
 );
 // ------ merge options with defaults ----------
        if($options != null)
@@ -121,11 +122,20 @@ $opts = array(            // default options
    }
        // sql completion
        if (count($opts['where'])) {
-               $sql .= strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
-               $sql .= '('. implode($opts['where'], ' AND ') . ')';
+               $where = strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
+               $where .= '('. implode($opts['where'], ' AND ') . ')';
+               $group_pos = strpos($sql, 'GROUP BY');
+               if ($group_pos) {
+                       $group = substr($sql, $group_pos);
+                       $sql = substr($sql, 0, $group_pos) . $where.' '.$group;
+               } else {
+                       $sql .= $where;
+               }
        }
        if ($opts['order'] != false) {
-               $sql .= ' ORDER BY '.$opts['order'];
+               if (!is_array($opts['order']))
+                       $opts['order'] = array($opts['order']);
+               $sql .= ' ORDER BY '.implode(',',$opts['order']);
        }
 
        $sql .= $limit;
@@ -133,7 +143,8 @@ $opts = array(              // default options
        $selector = $first_opt = '';
        $first_id = false;
        $found = false;
-//if($name=='contact_sel') display_error($sql);
+       $lastcat = null;
+//if($name=='stock_id') display_error($sql);
        if($result = db_query($sql)) {
                while ($contact_row = db_fetch($result)) {
                        $value = $contact_row[0];
@@ -151,6 +162,11 @@ $opts = array(             // default options
                                $first_id = $value;
                                $first_opt = $descr;
                        }
+                       $cat = $contact_row[$opts['category']];
+                       if ($opts['category'] !== false && $cat != $lastcat){
+                               $selector .= "<optgroup label='".$cat."'>\n";
+                               $lastcat = $cat;
+                       }
                        $selector .= "<option $sel value='$value'>$descr</option>\n";
                }
                db_free_result($result);
@@ -625,14 +641,15 @@ function stock_items_list($name, $selected_id=null, $all_option=false, $submit_o
                'search' => array("stock_id", "c.description","s.description"),
                'search_submit' => get_company_pref('no_item_list')!=0,
                'size'=>10,
-               'select_submit'=> $submit_on_change
+               'select_submit'=> $submit_on_change,
+               'category' => 2,
+               'order' => array('c.description','stock_id')
          ), $opts) );
 }
 
 function _format_stock_items($row)
 {
-       return (user_show_codes() ?  ($row[0] . "&nbsp;-&nbsp;") : "")
-               . $row[2] . "&nbsp;-&nbsp;" . $row[1];
+       return (user_show_codes() ?  ($row[0] . "&nbsp;-&nbsp;") : "") . $row[1];
 }
 
 function stock_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
@@ -669,10 +686,9 @@ function sales_items_list($name, $selected_id=null, $all_option=false,
                        ON i.category_id=c.category_id";
 
        if ($type == 'local')   { // exclude foreign codes
-               $sql .= " WHERE NOT i.is_foreign"; 
+               $sql .= " WHERE !i.is_foreign"; 
        } elseif ($type == 'kits') { // sales kits
-               $sql .= " WHERE NOT i.is_foreign 
-                       AND NOT i.item_code=i.stock_id";
+               $sql .= " WHERE !i.is_foreign AND i.item_code!=i.stock_id";
        }
                                
        $sql .= " GROUP BY i.item_code";
@@ -684,11 +700,12 @@ function sales_items_list($name, $selected_id=null, $all_option=false,
                'spec_option' => $all_option===true ?  _("All Items") : $all_option,
                'spec_id' => $all_items,
                'search_box' => true,
-               'search' => array("i.item_code", "c.description","s.description"),
+               'search' => array("i.item_code", "c.description"),
                'search_submit' => get_company_pref('no_item_list')!=0,
                'size'=>15,
                'select_submit'=> $submit_on_change,
-               'order' => 'i.item_code'
+               'category' => 2,
+               'order' => array('c.description','i.item_code')
          ), $opts) );
 }
 
@@ -736,8 +753,8 @@ function base_stock_items_list($where, $name, $selected_id=null,
                'spec_option' => $all_option==true ?  _("All Items") : $all_option,
                'spec_id' => $all_items,
                'select_submit'=> $submit_on_change,
-               'where' => $where
-       ) );
+               'where' => $where,
+               'category' => 2 ) );
 }
 //------------------------------------------------------------------------------------
 
@@ -1503,7 +1520,7 @@ function gl_account_types_list_row($label, $name, $selected_id=null, $all_option
 
 //-----------------------------------------------------------------------------------------------
 function gl_all_accounts_list($name, $selected_id=null, $skip_bank_accounts=false,
-       $show_group=false, $cells=false, $all_option=false, $submit_on_change=false)
+       $cells=false, $all_option=false, $submit_on_change=false)
 {
        if ($skip_bank_accounts)
                $sql = "SELECT chart.account_code, chart.account_name, type.name
@@ -1519,17 +1536,18 @@ function gl_all_accounts_list($name, $selected_id=null, $skip_bank_accounts=fals
 
        combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
        array(
-               'format' => '_format_account' .  ($show_group ? '2' : ''),
+               'format' => '_format_account',
                'spec_option' => $all_option===true ?  _("Use Item Sales Accounts") : $all_option,
                'spec_id' => '',
-               'order' => 'account_code',
+               'order' => array('name','account_code'),
                'search_box' => $cells,
                        'search_submit' => false,
                        'size' => 12,
                        'max' => 10,
                        'cells' => true,
                'select_submit'=> $submit_on_change,
-               'async' => false
+               'async' => false,
+               'category' => 2
        ) );
 
 }
@@ -1539,27 +1557,23 @@ function _format_account($row)
                return $row[0] .  "&nbsp;&nbsp;&nbsp;&nbsp;" . $row[1];
 }
 
-function _format_account2($row)
-{
-               return $row[0] .  "&nbsp;&nbsp;&nbsp;&nbsp;" . $row[2] . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $row[1];
-}
-
-function gl_all_accounts_list_cells($label, $name, $selected_id=null, $skip_bank_accounts=false,
-       $show_group=false, $cells=false, $all_option=false)
+function gl_all_accounts_list_cells($label, $name, $selected_id=null, 
+       $skip_bank_accounts=false, $cells=false, $all_option=false)
 {
        if ($label != null)
                echo "<td>$label</td>\n";
        echo "<td>";
-       gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
+       gl_all_accounts_list($name, $selected_id, 
+               $skip_bank_accounts, $cells, $all_option);
        echo "</td>\n";
 }
 
-function gl_all_accounts_list_row($label, $name, $selected_id=null, $skip_bank_accounts=false,
-       $show_group=false, $cells=false, $all_option=false)
+function gl_all_accounts_list_row($label, $name, $selected_id=null, 
+       $skip_bank_accounts=false, $cells=false, $all_option=false)
 {
        echo "<tr>\n";
-       gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
-               $show_group, $cells, $all_option);
+       gl_all_accounts_list_cells($label, $name, $selected_id, 
+               $skip_bank_accounts, $cells, $all_option);
        echo "</tr>\n";
 }