Merged bugfixes since 2.0.6
[fa-stable.git] / includes / ui / ui_lists.inc
index 3da4154120587cab4e572549c1c897bd76d7b17a..08e73f0225032bb8f71a2bc4df297dcc740a1744 100644 (file)
@@ -1,5 +1,14 @@
 <?php
-
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU Affero General Public License,
+       AGPL, as published by the Free Software Foundation, either version 
+       3 of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+***********************************************************************/
 include_once($path_to_root . "/includes/banking.inc");
 include_once($path_to_root . "/includes/reserved.inc");
 include_once($path_to_root . "/includes/types.inc");
@@ -49,7 +58,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)
@@ -132,7 +142,9 @@ $opts = array(              // default options
                }
        }
        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;
@@ -140,6 +152,7 @@ $opts = array(              // default options
        $selector = $first_opt = '';
        $first_id = false;
        $found = false;
+       $lastcat = null;
 //if($name=='stock_id') display_error($sql);
        if($result = db_query($sql)) {
                while ($contact_row = db_fetch($result)) {
@@ -158,6 +171,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);
@@ -632,14 +650,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)
@@ -676,10 +695,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";
@@ -695,7 +713,8 @@ function sales_items_list($name, $selected_id=null, $all_option=false,
                '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) );
 }
 
@@ -743,8 +762,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 ) );
 }
 //------------------------------------------------------------------------------------
 
@@ -1273,26 +1292,38 @@ function movement_types_list_row($label, $name, $selected_id=null)
 }
 
 //-----------------------------------------------------------------------------------------------
-/*
-function bank_trans_types_list($name, $selected_id=null)
+function _format_date($row)
 {
-       $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
-       combo_input($name, $selected_id, $sql, 'id', 'name', array());
+       return sql2date($row['reconciled']);
 }
 
-function bank_trans_types_list_cells($label, $name, $selected_id=null)
+function bank_reconciliation_list($account, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
+{
+       $sql = "SELECT reconciled, reconciled FROM ".TB_PREF."bank_trans
+               WHERE bank_act=".db_escape($account)." AND reconciled IS NOT NULL
+               GROUP BY reconciled";
+       combo_input($name, $selected_id, $sql, 'id', 'reconciled',
+       array(
+               'spec_option' => $special_option,
+               'format' => '_format_date',
+               'spec_id' => '',
+               'select_submit'=> $submit_on_change
+       ) );
+}
+
+function bank_reconciliation_list_cells($label,$account, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
 {
        if ($label != null)
                echo "<td>$label</td>\n";
        echo "<td>";
-       bank_trans_types_list($name, $selected_id);
+       bank_reconciliation_list($account, $name, $selected_id, $submit_on_change, $special_option);
        echo "</td>\n";
 }
-
-function bank_trans_types_list_row($label, $name, $selected_id=null)
+/*
+function bank_reconciliation_list_row($label, $account, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
 {
        echo "<tr>\n";
-       bank_trans_types_list_cells($label, $name, $selected_id);
+       bank_reconciliation_list_cells($label, $account, $name, $selected_id, $submit_on_change, $special_option);
        echo "</tr>\n";
 }
 */
@@ -1510,7 +1541,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
@@ -1526,17 +1557,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
        ) );
 
 }
@@ -1546,27 +1578,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";
 }
 
@@ -1696,49 +1724,6 @@ function payment_person_types_list_row($label, $name, $selected_id=null, $relate
        return $str;
 }
 
-//------------------------------------------------------------------------------------------------
-
-function quick_entries_list($name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
-{
-       $where = false;
-       $sql = "SELECT id, description FROM ".TB_PREF."quick_entries";
-       if ($expense != -1)
-       {
-               $sql .= " WHERE deposit=$expense";
-               $where = true;
-       }       
-       if ($bank_only != -1)
-       {
-               if ($where)
-                       $sql .= " AND bank_only=$bank_only";
-               else    
-                       $sql .= " WHERE bank_only=$bank_only";
-       }
-       combo_input($name, $selected_id, $sql, 'id', 'description',
-               array(
-                       'spec_id' => '',
-                       'order' => 'description',
-                       'select_submit'=> $submit_on_change,
-                       'async' => false
-               ) );
-
-}
-
-function quick_entries_list_cells($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
-{
-       echo "<td>$label</td><td>\n";
-       quick_entries_list($name, $selected_id, $expense, $bank_only, $submit_on_change);
-       echo "</td>";
-}
-
-function quick_entries_list_row($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
-{
-       echo "<tr>\n";
-       quick_entries_list_cells($label, $name, $selected_id, $expense, $bank_only, $submit_on_change);
-       echo "</tr>\n";
-}
-
-
 //------------------------------------------------------------------------------------------------
 
 function wo_types_list($name, $selected_id=null)
@@ -2021,5 +2006,63 @@ function printers_list($name, $selected_id=null, $spec_opt=false, $submit_on_cha
                 ));
 }
 
+//------------------------------------------------------------------------------------------------
+
+function quick_entries_list($name, $selected_id=null, $type=null, $submit_on_change=false)
+{
+       $where = false;
+       $sql = "SELECT id, description FROM ".TB_PREF."quick_entries";
+       if ($type != null)
+               $sql .= " WHERE type=$type";
+
+       combo_input($name, $selected_id, $sql, 'id', 'description',
+               array(
+                       'spec_id' => '',
+                       'order' => 'description',
+                       'select_submit'=> $submit_on_change,
+                       'async' => false
+               ) );
+
+}
+
+function quick_entries_list_cells($label, $name, $selected_id=null, $type, $submit_on_change=false)
+{
+       echo "<td>$label</td><td>\n";
+       quick_entries_list($name, $selected_id, $type, $submit_on_change);
+       echo "</td>";
+}
+
+function quick_entries_list_row($label, $name, $selected_id=null, $type, $submit_on_change=false)
+{
+       echo "<tr>\n";
+       quick_entries_list_cells($label, $name, $selected_id, $type, $submit_on_change);
+       echo "</tr>\n";
+}
+
+
+function quick_actions_list_row($label, $name, $selected_id=null, $submit_on_change=false)
+{
+       global $quick_actions;
+       
+       echo "<tr><td>$label</td><td>";
+       array_selector($name, $selected_id, $quick_actions, 
+               array( 
+                       'select_submit'=> $submit_on_change
+               ) );
+       echo "</td></tr>\n";
+}
+
+function quick_entry_types_list_row($label, $name, $selected_id=null, $submit_on_change=false)
+{
+       global $quick_entry_types;
+               
+       echo "<tr><td>$label</td><td>";
+       array_selector($name, $selected_id, $quick_entry_types, 
+               array( 
+                       'select_submit'=> $submit_on_change
+                       ) );
+       echo "</td></tr>\n";
+}
+
 
 ?>
\ No newline at end of file