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 type='submit' class='combo_submit' style='border:0;background:url($path_to_root/themes/"
9 ."%s/images/locate.png) no-repeat;%s' name='%s' value=' ' title='"._("Set filter")."'> ";
11 $_select_button = "<input type='submit' class='combo_select' style='border:0;background:url($path_to_root/themes/"
12 ."%s/images/button_ok.png) no-repeat;%s' name='%s' value=' ' title='"._("Select")."'> ";
14 $all_items = reserved_words::get_all();
16 //----------------------------------------------------------------------------
17 // Universal 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 'select_submit' => false, //submit on select: true/false
34 'async' => true, // select update via ajax (true) vs _page_body reload
35 // search box parameters
37 'search_box' => false, // name or true/false
38 'type' => 0, // type of extended selector:
39 // 0 - with (optional) visible search box, search by id
40 // 1 - with hidden search box, search by option text
41 // 2 - TODO reverse: box with hidden selector available via enter; this
42 // would be convenient for optional ad hoc adding of new item
43 'search_submit' => true, //search submit button: true/false
44 'size' => 8, // size and max of box tag
46 'cells' => false, // combo displayed as 2 <td></td> cells
47 'search' => array(), // sql field names to search
48 'format' => null, // format functions for regular options
49 'disabled' => false, // FIX todo
50 'box_hint' => null // box/selectors hints; null = std see below
52 // ------ merge options with defaults ----------
53 $opts = array_merge($opts, $options);
54 if (!is_array($opts['where'])) $opts['where'] = array($opts['where']);
56 $search_box = $opts['search_box']===true ? '_'.$name.'_edit' : $opts['search_box'];
57 $search_submit = $opts['search_submit']===true ? '_'.$name.'_button' : $opts['search_submit'];
58 $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit'];
59 $spec_id = $opts['spec_id'];
60 $spec_option = $opts['spec_option'];
61 $by_id = ($opts['type'] == 0);
62 $class = $by_id ? 'combo':'combo2';
64 if(!count($opts['search'])) {
65 $opts['search'] = array($by_id ? $valfield : $namefield);
67 if ($opts['sel_hint'] === null)
68 $opts['sel_hint'] = $by_id || $search_box==false ?
69 '' : _('Press Space tab for search pattern entry');
71 if ($opts['box_hint'] === null)
72 $opts['box_hint'] = $search_box ?
73 ($by_id ? _('Enter code fragment to search or * for all')
74 : _('Enter description fragment to search or * for all')) :'';
76 if ($selected_id == null) {
77 $selected_id = get_post($name, null);
79 $txt = get_post($search_box);
83 if (isset($_POST[$select_submit])) {
85 if ($by_id) $txt = $_POST[$name];
88 $Ajax->activate('_page_body');
90 $Ajax->activate($name);
93 // search related sql modifications
95 $rel = "rel='$search_box'"; // set relation to list
96 if ($opts['search_submit']) {
98 if (isset($_POST[$search_submit])) {
99 $Ajax->activate($name);
102 if ($spec_option === false)
105 $opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
110 foreach($opts['search'] as $i=> $s)
111 $opts['search'][$i] = $s . " LIKE '%{$txt}%'";
112 $opts['where'][] = '('. implode($opts['search'], ' OR ') . ')';
117 if (count($opts['where'])) {
118 $sql .= strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
119 $sql .= '('. implode($opts['where'], ' AND ') . ')';
121 if ($opts['order'] != false) {
122 $sql .= ' ORDER BY '.$opts['order'];
126 // ------ make selector ----------
127 $selector = $first_opt = '';
130 //if($name=='SelectStockFromList') display_error($sql);
131 if($result = db_query($sql)) {
132 while ($contact_row = db_fetch($result)) {
133 $value = $contact_row[0];
134 $descr = $opts['format']==null ? $contact_row[1] :
135 call_user_func($opts['format'], $contact_row);
137 if ($selected_id === $value) {
141 if ($first_id === false) {
145 $selector .= "<option $sel value='$value'>$descr</option>\n";
147 db_free_result($result);
149 // Prepend special option.
150 if ($spec_option !== false) { // if special option used - add it
151 $first_id = $spec_id;
152 $first_opt = $spec_option;
153 $sel = $found===false ? 'selected' : '';
154 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
158 if ($found === false) {
159 $_POST[$name] = $first_id;
163 $txt = $_POST[$name];
165 $Ajax->addUpdate($name, $search_box, $txt);
168 $selector = "<select name='$name' class='$class' title='"
169 . $opts['sel_hint']."' $rel>".$selector."</select>\n";
171 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
173 // because of bug which M$ cannot fix since IE 5.0
174 // we must embed whole selector in span tags to enable proper ajax update
175 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
177 if ($select_submit != false) { // if submit on change is used - add select button
178 global $_select_button;
179 // button class selects form reload/ajax selector update
180 $selector .= sprintf($_select_button, user_theme(),
181 (in_ajax() ? 'display:none;':''),
182 $select_submit)."\n";
184 // ------ make combo ----------
187 if ($search_box != false) {
188 $edit_entry = "<input type='text' name='$search_box' id='$search_box' size='".
189 $opts['size']."' maxlength='".$opts['max'].
190 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
191 .$opts['box_hint']."'"
192 .(in_ajax() && !$by_id ? " style=display:none;":'')
194 if ($search_submit != false) {
195 global $_search_button;
196 $edit_entry .= sprintf($_search_button, user_theme(),
197 (in_ajax() ? 'display:none;':''),
198 $search_submit)."\n";
201 default_focus($name);
203 if ($search_box && $opts['cells'])
204 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
206 echo $edit_entry.$selector;
211 function supplier_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
215 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
217 $mode = get_company_pref('no_supplier_list');
219 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
221 'format' => '_format_add_curr',
222 'search_box' => $mode!=0,
224 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
225 'spec_id' => $all_items,
226 'select_submit'=> $submit_on_change,
228 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
233 function _format_add_curr($row)
235 static $company_currency;
237 if ($company_currency == null)
239 $company_currency = get_company_currency();
241 return $row[1] . ($row[2] == $company_currency ?
242 '' : (" - " . $row[2]));
245 function supplier_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
248 echo "<td>$label</td><td>\n";
249 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
254 function supplier_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
256 echo "<tr><td>$label</td><td>";
257 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
261 //----------------------------------------------------------------------------------------------
263 function customer_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
267 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
269 $mode = get_company_pref('no_customer_list');
271 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
273 'format' => '_format_add_curr',
274 'search_box' => $mode!=0,
277 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
278 'spec_id' => $all_items,
279 'select_submit'=> $submit_on_change,
281 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
286 function customer_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
289 echo "<td>$label</td>\n";
291 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
296 function customer_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
298 echo "<tr><td>$label</td><td nowrap>";
299 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
300 echo "</td>\n</tr>\n";
304 //------------------------------------------------------------------------------------------------
306 function customer_branches_list($customer_id, $name, $selected_id,
307 $spec_option = true, $enabled=true, $submit_on_change=false)
311 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
312 WHERE debtor_no='" . $customer_id . "' ";
314 $where = $enabled ? array("disable_trans = 0") : array();
315 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
318 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
319 'spec_id' => $all_items,
320 'select_submit'=> $submit_on_change,
321 'sel_hint' => _('Select customer branch')
325 //------------------------------------------------------------------------------------------------
327 function customer_branches_list_cells($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
330 echo "<td>$label</td>\n";
332 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
337 function customer_branches_list_row($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
340 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
345 //------------------------------------------------------------------------------------------------
347 function locations_list($name, $selected_id, $all_option=false, $submit_on_change=false)
351 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
353 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
355 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
356 'spec_id' => $all_items,
357 'select_submit'=> $submit_on_change,
362 function locations_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
365 echo "<td>$label</td>\n";
367 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
372 function locations_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
375 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
380 //-----------------------------------------------------------------------------------------------
382 function currencies_list($name, $selected_id, $submit_on_change=false)
384 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
386 // default to the company currency
387 if ($selected_id == "")
389 $selected_id = get_company_currency();
390 $_POST[$name] = $selected_id;
393 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
395 'select_submit'=> $submit_on_change,
400 function currencies_list_cells($label, $name, $selected_id)
403 echo "<td>$label</td>\n";
405 $str = currencies_list($name, $selected_id);
410 function currencies_list_row($label, $name, $selected_id)
413 $str = currencies_list_cells($label, $name, $selected_id);
418 //---------------------------------------------------------------------------------------------------
420 function fiscalyears_list($name, $selected_id, $submit_on_change=false)
423 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
425 // default to the company current fiscal year
426 if ($selected_id == "")
428 $selected_id = get_company_pref('f_year');
429 $_POST[$name] = $selected_id;
432 return combo_input($name, $selected_id, $sql, 'id', '',
435 'format' => '_format_fiscalyears',
436 'select_submit'=> $submit_on_change,
441 function _format_fiscalyears($row)
443 return sql2date($row[1]) . " - " . sql2date($row[2])
444 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
447 function fiscalyears_list_cells($label, $name, $selected_id)
450 echo "<td>$label</td>\n";
452 $str = fiscalyears_list($name, $selected_id);
457 function fiscalyears_list_row($label, $name, $selected_id)
460 $str = fiscalyears_list_cells($label, $name, $selected_id);
464 //------------------------------------------------------------------------------------
466 function dimensions_list($name, $selected_id, $no_option=false, $showname=' ',
467 $submit_on_change=false, $showclosed=false, $showtype=1)
469 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
472 'order' => 'reference',
473 'spec_option'=>$no_option ? $showname : false,
475 'select_submit'=> $submit_on_change,
480 $options['where'][] = "closed=0";
482 $options['where'][] = "type_=$showtype";
484 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
487 function dimensions_list_cells($label, $name, $selected_id, $no_option=false, $showname=null,
488 $showclosed=false, $showtype=0)
491 echo "<td>$label</td>\n";
493 $str = dimensions_list($name, $selected_id, $no_option, $showname, false, $showclosed, $showtype);
498 function dimensions_list_row($label, $name, $selected_id, $no_option=false, $showname=null,
499 $showclosed=false, $showtype=0)
502 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
503 $showclosed, $showtype);
508 //---------------------------------------------------------------------------------------------------
510 function stock_items_list($name, $selected_id, $all_option=false, $submit_on_change=false, $opts=array())
514 $sql = "SELECT stock_id, s.description, c.description
515 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
517 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
520 'format' => '_format_stock_items',
521 'spec_option' => $all_option===true ? _("All Items") : $all_option,
522 'spec_id' => $all_items,
523 'search_box' => true,
524 'search' => array("stock_id", "c.description","s.description"),
525 'search_submit' => get_company_pref('no_item_list')!=0,
527 'select_submit'=> $submit_on_change
531 function _format_stock_items($row)
533 return (user_show_codes() ? ($row[0] . " - ") : "")
534 . $row[2] . " - " . $row[1];
537 function stock_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
540 echo "<td>$label</td>\n";
541 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
542 array('cells'=>true));
546 function stock_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
549 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
554 //------------------------------------------------------------------------------------
556 function base_stock_items_list($where, $name, $selected_id,
557 $all_option=false, $submit_on_change=false)
561 $sql = "SELECT stock_id, s.description, c.description
562 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
563 s.category_id=c.category_id";
565 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
567 'format' => '_format_stock_items',
568 'spec_option' => $all_option==true ? _("All Items") : $all_option,
569 'spec_id' => $all_items,
570 'select_submit'=> $submit_on_change,
574 //------------------------------------------------------------------------------------
576 function stock_bom_items_list($name, $selected_id, $all_option=false, $submit_on_change=false)
579 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
580 $name, $selected_id, $all_option, $submit_on_change);
583 function stock_bom_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
586 echo "<td>$label</td>\n";
588 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
593 function stock_bom_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
596 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
601 //------------------------------------------------------------------------------------
603 function stock_manufactured_items_list($name, $selected_id,
604 $all_option=false, $submit_on_change=false)
606 return base_stock_items_list("s.mb_flag='M'",
607 $name, $selected_id, $all_option, $submit_on_change);
610 function stock_manufactured_items_list_cells($label, $name, $selected_id,
611 $all_option=false, $submit_on_change=false)
614 echo "<td>$label</td>\n";
616 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
622 function stock_manufactured_items_list_row($label, $name, $selected_id,
623 $all_option=false, $submit_on_change=false)
626 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
627 $all_option, $submit_on_change);
631 //------------------------------------------------------------------------------------
633 function stock_component_items_list($name, $parent_stock_id, $selected_id,
634 $all_option=false, $submit_on_change=false)
636 return base_stock_items_list("stock_id != '$parent_stock_id'", $name, $selected_id,
637 $all_option, $submit_on_change);
639 //------------------------------------------------------------------------------------
641 function stock_costable_items_list($name, $selected_id,
642 $all_option=false, $submit_on_change=false)
644 return base_stock_items_list("mb_flag!='D'", $name, $selected_id,
645 $all_option, $submit_on_change);
648 //------------------------------------------------------------------------------------
650 function stock_purchasable_items_list($name, $selected_id, $all_option=false,
651 $submit_on_change=false, $opts=array())
654 $sql = "SELECT stock_id, s.description, c.description
655 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c
656 WHERE s.category_id=c.category_id
658 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
660 'format' => '_format_stock_items',
661 'spec_option' => $all_option===true ? _("All Items") : $all_option,
662 'spec_id' => $all_items,
663 'search_box' => true,
664 'search' => array("stock_id", "c.description","s.description"),
665 'search_submit' => get_company_pref('no_item_list')!=0,
667 'select_submit'=> $submit_on_change
672 function stock_purchasable_items_list_cells($label, $name, $selected_id,
673 $all_option=false, $submit_on_change=false)
676 echo "<td>$label</td>\n";
677 $ret = stock_purchasable_items_list($name, $selected_id, $all_option,
678 $submit_on_change, array('cells'=>true) );
682 function stock_purchasable_items_list_row($label, $name, $selected_id,
683 $all_option=false, $submit_on_change=false)
686 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id,
687 $all_option, $submit_on_change);
692 //------------------------------------------------------------------------------------
694 function stock_item_types_list_row($label, $name, $selected_id, $enabled=true)
696 default_focus($name);
699 echo "<td>$label</td>\n";
702 $sel = "<select name='$name' onchange='this.form.submit();'>\n";
704 $sel = "<select disabled name='$name'>\n";
705 if ($selected_id == null)
706 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
707 if ($selected_id == "")
708 $_POST[$name] = $selected_id = "B";
709 $sel .= "<option " . ($selected_id == 'M'?" selected ":"") . " value='M'>" . _("Manufactured"). "</option>\n";
710 $sel .= "<option " . ($selected_id == 'B'?" selected ":"") . " value='B'>" . _("Purchased"). "</option>\n";
711 $sel .= "<option " . ($selected_id == 'D'?" selected ":"") . " value='D'>" . _("Service"). "</option>\n";
718 function stock_units_list_row($label, $name, $value, $enabled=true)
720 default_focus($name);
721 $result = get_all_item_units();
722 echo "<tr><td>$label</td>\n";
724 echo "<td><select name='$name'>";
726 echo "<td><select disabled name='$name'>";
729 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
731 while($unit = db_fetch($result))
735 $_POST[$name] = $unit['abbr'];
737 $descr = $unit['name'];
738 if ($value==$unit['abbr'])
740 echo "<option selected value='".$unit['abbr']."'>$descr</option>\n";
744 echo "<option value='".$unit['abbr']."'>$descr</option>\n";
747 echo "</select></td></tr>\n";
750 //------------------------------------------------------------------------------------
752 function tax_types_list($name, $selected_id, $none_option=false, $submit_on_change=false)
754 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
756 return combo_input($name, $selected_id, $sql, 'id', 'name',
758 'spec_option' => $none_option,
760 'select_submit'=> $submit_on_change,
765 function tax_types_list_cells($label, $name, $selected_id, $none_option=false,
766 $submit_on_change=false)
769 echo "<td>$label</td>\n";
771 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
776 function tax_types_list_row($label, $name, $selected_id, $none_option=false,
777 $submit_on_change=false)
780 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
785 //------------------------------------------------------------------------------------
787 function tax_groups_list($name, $selected_id,
788 $none_option=false, $submit_on_change=false)
790 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
792 return combo_input($name, $selected_id, $sql, 'id', 'name',
795 'spec_option' => $none_option,
797 'select_submit'=> $submit_on_change,
802 function tax_groups_list_cells($label, $name, $selected_id, $submit_on_change=false)
805 echo "<td>$label</td>\n";
807 $str = tax_groups_list($name, $selected_id, false, $submit_on_change);
812 function tax_groups_list_row($label, $name, $selected_id, $submit_on_change=false)
815 $str = tax_groups_list_cells($label, $name, $selected_id, false, $submit_on_change);
820 //------------------------------------------------------------------------------------
822 function item_tax_types_list($name, $selected_id)
824 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
825 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
828 function item_tax_types_list_cells($label, $name, $selected_id)
831 echo "<td>$label</td>\n";
833 item_tax_types_list($name, $selected_id);
837 function item_tax_types_list_row($label, $name, $selected_id)
840 item_tax_types_list_cells($label, $name, $selected_id);
844 //------------------------------------------------------------------------------------
846 function shippers_list($name, $selected_id)
848 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
849 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
852 function shippers_list_cells($label, $name, $selected_id)
855 echo "<td>$label</td>\n";
857 shippers_list($name, $selected_id);
861 function shippers_list_row($label, $name, $selected_id)
864 shippers_list_cells($label, $name, $selected_id);
868 //-------------------------------------------------------------------------------------
870 function sales_persons_list($name, $selected_id)
872 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
873 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
876 function sales_persons_list_cells($label, $name, $selected_id)
879 echo "<td>$label</td>\n";
881 sales_persons_list($name, $selected_id);
885 function sales_persons_list_row($label, $name, $selected_id, $submit_on_change=false)
888 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
892 //------------------------------------------------------------------------------------
894 function sales_areas_list($name, $selected_id)
896 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
897 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
900 function sales_areas_list_cells($label, $name, $selected_id)
903 echo "<td>$label</td>\n";
905 sales_areas_list($name, $selected_id);
909 function sales_areas_list_row($label, $name, $selected_id)
912 sales_areas_list_cells($label, $name, $selected_id);
916 //------------------------------------------------------------------------------------
918 function workorders_list($name, $selected_id)
920 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
921 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
924 function workorders_list_cells($label, $name, $selected_id)
927 echo "<td>$label</td>\n";
929 workorders_list($name, $selected_id);
933 function workorders_list_row($label, $name, $selected_id)
936 workorders_list_cells($label, $name, $selected_id);
940 //------------------------------------------------------------------------------------
942 function payment_terms_list($name, $selected_id)
944 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
945 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
948 function payment_terms_list_cells($label, $name, $selected_id)
951 echo "<td>$label</td>\n";
953 payment_terms_list($name, $selected_id);
957 function payment_terms_list_row($label, $name, $selected_id)
960 payment_terms_list_cells($label, $name, $selected_id);
964 //------------------------------------------------------------------------------------
966 function credit_status_list($name, $selected_id)
968 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
969 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
972 function credit_status_list_cells($label, $name, $selected_id)
975 echo "<td>$label</td>\n";
977 credit_status_list($name, $selected_id);
981 function credit_status_list_row($label, $name, $selected_id)
984 credit_status_list_cells($label, $name, $selected_id);
988 //-----------------------------------------------------------------------------------------------
990 function sales_types_list($name, $selected_id, $submit_on_change=false, $special_option=false)
992 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
994 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
996 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
998 'select_submit'=> $submit_on_change,
1003 function sales_types_list_cells($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1006 echo "<td>$label</td>\n";
1008 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1013 function sales_types_list_row($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1016 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1021 //-----------------------------------------------------------------------------------------------
1023 function movement_types_list($name, $selected_id)
1025 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1026 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1029 function movement_types_list_cells($label, $name, $selected_id)
1032 echo "<td>$label</td>\n";
1034 movement_types_list($name, $selected_id);
1038 function movement_types_list_row($label, $name, $selected_id)
1041 movement_types_list_cells($label, $name, $selected_id);
1045 //-----------------------------------------------------------------------------------------------
1047 function bank_trans_types_list($name, $selected_id)
1049 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1050 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1053 function bank_trans_types_list_cells($label, $name, $selected_id)
1056 echo "<td>$label</td>\n";
1058 bank_trans_types_list($name, $selected_id);
1062 function bank_trans_types_list_row($label, $name, $selected_id)
1065 bank_trans_types_list_cells($label, $name, $selected_id);
1069 //-----------------------------------------------------------------------------------------------
1071 function workcenter_list($name, $selected_id, $all_option=false)
1075 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1077 return combo_input($name, $selected_id, $sql, 'id', 'name',
1079 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1080 'spec_id' => $all_items,
1084 function workcenter_list_cells($label, $name, $selected_id, $all_option=false)
1086 default_focus($name);
1088 echo "<td>$label</td>\n";
1090 workcenter_list($name, $selected_id, $all_option);
1094 function workcenter_list_row($label, $name, $selected_id, $all_option=false)
1097 workcenter_list_cells($label, $name, $selected_id, $all_option);
1101 //-----------------------------------------------------------------------------------------------
1103 function bank_accounts_list($name, $selected_id, $submit_on_change=false)
1105 $sql = "SELECT ".TB_PREF."bank_accounts.account_code, bank_account_name, bank_curr_code
1106 FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master
1107 WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1109 return combo_input($name, $selected_id, $sql, 'account_code', 'bank_account_name',
1111 'format' => '_format_add_curr',
1112 'select_submit'=> $submit_on_change,
1117 function bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change=false)
1120 echo "<td>$label</td>\n";
1122 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1127 function bank_accounts_list_row($label, $name, $selected_id, $submit_on_change=false)
1130 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1135 //-----------------------------------------------------------------------------------------------
1137 function class_list($name, $selected_id, $submit_on_change=false)
1139 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1141 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1143 'select_submit'=> $submit_on_change,
1149 function class_list_cells($label, $name, $selected_id, $submit_on_change=false)
1152 echo "<td>$label</td>\n";
1154 $str = class_list($name, $selected_id, $submit_on_change);
1159 function class_list_row($label, $name, $selected_id, $submit_on_change=false)
1162 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1167 //-----------------------------------------------------------------------------------------------
1169 function stock_categories_list($name, $selected_id)
1171 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1172 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1173 array('order'=>'category_id'));
1176 function stock_categories_list_cells($label, $name, $selected_id)
1179 echo "<td>$label</td>\n";
1181 stock_categories_list($name, $selected_id);
1185 function stock_categories_list_row($label, $name, $selected_id)
1188 stock_categories_list_cells($label, $name, $selected_id);
1192 //-----------------------------------------------------------------------------------------------
1194 function gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric)
1198 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1200 combo_input($name, $selected_id, $sql, 'id', 'name',
1203 'spec_option' =>$all_option,
1204 'spec_id' => $all_option_numeric ? 0 : $all_items
1208 function gl_account_types_list_cells($label, $name, $selected_id, $all_option=false,
1209 $all_option_numeric=false)
1212 echo "<td>$label</td>\n";
1214 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1218 function gl_account_types_list_row($label, $name, $selected_id, $all_option=false,
1219 $all_option_numeric=false)
1222 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1223 $all_option_numeric);
1227 //-----------------------------------------------------------------------------------------------
1228 function gl_all_accounts_list($name, $selected_id, $skip_bank_accounts=false,
1229 $show_group=false, $cells=false, $all_option=false)
1231 if ($skip_bank_accounts)
1232 $sql = "SELECT chart.account_code, chart.account_name, type.name
1233 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1234 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1235 ."ON chart.account_code=acc.account_code
1236 WHERE acc.account_code IS NULL
1237 AND chart.account_type=type.id";
1239 $sql = "SELECT chart.account_code, chart.account_name, type.name
1240 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1241 WHERE chart.account_type=type.id";
1243 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1245 'format' => '_format_account' . ($show_group ? '2' : ''),
1246 'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
1248 'order' => 'account_code',
1249 'search_box' => $cells,
1250 'search_submit' => false,
1258 function _format_account($row)
1260 return $row[0] . " " . $row[1];
1263 function _format_account2($row)
1265 return $row[0] . " " . $row[2] . " " . $row[1];
1268 function gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts=false,
1269 $show_group=false, $cells=false, $all_option=false)
1272 echo "<td>$label</td>\n";
1274 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
1278 function gl_all_accounts_list_row($label, $name, $selected_id, $skip_bank_accounts=false,
1279 $show_group=false, $cells=false, $all_option=false)
1282 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1283 $show_group, $cells, $all_option);
1287 function yesno_list($name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1289 default_focus($name);
1290 if ($submit_on_change == true)
1291 echo "<select name='$name' onchange='this.form.submit();'>"; // FIX ajax
1293 echo "<select name='$name'>";
1295 if (strlen($name_yes) == 0)
1299 if (strlen($name_no) == 0)
1304 if ($selected_id == null)
1305 $selected_id = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1306 if ($selected_id == 0)
1307 echo "<option value=1>";
1309 echo "<option selected value=1>";
1310 if (!isset($name_yes))
1311 echo _("Yes") . "</option>\n";
1313 echo $name_yes . "</option>\n";
1314 if ($selected_id == 0)
1315 echo "<option selected value=0>";
1317 echo "<option value=0>";
1318 if (!isset($name_no))
1319 echo _("No") . "</option>\n";
1321 echo $name_no . "</option>\n";
1325 function yesno_list_cells($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1328 echo "<td>$label</td>\n";
1330 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1335 function yesno_list_row($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1338 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1343 //------------------------------------------------------------------------------------------------
1345 function languages_list($name, $selected_id)
1347 global $installed_languages;
1349 default_focus($name);
1350 echo "<select name='$name'>";
1352 if ($selected_id == null)
1353 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1354 foreach ($installed_languages as $lang)
1357 if ($selected_id == $lang['code'])
1359 echo "value='" . $lang['code'] . "'>" . $lang['name'] . "</option>\n";
1363 function languages_list_cells($label, $name, $selected_id)
1366 echo "<td>$label</td>\n";
1368 languages_list($name, $selected_id);
1372 function languages_list_row($label, $name, $selected_id)
1375 languages_list_cells($label, $name, $selected_id);
1379 //------------------------------------------------------------------------------------------------
1381 function bank_account_types_list($name, $selected_id)
1383 $bank_account_types = bank_account_types::get_all();
1385 default_focus($name);
1386 echo "<select name='$name'>";
1388 if ($selected_id == null)
1389 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1390 foreach ($bank_account_types as $type)
1393 if ($selected_id == "" || $selected_id == $type['id'])
1395 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1399 function bank_account_types_list_cells($label, $name, $selected_id)
1402 echo "<td>$label</td>\n";
1404 bank_account_types_list($name, $selected_id);
1408 function bank_account_types_list_row($label, $name, $selected_id)
1411 bank_account_types_list_cells($label, $name, $selected_id);
1415 //------------------------------------------------------------------------------------------------
1417 function payment_person_types_list($name, $selected_id, $related=null)
1419 $types = payment_person_types::get_all();
1421 default_focus($name);
1422 echo "<select name='$name'";
1423 if ($related) // FIX ajax
1424 echo " onchange='this.form.$related.value=\"\"; this.form.submit();' ";
1427 if ($selected_id == null)
1428 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1429 foreach ($types as $type)
1431 if (payment_person_types::has_items($type['id']))
1433 if ($selected_id == "")
1434 $_POST[$name] = $selected_id = $type['id'];
1436 if ($selected_id == $type['id'])
1438 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1443 function payment_person_types_list_cells($label, $name, $selected_id, $related=null)
1446 echo "<td>$label</td>\n";
1448 $str = payment_person_types_list($name, $selected_id, $related);
1453 function payment_person_types_list_row($label, $name, $selected_id, $related=null)
1456 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1461 //------------------------------------------------------------------------------------------------
1463 function wo_types_list($name, $selected_id)
1465 $types = wo_types::get_all();
1467 default_focus($name); // FIX ajax
1468 echo "<select name='$name' onchange='this.form.submit();'>";
1470 if ($selected_id == null)
1471 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1472 foreach ($types as $type)
1475 if ($selected_id == $type['id'])
1477 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1482 function wo_types_list_row($label, $name, $selected_id)
1484 echo "<tr><td>$label</td><td>\n";
1485 $str = wo_types_list($name, $selected_id);
1486 echo "</td></tr>\n";
1490 //------------------------------------------------------------------------------------------------
1492 function dateformats_list_row($label, $name, $value)
1494 global $dateformats;
1496 default_focus($name);
1497 echo "<tr><td>$label</td>\n";
1498 echo "<td><select name='$name'>";
1501 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1503 foreach ($dateformats as $df)
1506 if ($value==$counter)
1508 echo "<option selected value='$counter'>$df</option>\n";
1512 echo "<option value='$counter'>$df</option>\n";
1516 echo "</select></td></tr>\n";
1519 function dateseps_list_row($label, $name, $value)
1523 default_focus($name);
1524 echo "<tr><td>$label</td>\n";
1525 echo "<td><select name='$name'>";
1528 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1530 foreach ($dateseps as $ds)
1533 if ($value==$counter)
1535 echo "<option selected value='$counter'>$ds</option>\n";
1539 echo "<option value='$counter'>$ds</option>\n";
1543 echo "</select></td></tr>\n";
1546 function thoseps_list_row($label, $name, $value)
1550 default_focus($name);
1551 echo "<tr><td>$label</td>\n";
1552 echo "<td><select name='$name'>";
1555 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1557 foreach ($thoseps as $ts)
1560 if ($value==$counter)
1562 echo "<option selected value='$counter'>$ts</option>\n";
1566 echo "<option value='$counter'>$ts</option>\n";
1570 echo "</select></td></tr>\n";
1573 function decseps_list_row($label, $name, $value)
1577 default_focus($name);
1578 echo "<tr><td>$label</td>\n";
1579 echo "<td><select name='$name'>";
1582 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1584 foreach ($decseps as $ds)
1587 if ($value==$counter)
1589 echo "<option selected value='$counter'>$ds</option>\n";
1593 echo "<option value='$counter'>$ds</option>\n";
1597 echo "</select></td></tr>\n";
1600 function themes_list_row($label, $name, $value)
1602 global $path_to_root;
1604 default_focus($name);
1605 $path = $path_to_root.'/themes/';
1607 $themedir = opendir($path);
1608 while(false !== ($fname = readdir($themedir)))
1610 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1616 echo "<tr><td>$label</td>\n";
1617 echo "<td><select name='$name'>";
1620 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1621 foreach ($themes as $th)
1626 echo "<option selected value='$th'>$th</option>\n";
1630 echo "<option value='$th'>$th</option>\n";
1633 echo "</select></td></tr>\n";
1636 function pagesizes_list_row($label, $name, $value)
1640 default_focus($name);
1641 echo "<tr><td>$label</td>\n";
1642 echo "<td><select name='$name'>";
1645 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1646 foreach ($pagesizes as $pz)
1651 echo "<option selected value='$pz'>$pz</option>\n";
1655 echo "<option value='$pz'>$pz</option>\n";
1658 echo "</select></td></tr>\n";
1661 function security_headings_list_row($label, $name, $value)
1663 global $security_headings;
1665 default_focus($name);
1666 echo "<tr><td>$label</td>\n";
1667 echo "<td><select name='$name'>";
1670 $value = (!isset($_POST[$name]) ? 0 : (int)$_POST[$name]);
1672 foreach ($security_headings as $sh)
1675 if ($value==$counter)
1677 echo "<option selected value='$counter'>$sh</option>\n";
1681 echo "<option value='$counter'>$sh</option>\n";
1685 echo "</select></td></tr>\n";
1688 function systypes_list_cells($label, $name, $value, $submit_on_change=false)
1690 global $systypes_array;
1692 default_focus($name);
1694 echo "<td>$label</td>\n";
1695 echo "<td><select name='$name'";
1696 if ($submit_on_change)
1697 echo " onchange='this.form.submit();'>"; // FIX ajax
1701 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1702 foreach ($systypes_array as $key=>$type)
1707 echo "<option selected value='$key'>".$type['name']."</option>\n";
1711 echo "<option value='$key'>".$type['name']."</option>\n";
1714 echo "</select></td>\n";
1717 function systypes_list_row($label, $name, $value, $submit_on_change=false)
1720 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1725 function cust_allocations_list_cells($label, $name, $selected)
1728 default_focus($name);
1731 if ($selected == null)
1732 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1733 echo "<td><select name='$name'>";
1734 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1735 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Sales Invoices"). "</option>\n";
1736 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1737 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1738 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1739 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Delivery Notes"). "</option>\n";
1740 echo "</select></td>\n";
1743 function supp_allocations_list_cells($name, $selected)
1747 default_focus($name);
1748 if ($selected == null)
1749 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1750 echo "<td><select name='$name'>";
1751 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1752 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Invoices"). "</option>\n";
1753 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1754 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1755 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1756 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Overdue Credit Notes"). "</option>\n";
1757 echo "</select></td>\n";
1760 function policy_list_cells($label, $name, $selected)
1762 default_focus($name);
1763 if ($selected == null)
1765 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1766 if ($selected == "")
1767 $_POST[$name] = $selected;
1771 echo "<td><select name='$name'>";
1772 echo "<option " . ($selected == ''?" selected ":"") . " value=''>" . _("Automatically put balance on back order"). "</option>\n";
1773 echo "<option " . ($selected == 'CAN'?" selected ":"") . " value='CAN'>" . _("Cancel any quantites not delivered"). "</option>\n";
1774 echo "</select></td>\n";
1777 function policy_list_row($label, $name, $selected)
1780 policy_list_cells($label, $name, $selected);
1784 function credit_type_list_cells($label, $name, $selected, $submit_on_change=false)
1786 default_focus($name);
1787 if ($selected == null)
1789 $selected = (!isset($_POST[$name]) ? "Return" : $_POST[$name]);
1790 if ($selected == "Return")
1791 $_POST[$name] = $selected;
1795 echo "<td><select name='$name'";
1796 if ($submit_on_change)
1797 echo " onchange='this.form.submit();'>"; // FIX ajax
1800 echo "<option " . ($selected == 'Return'?" selected ":"") . " value='Return'>" . _("Items Returned to Inventory Location"). "</option>\n";
1801 echo "<option " . ($selected == 'WriteOff'?" selected ":"") . " value='WriteOff'>" . _("Items Written Off"). "</option>\n";
1802 echo "</select></td>\n";
1805 function credit_type_list_row($label, $name, $selected, $submit_on_change=false)
1808 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1813 function number_list($name, $selected, $from, $to, $no_option=false)
1815 default_focus($name);
1816 if ($selected == null)
1818 $selected = (!isset($_POST[$name]) ? reserved_words::get_all_numeric() : $_POST[$name]);
1820 echo "<select name='$name'>";
1821 if ($no_option !== false)
1823 $reserved_word = reserved_words::get_all_numeric();
1825 if ($selected == $reserved_word)
1827 echo "<option selected value='$reserved_word'>$no_option</option>\n";
1831 echo "<option value='$reserved_word'>$no_option</option>\n";
1835 for ($i = $from; $i <= $to; $i++)
1837 if ($selected == $i)
1839 echo "<option selected value='$i'>$i</option>\n";
1843 echo "<option value='$i'>$i</option>\n";
1849 function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
1854 number_list($name, $selected, $from, $to, $no_option);
1858 function number_list_row($label, $name, $selected, $from, $to, $no_option=false)
1861 number_list_cells($label, $name, $selected, $from, $to, $no_option);