X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fui%2Fui_lists.inc;h=bd411303ce3f9571ef0443882ec2f160a532f4c9;hb=29bfc95a3b218ab90694535a0e94acd380b738b5;hp=b960c27d9809af4fab279d189230a921634933eb;hpb=fd59c60718609c1bf3240a303030167a4f1b1885;p=fa-stable.git diff --git a/includes/ui/ui_lists.inc b/includes/ui/ui_lists.inc index b960c27d..bd411303 100644 --- a/includes/ui/ui_lists.inc +++ b/includes/ui/ui_lists.inc @@ -1,5 +1,14 @@ . +***********************************************************************/ 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,9 @@ $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 + 'show_inactive' => false // show inactive records. ); // ------ merge options with defaults ---------- if($options != null) @@ -121,11 +132,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 +153,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]; @@ -147,11 +168,22 @@ $opts = array( // default options $sel = 'selected'; $found = $value; } + // show selected option even if inactive + if (!$opts['show_inactive'] && @$contact_row['inactive'] && $sel==='') { + continue; + } else + $optclass = @$contact_row['inactive'] ? "class='inactive'" : ''; + if ($first_id === false) { $first_id = $value; $first_opt = $descr; } - $selector .= "\n"; + $cat = $contact_row[$opts['category']]; + if ($opts['category'] !== false && $cat != $lastcat){ + $selector .= "\n"; + $lastcat = $cat; + } + $selector .= "\n"; } db_free_result($result); } @@ -160,8 +192,11 @@ $opts = array( // default options if ($spec_option !== false) { // if special option used - add it $first_id = $spec_id; $first_opt = $spec_option; +// } +// if($first_id !== false) { $sel = $found===false ? 'selected' : ''; - $selector = "\n" + $optclass = @$contact_row['inactive'] ? "class='inactive'" : ''; + $selector = "\n" . $selector; } @@ -208,7 +243,7 @@ $opts = array( // default options $search_submit)."\n"; } } - default_focus($name); + default_focus(($search_box && $by_id) ? $search_box : $name); $str = $selector; if ($search_box && $opts['cells']) echo ($edit_entry!='' ? "$edit_entry" : '')."$selector"; @@ -272,7 +307,7 @@ $opts = array( // default options //if($name=='SelectStockFromList') display_error($sql); foreach($items as $value=>$descr) { $sel = ''; - if ($selected_id == $value) { + if ((string)$selected_id === (string)$value) { $sel = 'selected'; $found = $value; } @@ -293,8 +328,9 @@ $opts = array( // default options } if ($found === false) { - $_POST[$name] = $first_id; + $selected_id = $first_id; } + $_POST[$name] = $selected_id; $aspect = $opts['edit_submit'] ? " aspect='editable'" : ''; $selector = "