3 include_once($path_to_root . "/includes/banking.inc");
4 include_once($path_to_root . "/includes/reserved.inc");
5 include_once($path_to_root . "/includes/types.inc");
6 include_once($path_to_root . "/includes/current_user.inc");
8 $_search_button = "<input %s type='submit' class='combo_submit' style='border:0;background:url($path_to_root/themes/"
9 ."%s/images/locate.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Set filter")."'> ";
11 $_select_button = "<input %s type='submit' class='combo_select' style='border:0;background:url($path_to_root/themes/"
12 ."%s/images/button_ok.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Select")."'> ";
14 $all_items = reserved_words::get_all();
16 //----------------------------------------------------------------------------
17 // Universal sql combo generator
18 // $sql must return selector values and selector texts in columns 0 & 1
19 // Options are merged with defaults.
21 function combo_input($name, $selected_id, $sql, $valfield, $namefield,
26 $opts = array( // default options
27 'where'=> array(), // additional constraints
28 'order' => $namefield, // list sort order
29 // special option parameters
30 'spec_option'=>false, // option text or false
31 'spec_id' => 0, // option id
32 // submit on select parameters
33 'default' => '', // default value when $_POST is not set
34 'select_submit' => false, //submit on select: true/false
35 'edit_submit' => false, // call editor on F4
36 'async' => true, // select update via ajax (true) vs _page_body reload
37 // search box parameters
39 'search_box' => false, // name or true/false
40 'type' => 0, // type of extended selector:
41 // 0 - with (optional) visible search box, search by id
42 // 1 - with hidden search box, search by option text
43 // 2 - TODO reverse: box with hidden selector available via enter; this
44 // would be convenient for optional ad hoc adding of new item
45 'search_submit' => true, //search submit button: true/false
46 'size' => 8, // size and max of box tag
48 'cells' => false, // combo displayed as 2 <td></td> cells
49 'search' => array(), // sql field names to search
50 'format' => null, // format functions for regular options
52 'box_hint' => null, // box/selectors hints; null = std see below
53 'category' => false // category column name or false
55 // ------ merge options with defaults ----------
57 $opts = array_merge($opts, $options);
58 if (!is_array($opts['where'])) $opts['where'] = array($opts['where']);
60 $search_box = $opts['search_box']===true ? '_'.$name.'_edit' : $opts['search_box'];
61 $search_submit = $opts['search_submit']===true ? '_'.$name.'_button' : $opts['search_submit'];
62 $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit'];
63 $spec_id = $opts['spec_id'];
64 $spec_option = $opts['spec_option'];
65 $by_id = ($opts['type'] == 0);
66 $class = $by_id ? 'combo':'combo2';
67 $disabled = $opts['disabled'] ? "disabled" : '';
69 if(!count($opts['search'])) {
70 $opts['search'] = array($by_id ? $valfield : $namefield);
72 if ($opts['sel_hint'] === null)
73 $opts['sel_hint'] = $by_id || $search_box==false ?
74 '' : _('Press Space tab for search pattern entry');
76 if ($opts['box_hint'] === null)
77 $opts['box_hint'] = $search_box && $search_submit != false ?
78 ($by_id ? _('Enter code fragment to search or * for all')
79 : _('Enter description fragment to search or * for all')) :'';
81 if ($selected_id == null) {
82 $selected_id = get_post($name, $opts['default']);
84 $txt = get_post($search_box);
88 if (isset($_POST[$select_submit])) {
89 if ($by_id) $txt = $_POST[$name];
92 $Ajax->activate('_page_body');
94 $Ajax->activate($name);
97 // search related sql modifications
99 $rel = "rel='$search_box'"; // set relation to list
100 if ($opts['search_submit']) {
101 if (isset($_POST[$search_submit])) {
102 $selected_id = ''; // ignore selected_id while search
104 $Ajax->activate('_page_body');
106 $Ajax->activate($name);
109 if ($spec_option === false && $selected_id==null)
112 $opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
117 foreach($opts['search'] as $i=> $s)
118 $opts['search'][$i] = $s . " LIKE '%{$txt}%'";
119 $opts['where'][] = '('. implode($opts['search'], ' OR ') . ')';
124 if (count($opts['where'])) {
125 $where = strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
126 $where .= '('. implode($opts['where'], ' AND ') . ')';
127 $group_pos = strpos($sql, 'GROUP BY');
129 $group = substr($sql, $group_pos);
130 $sql = substr($sql, 0, $group_pos) . $where.' '.$group;
135 if ($opts['order'] != false) {
136 $sql .= ' ORDER BY '.$opts['order'];
140 // ------ make selector ----------
141 $selector = $first_opt = '';
145 //if($name=='stock_id') display_error($sql);
146 if($result = db_query($sql)) {
147 while ($contact_row = db_fetch($result)) {
148 $value = $contact_row[0];
149 $descr = $opts['format']==null ? $contact_row[1] :
150 call_user_func($opts['format'], $contact_row);
152 if (get_post($search_submit) && ($txt === $value)) {
153 $selected_id = $value;
155 if ((string)($selected_id) === $value) {
159 if ($first_id === false) {
163 $cat = $contact_row[$opts['category']];
164 if ($opts['category'] !== false && $cat != $lastcat){
165 $selector .= "<optgroup label='".$cat."'>\n";
168 $selector .= "<option $sel value='$value'>$descr</option>\n";
170 db_free_result($result);
173 // Prepend special option.
174 if ($spec_option !== false) { // if special option used - add it
175 $first_id = $spec_id;
176 $first_opt = $spec_option;
177 $sel = $found===false ? 'selected' : '';
178 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
182 if ($found === false) {
183 $selected_id = $first_id;
185 $_POST[$name] = $selected_id;
187 if ($by_id && $search_box != false) {
189 $Ajax->addUpdate($name, $search_box, $txt ? $txt : '');
191 $aspect = $opts['edit_submit'] ? " aspect='editable'" : '';
192 $selector = "<select $disabled name='$name' class='$class' title='"
193 . $opts['sel_hint']."'$aspect $rel>".$selector."</select>\n";
195 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
197 // because of bug which M$ cannot fix since IE 5.0
198 // we must embed whole selector in span tags to enable proper ajax update
199 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
201 if ($select_submit != false) { // if submit on change is used - add select button
202 global $_select_button;
203 // button class selects form reload/ajax selector update
204 $selector .= sprintf($_select_button, $disabled, user_theme(),
205 (fallback_mode() ? '' : 'display:none;'),
206 $select_submit)."\n";
208 // ------ make combo ----------
211 if ($search_box != false) {
212 $edit_entry = "<input $disabled type='text' name='$search_box' id='$search_box' size='".
213 $opts['size']."' maxlength='".$opts['max'].
214 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
215 .$opts['box_hint']."'"
216 .(!fallback_mode() && !$by_id ? " style=display:none;":'')
218 if ($search_submit != false) {
219 global $_search_button;
220 $edit_entry .= sprintf($_search_button, $disabled, user_theme(),
221 (fallback_mode() ? '' : 'display:none;'),
222 $search_submit)."\n";
225 default_focus($name);
227 if ($search_box && $opts['cells'])
228 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
230 echo $edit_entry.$selector;
237 Returns true if selector $name is subject to update.
239 function list_updated($name)
241 return isset($_POST['_'.$name.'_update']) || isset($_POST['_'.$name.'_button']);
243 //----------------------------------------------------------------------------------------------
244 // Universal array combo generator
245 // $items is array of options 'value' => 'description'
246 // Options is reduced set of combo_selector options and is merged with defaults.
248 function array_selector($name, $selected_id, $items, $options=null)
252 $opts = array( // default options
253 'spec_option'=>false, // option text or false
254 'spec_id' => 0, // option id
255 'select_submit' => false, //submit on select: true/false
256 'edit_submit' => false, // call editor on F4
257 'async' => true, // select update via ajax (true) vs _page_body reload
258 'default' => '', // default value when $_POST is not set
259 // search box parameters
263 // ------ merge options with defaults ----------
265 $opts = array_merge($opts, $options);
266 $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit'];
267 $spec_id = $opts['spec_id'];
268 $spec_option = $opts['spec_option'];
269 $disabled = $opts['disabled'] ? "disabled" : '';
271 if ($selected_id == null) {
272 $selected_id = get_post($name, $opts['default']);
275 if (isset($_POST[$select_submit])) {
277 $Ajax->activate('_page_body');
279 $Ajax->activate($name);
282 // ------ make selector ----------
283 $selector = $first_opt = '';
286 //if($name=='SelectStockFromList') display_error($sql);
287 foreach($items as $value=>$descr) {
289 if ($selected_id == $value) {
293 if ($first_id === false) {
297 $selector .= "<option $sel value='$value'>$descr</option>\n";
300 // Prepend special option.
301 if ($spec_option !== false) { // if special option used - add it
302 $first_id = $spec_id;
303 $first_opt = $spec_option;
304 $sel = $found===false ? 'selected' : '';
305 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
309 if ($found === false) {
310 $_POST[$name] = $first_id;
313 $aspect = $opts['edit_submit'] ? " aspect='editable'" : '';
314 $selector = "<select $disabled name='$name' class='combo' title='"
315 . $opts['sel_hint']."'$aspect >".$selector."</select>\n";
317 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
319 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
321 if ($select_submit != false) { // if submit on change is used - add select button
322 global $_select_button;
323 $selector .= sprintf($_select_button, $disabled, user_theme(),
324 (fallback_mode() ? '' : 'display:none;'),
325 $select_submit)."\n";
327 default_focus($name);
332 //----------------------------------------------------------------------------------------------
334 function _format_add_curr($row)
336 static $company_currency;
338 if ($company_currency == null)
340 $company_currency = get_company_currency();
342 return $row[1] . ($row[2] == $company_currency ?
343 '' : (" - " . $row[2]));
346 function supplier_list($name, $selected_id=null, $spec_option=false, $submit_on_change=false)
350 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
352 $mode = get_company_pref('no_supplier_list');
354 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
356 'format' => '_format_add_curr',
357 'search_box' => $mode!=0,
358 'edit_submit' => true,
360 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
361 'spec_id' => $all_items,
362 'select_submit'=> $submit_on_change,
364 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
369 function supplier_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
372 echo "<td>$label</td><td>\n";
373 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
378 function supplier_list_row($label, $name, $selected_id=null, $all_option = false, $submit_on_change=false)
380 echo "<tr><td>$label</td><td>";
381 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
385 //----------------------------------------------------------------------------------------------
387 function customer_list($name, $selected_id=null, $spec_option=false, $submit_on_change=false)
391 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
393 $mode = get_company_pref('no_customer_list');
395 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
397 'format' => '_format_add_curr',
398 'search_box' => $mode!=0,
401 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
402 'spec_id' => $all_items,
403 'select_submit'=> $submit_on_change,
404 'edit_submit' => true, // call editor on F4
406 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment; F4 - entry new customer') :
411 function customer_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
414 echo "<td>$label</td>\n";
416 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
421 function customer_list_row($label, $name, $selected_id=null, $all_option = false, $submit_on_change=false)
423 echo "<tr><td>$label</td><td nowrap>";
424 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
425 echo "</td>\n</tr>\n";
429 //------------------------------------------------------------------------------------------------
431 function customer_branches_list($customer_id, $name, $selected_id=null,
432 $spec_option = true, $enabled=true, $submit_on_change=false)
436 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
437 WHERE debtor_no='" . $customer_id . "' ";
439 $where = $enabled ? array("disable_trans = 0") : array();
440 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
443 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
444 'spec_id' => $all_items,
445 'select_submit'=> $submit_on_change,
446 'sel_hint' => _('Select customer branch')
449 //------------------------------------------------------------------------------------------------
451 function customer_branches_list_cells($label,$customer_id, $name, $selected_id=null, $all_option = true, $enabled=true, $submit_on_change=false)
454 echo "<td>$label</td>\n";
456 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
461 function customer_branches_list_row($label,$customer_id, $name, $selected_id=null, $all_option = true, $enabled=true, $submit_on_change=false)
464 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
469 //------------------------------------------------------------------------------------------------
471 function locations_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
475 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
477 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
479 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
480 'spec_id' => $all_items,
481 'select_submit'=> $submit_on_change
485 function locations_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
488 echo "<td>$label</td>\n";
490 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
495 function locations_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
498 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
503 //-----------------------------------------------------------------------------------------------
505 function currencies_list($name, $selected_id=null, $submit_on_change=false)
507 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
509 // default to the company currency
511 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
513 'select_submit'=> $submit_on_change,
514 'default' => get_company_currency(),
519 function currencies_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
522 echo "<td>$label</td>\n";
524 $str = currencies_list($name, $selected_id, $submit_on_change);
529 function currencies_list_row($label, $name, $selected_id=null, $submit_on_change=false)
532 $str = currencies_list_cells($label, $name, $selected_id, $submit_on_change);
537 //---------------------------------------------------------------------------------------------------
539 function fiscalyears_list($name, $selected_id=null, $submit_on_change=false)
542 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
544 // default to the company current fiscal year
546 return combo_input($name, $selected_id, $sql, 'id', '',
549 'default' => get_company_pref('f_year'),
550 'format' => '_format_fiscalyears',
551 'select_submit'=> $submit_on_change,
556 function _format_fiscalyears($row)
558 return sql2date($row[1]) . " - " . sql2date($row[2])
559 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
562 function fiscalyears_list_cells($label, $name, $selected_id=null)
565 echo "<td>$label</td>\n";
567 $str = fiscalyears_list($name, $selected_id);
572 function fiscalyears_list_row($label, $name, $selected_id=null)
575 $str = fiscalyears_list_cells($label, $name, $selected_id);
579 //------------------------------------------------------------------------------------
581 function dimensions_list($name, $selected_id=null, $no_option=false, $showname=' ',
582 $submit_on_change=false, $showclosed=false, $showtype=1)
584 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
587 'order' => 'reference',
588 'spec_option'=>$no_option ? $showname : false,
590 'select_submit'=> $submit_on_change,
595 $options['where'][] = "closed=0";
597 $options['where'][] = "type_=$showtype";
599 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
602 function dimensions_list_cells($label, $name, $selected_id=null, $no_option=false, $showname=null,
603 $showclosed=false, $showtype=0, $submit_on_change=false)
606 echo "<td>$label</td>\n";
608 $str = dimensions_list($name, $selected_id, $no_option, $showname, $submit_on_change, $showclosed, $showtype);
613 function dimensions_list_row($label, $name, $selected_id=null, $no_option=false, $showname=null,
614 $showclosed=false, $showtype=0, $submit_on_change=false)
617 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
618 $showclosed, $showtype, $submit_on_change);
623 //---------------------------------------------------------------------------------------------------
625 function stock_items_list($name, $selected_id=null, $all_option=false, $submit_on_change=false, $opts=array())
629 $sql = "SELECT stock_id, s.description, c.description
630 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
632 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
635 'format' => '_format_stock_items',
636 'spec_option' => $all_option===true ? _("All Items") : $all_option,
637 'spec_id' => $all_items,
638 'search_box' => true,
639 'search' => array("stock_id", "c.description","s.description"),
640 'search_submit' => get_company_pref('no_item_list')!=0,
642 'select_submit'=> $submit_on_change,
647 function _format_stock_items($row)
649 return (user_show_codes() ? ($row[0] . " - ") : "") . $row[1];
652 function stock_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
655 echo "<td>$label</td>\n";
656 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
657 array('cells'=>true));
661 function stock_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
664 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
669 //---------------------------------------------------------------------------------------------------
671 // Select item via foreign code.
673 function sales_items_list($name, $selected_id=null, $all_option=false,
674 $submit_on_change=false, $type='', $opts=array())
678 $sql = "SELECT i.item_code, i.description, c.description, count(*)>1 as kit
680 ".TB_PREF."item_codes i
682 ".TB_PREF."stock_category c
683 ON i.category_id=c.category_id";
685 if ($type == 'local') { // exclude foreign codes
686 $sql .= " WHERE NOT i.is_foreign";
687 } elseif ($type == 'kits') { // sales kits
688 $sql .= " WHERE NOT i.is_foreign
689 AND NOT i.item_code=i.stock_id";
692 $sql .= " GROUP BY i.item_code";
694 return combo_input($name, $selected_id, $sql, 'i.item_code', 'c.description',
697 'format' => '_format_stock_items',
698 'spec_option' => $all_option===true ? _("All Items") : $all_option,
699 'spec_id' => $all_items,
700 'search_box' => true,
701 'search' => array("i.item_code", "c.description"),
702 'search_submit' => get_company_pref('no_item_list')!=0,
704 'select_submit'=> $submit_on_change,
705 'order' => 'i.item_code',
710 function sales_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
713 echo "<td>$label</td>\n";
714 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
715 '', array('cells'=>true));
719 function sales_kits_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
721 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
722 'kits', array('cells'=>false));
726 function sales_local_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
730 echo "<td>$label</td>\n";
732 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
733 'local', array('cells'=>false));
737 //------------------------------------------------------------------------------------
739 function base_stock_items_list($where, $name, $selected_id=null,
740 $all_option=false, $submit_on_change=false)
744 $sql = "SELECT stock_id, s.description, c.description
745 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
746 s.category_id=c.category_id";
748 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
750 'format' => '_format_stock_items',
751 'spec_option' => $all_option==true ? _("All Items") : $all_option,
752 'spec_id' => $all_items,
753 'select_submit'=> $submit_on_change,
757 //------------------------------------------------------------------------------------
759 function stock_bom_items_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
762 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
763 $name, $selected_id, $all_option, $submit_on_change);
766 function stock_bom_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
769 echo "<td>$label</td>\n";
771 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
776 function stock_bom_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
779 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
784 //------------------------------------------------------------------------------------
786 function stock_manufactured_items_list($name, $selected_id=null,
787 $all_option=false, $submit_on_change=false)
789 return base_stock_items_list("s.mb_flag='M'",
790 $name, $selected_id, $all_option, $submit_on_change);
793 function stock_manufactured_items_list_cells($label, $name, $selected_id=null,
794 $all_option=false, $submit_on_change=false)
797 echo "<td>$label</td>\n";
799 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
805 function stock_manufactured_items_list_row($label, $name, $selected_id=null,
806 $all_option=false, $submit_on_change=false)
809 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
810 $all_option, $submit_on_change);
814 //------------------------------------------------------------------------------------
816 function stock_component_items_list($name, $parent_stock_id, $selected_id=null,
817 $all_option=false, $submit_on_change=false)
819 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
820 array('where'=>array("stock_id != '$parent_stock_id'")));
824 function stock_component_items_list_cells($label, $name, $parent_stock_id,
825 $selected_id=null, $all_option=false, $submit_on_change=false)
828 echo "<td>$label</td>\n";
829 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
830 array('where'=>array("stock_id != '$parent_stock_id'"), 'cells'=>true));
833 //------------------------------------------------------------------------------------
835 function stock_costable_items_list($name, $selected_id=null,
836 $all_option=false, $submit_on_change=false)
838 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
839 array('where'=>array("mb_flag!='D'")));
843 function stock_costable_items_list_cells($label, $name, $selected_id=null,
844 $all_option=false, $submit_on_change=false)
847 echo "<td>$label</td>\n";
848 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
849 array('where'=>array("mb_flag!='D'"), 'cells'=>true));
853 //------------------------------------------------------------------------------------
854 function stock_purchasable_items_list($name, $selected_id=null,
855 $all_option=false, $submit_on_change=false)
857 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
858 array('where'=>array("mb_flag!= 'M'"),
859 'edit_submit' => true));
863 function stock_purchasable_items_list_cells($label, $name, $selected_id=null,
864 $all_option=false, $submit_on_change=false)
867 echo "<td>$label</td>\n";
868 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
869 array('where'=>array("mb_flag!= 'M'"),
870 'edit_submit' => true,
875 function stock_purchasable_items_list_row($label, $name, $selected_id=null,
876 $all_option=false, $submit_on_change=false)
879 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id=null,
880 $all_option, $submit_on_change);
885 //------------------------------------------------------------------------------------
887 function stock_item_types_list_row($label, $name, $selected_id=null, $enabled=true)
890 'M' => _("Manufactured"),
891 'B' => _("Purchased"),
897 echo "<td>$label</td>\n";
900 array_selector($name, $selected_id, $types,
902 'select_submit'=> true,
903 'disabled' => !$enabled) );
907 function stock_units_list_row($label, $name, $value=null, $enabled=true)
909 $result = get_all_item_units();
912 echo "<td>$label</td>\n";
915 while($unit = db_fetch($result))
916 $units[$unit['abbr']] = $unit['name'];
918 array_selector($name, $value, $units,
920 'select_submit'=> true,
921 'disabled' => !$enabled) );
926 //------------------------------------------------------------------------------------
928 function tax_types_list($name, $selected_id=null, $none_option=false, $submit_on_change=false)
930 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
932 return combo_input($name, $selected_id, $sql, 'id', 'name',
934 'spec_option' => $none_option,
935 'spec_id' => reserved_words::get_all_numeric(),
936 'select_submit'=> $submit_on_change,
941 function tax_types_list_cells($label, $name, $selected_id=null, $none_option=false,
942 $submit_on_change=false)
945 echo "<td>$label</td>\n";
947 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
952 function tax_types_list_row($label, $name, $selected_id=null, $none_option=false,
953 $submit_on_change=false)
956 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
961 //------------------------------------------------------------------------------------
963 function tax_groups_list($name, $selected_id=null,
964 $none_option=false, $submit_on_change=false)
966 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
968 return combo_input($name, $selected_id, $sql, 'id', 'name',
971 'spec_option' => $none_option,
972 'spec_id' => reserved_words::get_all_numeric(),
973 'select_submit'=> $submit_on_change,
978 function tax_groups_list_cells($label, $name, $selected_id=null, $none_option=false, $submit_on_change=false)
981 echo "<td>$label</td>\n";
983 $str = tax_groups_list($name, $selected_id, $none_option, $submit_on_change);
988 function tax_groups_list_row($label, $name, $selected_id=null, $none_option=false, $submit_on_change=false)
991 $str = tax_groups_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
996 //------------------------------------------------------------------------------------
998 function item_tax_types_list($name, $selected_id=null)
1000 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
1001 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
1004 function item_tax_types_list_cells($label, $name, $selected_id=null)
1007 echo "<td>$label</td>\n";
1009 item_tax_types_list($name, $selected_id);
1013 function item_tax_types_list_row($label, $name, $selected_id=null)
1016 item_tax_types_list_cells($label, $name, $selected_id);
1020 //------------------------------------------------------------------------------------
1022 function shippers_list($name, $selected_id=null)
1024 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
1025 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
1028 function shippers_list_cells($label, $name, $selected_id=null)
1031 echo "<td>$label</td>\n";
1033 shippers_list($name, $selected_id);
1037 function shippers_list_row($label, $name, $selected_id=null)
1040 shippers_list_cells($label, $name, $selected_id);
1044 //-------------------------------------------------------------------------------------
1046 function sales_persons_list($name, $selected_id=null)
1048 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
1049 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
1052 function sales_persons_list_cells($label, $name, $selected_id=null)
1055 echo "<td>$label</td>\n";
1057 sales_persons_list($name, $selected_id);
1061 function sales_persons_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1064 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
1068 //------------------------------------------------------------------------------------
1070 function sales_areas_list($name, $selected_id=null)
1072 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
1073 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
1076 function sales_areas_list_cells($label, $name, $selected_id=null)
1079 echo "<td>$label</td>\n";
1081 sales_areas_list($name, $selected_id);
1085 function sales_areas_list_row($label, $name, $selected_id=null)
1088 sales_areas_list_cells($label, $name, $selected_id);
1092 //------------------------------------------------------------------------------------
1094 function sales_groups_list($name, $selected_id=null, $special_option=false)
1096 $sql = "SELECT id, description FROM ".TB_PREF."groups";
1097 combo_input($name, $selected_id, $sql, 'id', 'description', array(
1098 'spec_option' => $special_option===true ? ' ' : $special_option,
1099 'order' => 'description', 'spec_id' => 0,
1103 function sales_groups_list_cells($label, $name, $selected_id=null, $special_option=false)
1106 echo "<td>$label</td>\n";
1108 sales_groups_list($name, $selected_id, $special_option);
1112 function sales_groups_list_row($label, $name, $selected_id=null, $special_option=false)
1115 sales_groups_list_cells($label, $name, $selected_id, $special_option);
1119 //------------------------------------------------------------------------------------
1121 function _format_template_items($row)
1123 return ($row[0] . " - " . _("Amount") . " ".$row[1]);
1126 function templates_list($name, $selected_id=null, $special_option=false)
1128 $sql = "SELECT sorder.order_no, Sum(line.unit_price*line.quantity*(1-line.discount_percent)) AS OrderValue
1129 FROM ".TB_PREF."sales_orders as sorder, ".TB_PREF."sales_order_details as line
1130 WHERE sorder.order_no = line.order_no AND sorder.type = 1 GROUP BY line.order_no";
1131 combo_input($name, $selected_id, $sql, 'order_no', 'OrderValue', array(
1132 'format' => '_format_template_items',
1133 'spec_option' => $special_option===true ? ' ' : $special_option,
1134 'order' => 'order_no', 'spec_id' => 0,
1138 function templates_list_cells($label, $name, $selected_id=null, $special_option=false)
1141 echo "<td>$label</td>\n";
1143 templates_list($name, $selected_id, $special_option);
1147 function templates_list_row($label, $name, $selected_id=null, $special_option=false)
1150 templates_list_cells($label, $name, $selected_id, $special_option);
1154 //------------------------------------------------------------------------------------
1156 function workorders_list($name, $selected_id=null)
1158 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
1159 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
1162 function workorders_list_cells($label, $name, $selected_id=null)
1165 echo "<td>$label</td>\n";
1167 workorders_list($name, $selected_id);
1171 function workorders_list_row($label, $name, $selected_id=null)
1174 workorders_list_cells($label, $name, $selected_id);
1178 //------------------------------------------------------------------------------------
1180 function payment_terms_list($name, $selected_id=null)
1182 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
1183 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
1186 function payment_terms_list_cells($label, $name, $selected_id=null)
1189 echo "<td>$label</td>\n";
1191 payment_terms_list($name, $selected_id);
1195 function payment_terms_list_row($label, $name, $selected_id=null)
1198 payment_terms_list_cells($label, $name, $selected_id);
1202 //------------------------------------------------------------------------------------
1204 function credit_status_list($name, $selected_id=null)
1206 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
1207 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
1210 function credit_status_list_cells($label, $name, $selected_id=null)
1213 echo "<td>$label</td>\n";
1215 credit_status_list($name, $selected_id);
1219 function credit_status_list_row($label, $name, $selected_id=null)
1222 credit_status_list_cells($label, $name, $selected_id);
1226 //-----------------------------------------------------------------------------------------------
1228 function sales_types_list($name, $selected_id=null, $submit_on_change=false, $special_option=false)
1230 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
1232 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
1234 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1236 'select_submit'=> $submit_on_change,
1237 // 'async' => false,
1241 function sales_types_list_cells($label, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
1244 echo "<td>$label</td>\n";
1246 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1251 function sales_types_list_row($label, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
1254 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1259 //-----------------------------------------------------------------------------------------------
1261 function movement_types_list($name, $selected_id=null)
1263 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1264 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1267 function movement_types_list_cells($label, $name, $selected_id=null)
1270 echo "<td>$label</td>\n";
1272 movement_types_list($name, $selected_id);
1276 function movement_types_list_row($label, $name, $selected_id=null)
1279 movement_types_list_cells($label, $name, $selected_id);
1283 //-----------------------------------------------------------------------------------------------
1285 function bank_trans_types_list($name, $selected_id=null)
1287 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1288 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1291 function bank_trans_types_list_cells($label, $name, $selected_id=null)
1294 echo "<td>$label</td>\n";
1296 bank_trans_types_list($name, $selected_id);
1300 function bank_trans_types_list_row($label, $name, $selected_id=null)
1303 bank_trans_types_list_cells($label, $name, $selected_id);
1307 //-----------------------------------------------------------------------------------------------
1309 function workcenter_list($name, $selected_id=null, $all_option=false)
1313 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1315 return combo_input($name, $selected_id, $sql, 'id', 'name',
1317 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1318 'spec_id' => $all_items,
1322 function workcenter_list_cells($label, $name, $selected_id=null, $all_option=false)
1324 default_focus($name);
1326 echo "<td>$label</td>\n";
1328 workcenter_list($name, $selected_id, $all_option);
1332 function workcenter_list_row($label, $name, $selected_id=null, $all_option=false)
1335 workcenter_list_cells($label, $name, $selected_id, $all_option);
1339 //-----------------------------------------------------------------------------------------------
1341 function bank_accounts_list($name, $selected_id=null, $submit_on_change=false)
1343 $sql = "SELECT ".TB_PREF."bank_accounts.id, bank_account_name, bank_curr_code
1344 FROM ".TB_PREF."bank_accounts";
1345 // , ".TB_PREF."chart_master
1346 // WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1348 return combo_input($name, $selected_id, $sql, 'id', 'bank_account_name',
1350 'format' => '_format_add_curr',
1351 'select_submit'=> $submit_on_change,
1356 function bank_accounts_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1359 echo "<td>$label</td>\n";
1361 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1366 function bank_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1369 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1373 //-----------------------------------------------------------------------------------------------
1375 function cash_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1377 $sql = "SELECT ".TB_PREF."bank_accounts.id, bank_account_name, bank_curr_code
1378 FROM ".TB_PREF."bank_accounts
1379 WHERE ".TB_PREF."bank_accounts.account_type=3";
1382 echo "<tr><td>$label</td>\n";
1384 $str = combo_input($name, $selected_id, $sql, 'id', 'bank_account_name',
1386 'format' => '_format_add_curr',
1387 'select_submit'=> $submit_on_change,
1390 echo "</td></tr>\n";
1393 //-----------------------------------------------------------------------------------------------
1395 function pos_list_row($label, $name, $selected_id=null, $spec_option=false, $submit_on_change=false)
1397 $sql = "SELECT id, pos_name FROM ".TB_PREF."sales_pos";
1399 default_focus($name);
1402 echo "<td>$label</td>\n";
1405 $str = combo_input($name, $selected_id, $sql, 'id', 'pos_name',
1407 'select_submit'=> $submit_on_change,
1409 'spec_option' =>$spec_option,
1412 echo "</td></tr>\n";
1416 //-----------------------------------------------------------------------------------------------
1418 function sale_payment_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1421 echo "<td>$label</td>\n";
1423 $str = yesno_list($name, $selected_id, _('Cash'), _('Delayed'), $submit_on_change);
1427 //-----------------------------------------------------------------------------------------------
1429 function class_list($name, $selected_id=null, $submit_on_change=false)
1431 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1433 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1435 'select_submit'=> $submit_on_change,
1441 function class_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1444 echo "<td>$label</td>\n";
1446 $str = class_list($name, $selected_id, $submit_on_change);
1451 function class_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1454 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1459 //-----------------------------------------------------------------------------------------------
1461 function stock_categories_list($name, $selected_id=null)
1463 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1464 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1465 array('order'=>'category_id'));
1468 function stock_categories_list_cells($label, $name, $selected_id=null)
1471 echo "<td>$label</td>\n";
1473 stock_categories_list($name, $selected_id);
1477 function stock_categories_list_row($label, $name, $selected_id=null)
1480 stock_categories_list_cells($label, $name, $selected_id);
1484 //-----------------------------------------------------------------------------------------------
1486 function gl_account_types_list($name, $selected_id=null, $all_option, $all_option_numeric)
1490 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1492 combo_input($name, $selected_id, $sql, 'id', 'name',
1495 'spec_option' =>$all_option,
1496 'spec_id' => $all_option_numeric ? 0 : $all_items
1500 function gl_account_types_list_cells($label, $name, $selected_id=null, $all_option=false,
1501 $all_option_numeric=false)
1504 echo "<td>$label</td>\n";
1506 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1510 function gl_account_types_list_row($label, $name, $selected_id=null, $all_option=false,
1511 $all_option_numeric=false)
1514 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1515 $all_option_numeric);
1519 //-----------------------------------------------------------------------------------------------
1520 function gl_all_accounts_list($name, $selected_id=null, $skip_bank_accounts=false,
1521 $show_group=true, $cells=false, $all_option=false, $submit_on_change=false)
1523 if ($skip_bank_accounts)
1524 $sql = "SELECT chart.account_code, chart.account_name, type.name
1525 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1526 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1527 ."ON chart.account_code=acc.account_code
1528 WHERE acc.account_code IS NULL
1529 AND chart.account_type=type.id";
1531 $sql = "SELECT chart.account_code, chart.account_name, type.name
1532 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1533 WHERE chart.account_type=type.id";
1535 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1537 'format' => '_format_account',
1538 'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
1540 'order' => 'account_code',
1541 'search_box' => $cells,
1542 'search_submit' => false,
1546 'select_submit'=> $submit_on_change,
1548 'category' => ($show_group ? 2 : false)
1553 function _format_account($row)
1555 return $row[0] . " " . $row[1];
1558 function gl_all_accounts_list_cells($label, $name, $selected_id=null, $skip_bank_accounts=false,
1559 $show_group=false, $cells=false, $all_option=false)
1562 echo "<td>$label</td>\n";
1564 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
1568 function gl_all_accounts_list_row($label, $name, $selected_id=null, $skip_bank_accounts=false,
1569 $show_group=false, $cells=false, $all_option=false)
1572 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1573 $show_group, $cells, $all_option);
1577 function yesno_list($name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1580 $items['1'] = strlen($name_yes) ? $name_yes : _("Yes");
1581 $items['0'] = strlen($name_no) ? $name_no : _("No");
1583 return array_selector($name, $selected_id, $items,
1585 'select_submit'=> $submit_on_change,
1586 'async' => false ) ); // FIX?
1589 function yesno_list_cells($label, $name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1592 echo "<td>$label</td>\n";
1594 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1599 function yesno_list_row($label, $name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1602 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1607 //------------------------------------------------------------------------------------------------
1609 function languages_list($name, $selected_id=null)
1611 global $installed_languages;
1614 foreach ($installed_languages as $lang)
1615 $items[$lang['code']] = $lang['name'];
1617 return array_selector($name, $selected_id, $items );
1620 function languages_list_cells($label, $name, $selected_id=null)
1623 echo "<td>$label</td>\n";
1625 languages_list($name, $selected_id);
1629 function languages_list_row($label, $name, $selected_id=null)
1632 languages_list_cells($label, $name, $selected_id);
1636 //------------------------------------------------------------------------------------------------
1638 function bank_account_types_list($name, $selected_id=null)
1640 $types = bank_account_types::get_all();
1643 foreach ($types as $type)
1645 $items[$type['id']] = $type['name'];
1648 return array_selector($name, $selected_id, $items );
1651 function bank_account_types_list_cells($label, $name, $selected_id=null)
1654 echo "<td>$label</td>\n";
1656 bank_account_types_list($name, $selected_id);
1660 function bank_account_types_list_row($label, $name, $selected_id=null)
1663 bank_account_types_list_cells($label, $name, $selected_id);
1667 //------------------------------------------------------------------------------------------------
1668 function payment_person_types_list($name, $selected_id=null, $submit_on_change=false)
1670 $types = payment_person_types::get_all();
1673 foreach ($types as $type)
1675 if (payment_person_types::has_items($type['id']))
1677 $items[$type['id']] = $type['name'];
1681 return array_selector($name, $selected_id, $items,
1682 array( 'select_submit'=> $submit_on_change ) );
1685 function payment_person_types_list_cells($label, $name, $selected_id=null, $related=null)
1688 echo "<td>$label</td>\n";
1690 $str = payment_person_types_list($name, $selected_id, $related);
1695 function payment_person_types_list_row($label, $name, $selected_id=null, $related=null)
1698 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1703 //------------------------------------------------------------------------------------------------
1705 function quick_entries_list($name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1708 $sql = "SELECT id, description FROM ".TB_PREF."quick_entries";
1711 $sql .= " WHERE deposit=$expense";
1714 if ($bank_only != -1)
1717 $sql .= " AND bank_only=$bank_only";
1719 $sql .= " WHERE bank_only=$bank_only";
1721 combo_input($name, $selected_id, $sql, 'id', 'description',
1724 'order' => 'description',
1725 'select_submit'=> $submit_on_change,
1731 function quick_entries_list_cells($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1733 echo "<td>$label</td><td>\n";
1734 quick_entries_list($name, $selected_id, $expense, $bank_only, $submit_on_change);
1738 function quick_entries_list_row($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1741 quick_entries_list_cells($label, $name, $selected_id, $expense, $bank_only, $submit_on_change);
1746 //------------------------------------------------------------------------------------------------
1748 function wo_types_list($name, $selected_id=null)
1750 $types = wo_types::get_all();
1753 foreach ($types as $type)
1754 $items[$type['id']] = $type['name'];
1756 return array_selector($name, $selected_id, $items,
1757 array( 'select_submit'=> true, 'async' => true ) );
1760 function wo_types_list_row($label, $name, $selected_id=null)
1762 echo "<tr><td>$label</td><td>\n";
1763 $str = wo_types_list($name, $selected_id);
1764 echo "</td></tr>\n";
1768 //------------------------------------------------------------------------------------------------
1770 function dateformats_list_row($label, $name, $value=null)
1772 global $dateformats;
1774 echo "<tr><td>$label</td>\n<td>";
1775 array_selector( $name, $value, $dateformats );
1776 echo "</td></tr>\n";
1779 function dateseps_list_row($label, $name, $value=null)
1783 echo "<tr><td>$label</td>\n<td>";
1784 array_selector( $name, $value, $dateseps );
1785 echo "</td></tr>\n";
1788 function thoseps_list_row($label, $name, $value=null)
1792 echo "<tr><td>$label</td>\n<td>";
1793 array_selector( $name, $value, $thoseps );
1794 echo "</td></tr>\n";
1797 function decseps_list_row($label, $name, $value=null)
1801 echo "<tr><td>$label</td>\n<td>";
1802 array_selector( $name, $value, $decseps );
1803 echo "</td></tr>\n";
1806 function themes_list_row($label, $name, $value=null)
1808 global $path_to_root;
1810 $path = $path_to_root.'/themes/';
1812 $themedir = opendir($path);
1813 while(false !== ($fname = readdir($themedir)))
1815 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1817 $themes[$fname] = $fname;
1822 echo "<tr><td>$label</td>\n<td>";
1823 array_selector( $name, $value, $themes );
1824 echo "</td></tr>\n";
1827 function pagesizes_list_row($label, $name, $value=null)
1832 foreach ($pagesizes as $pz)
1835 echo "<tr><td>$label</td>\n<td>";
1836 array_selector( $name, $value, $items );
1837 echo "</td></tr>\n";
1840 function security_headings_list_row($label, $name, $value=null)
1842 global $security_headings;
1844 echo "<tr><td>$label</td>\n<td>";
1845 array_selector( $name, $value, $security_headings );
1846 echo "</td></tr>\n";
1849 function systypes_list_cells($label, $name, $value=null, $submit_on_change=false)
1851 global $systypes_array;
1854 echo "<td>$label</td>\n";
1858 foreach ($systypes_array as $key=>$type)
1859 $items[$key] = $type['name'];
1861 $str = array_selector($name, $value, $items,
1863 'select_submit'=> $submit_on_change,
1871 function systypes_list_row($label, $name, $value=null, $submit_on_change=false)
1874 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1879 function cust_allocations_list_cells($label, $name, $selected=null)
1887 $all_items=>_("All Types"),
1888 '1'=> _("Sales Invoices"),
1889 '2'=> _("Overdue Invoices"),
1890 '3' => _("Payments"),
1891 '4' => _("Credit Notes"),
1892 '5' => _("Delivery Notes")
1894 $str = array_selector($name, $selected, $allocs);
1899 function supp_allocations_list_cell($name, $selected=null)
1905 $all_items=>_("All Types"),
1906 '1'=> _("Invoices"),
1907 '2'=> _("Overdue Invoices"),
1908 '3' => _("Payments"),
1909 '4' => _("Credit Notes"),
1910 '5' => _("Overdue Credit Notes")
1912 $str = array_selector($name, $selected, $allocs);
1917 function policy_list_cells($label, $name, $selected=null)
1922 $str = array_selector($name, $selected,
1923 array( '' => _("Automatically put balance on back order"),
1924 'CAN' => _("Cancel any quantites not delivered")) );
1929 function policy_list_row($label, $name, $selected=null)
1932 policy_list_cells($label, $name, $selected);
1936 function credit_type_list_cells($label, $name, $selected=null, $submit_on_change=false)
1941 $str = array_selector($name, $selected,
1942 array( 'Return' => _("Items Returned to Inventory Location"),
1943 'WriteOff' => _("Items Written Off")),
1944 array( 'select_submit'=> $submit_on_change ) );
1949 function credit_type_list_row($label, $name, $selected=null, $submit_on_change=false)
1952 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1957 function number_list($name, $selected, $from, $to, $no_option=false)
1960 for ($i = $from; $i <= $to; $i++)
1963 return array_selector($name, $selected, $items,
1964 array( 'spec_option' => $no_option,
1965 'spec_id' => reserved_words::get_all_numeric()) );
1968 function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
1973 number_list($name, $selected, $from, $to, $no_option);
1977 function number_list_row($label, $name, $selected, $from, $to, $no_option=false)
1980 number_list_cells($label, $name, $selected, $from, $to, $no_option);
1984 function print_profiles_list_row($label, $name, $selected_id=null, $spec_opt=false,
1985 $submit_on_change=true)
1987 $sql = "SELECT profile FROM ".TB_PREF."print_profiles"
1988 ." GROUP BY profile";
1989 $result = db_query($sql, 'cannot get all profile names');
1990 $profiles = array();
1991 while($myrow=db_fetch($result)) {
1992 $profiles[$myrow['profile']] = $myrow['profile'];
1997 echo "<td>$label</td>\n";
2000 array_selector($name, $selected_id, $profiles,
2001 array( 'select_submit'=> $submit_on_change,
2002 'spec_option'=>$spec_opt,
2006 echo "</td></tr>\n";
2009 function printers_list($name, $selected_id=null, $spec_opt=false, $submit_on_change=false)
2011 static $printers; // query only once for page display
2014 $sql = "SELECT id, name, description FROM ".TB_PREF."printers";
2015 $result = db_query($sql, 'cannot get all printers');
2016 $printers = array();
2017 while($myrow=db_fetch($result)) {
2018 $printers[$myrow['id']] = $myrow['name'].' - '.$myrow['description'];
2021 array_selector($name, $selected_id, $printers,
2022 array( 'select_submit'=> $submit_on_change,
2023 'spec_option'=>$spec_opt,