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']) {
97 if (isset($_POST[$search_submit])) {
99 $Ajax->activate('_page_body');
101 $Ajax->activate($name);
104 if ($spec_option === false && $selected_id==null)
107 $opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
112 foreach($opts['search'] as $i=> $s)
113 $opts['search'][$i] = $s . " LIKE '%{$txt}%'";
114 $opts['where'][] = '('. implode($opts['search'], ' OR ') . ')';
119 if (count($opts['where'])) {
120 $sql .= strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
121 $sql .= '('. implode($opts['where'], ' AND ') . ')';
123 if ($opts['order'] != false) {
124 $sql .= ' ORDER BY '.$opts['order'];
128 // ------ make selector ----------
129 $selector = $first_opt = '';
132 //if($name=='SelectStockFromList') display_error($sql);
133 if($result = db_query($sql)) {
134 while ($contact_row = db_fetch($result)) {
135 $value = $contact_row[0];
136 $descr = $opts['format']==null ? $contact_row[1] :
137 call_user_func($opts['format'], $contact_row);
139 if ((string)($selected_id) === $value) {
143 if ($first_id === false) {
147 $selector .= "<option $sel value='$value'>$descr</option>\n";
149 db_free_result($result);
151 // Prepend special option.
152 if ($spec_option !== false) { // if special option used - add it
153 $first_id = $spec_id;
154 $first_opt = $spec_option;
155 $sel = $found===false ? 'selected' : '';
156 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
160 if ($found === false) {
161 $_POST[$name] = $first_id;
165 $txt = $_POST[$name];
167 $Ajax->addUpdate($name, $search_box, $txt);
170 $selector = "<select name='$name' class='$class' title='"
171 . $opts['sel_hint']."' $rel>".$selector."</select>\n";
173 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
175 // because of bug which M$ cannot fix since IE 5.0
176 // we must embed whole selector in span tags to enable proper ajax update
177 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
179 if ($select_submit != false) { // if submit on change is used - add select button
180 global $_select_button;
181 // button class selects form reload/ajax selector update
182 $selector .= sprintf($_select_button, user_theme(),
183 (in_ajax() ? 'display:none;':''),
184 $select_submit)."\n";
186 // ------ make combo ----------
189 if ($search_box != false) {
190 $edit_entry = "<input type='text' name='$search_box' id='$search_box' size='".
191 $opts['size']."' maxlength='".$opts['max'].
192 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
193 .$opts['box_hint']."'"
194 .(in_ajax() && !$by_id ? " style=display:none;":'')
196 if ($search_submit != false) {
197 global $_search_button;
198 $edit_entry .= sprintf($_search_button, user_theme(),
199 (in_ajax() ? 'display:none;':''),
200 $search_submit)."\n";
203 default_focus($name);
205 if ($search_box && $opts['cells'])
206 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
208 echo $edit_entry.$selector;
213 function supplier_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
217 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
219 $mode = get_company_pref('no_supplier_list');
221 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
223 'format' => '_format_add_curr',
224 'search_box' => $mode!=0,
226 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
227 'spec_id' => $all_items,
228 'select_submit'=> $submit_on_change,
230 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
235 function _format_add_curr($row)
237 static $company_currency;
239 if ($company_currency == null)
241 $company_currency = get_company_currency();
243 return $row[1] . ($row[2] == $company_currency ?
244 '' : (" - " . $row[2]));
247 function supplier_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
250 echo "<td>$label</td><td>\n";
251 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
256 function supplier_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
258 echo "<tr><td>$label</td><td>";
259 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
263 //----------------------------------------------------------------------------------------------
265 function customer_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
269 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
271 $mode = get_company_pref('no_customer_list');
273 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
275 'format' => '_format_add_curr',
276 'search_box' => $mode!=0,
279 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
280 'spec_id' => $all_items,
281 'select_submit'=> $submit_on_change,
283 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
288 function customer_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
291 echo "<td>$label</td>\n";
293 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
298 function customer_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
300 echo "<tr><td>$label</td><td nowrap>";
301 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
302 echo "</td>\n</tr>\n";
306 //------------------------------------------------------------------------------------------------
308 function customer_branches_list($customer_id, $name, $selected_id,
309 $spec_option = true, $enabled=true, $submit_on_change=false)
313 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
314 WHERE debtor_no='" . $customer_id . "' ";
316 $where = $enabled ? array("disable_trans = 0") : array();
317 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
320 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
321 'spec_id' => $all_items,
322 'select_submit'=> $submit_on_change,
323 'sel_hint' => _('Select customer branch')
327 //------------------------------------------------------------------------------------------------
329 function customer_branches_list_cells($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
332 echo "<td>$label</td>\n";
334 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
339 function customer_branches_list_row($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
342 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
347 //------------------------------------------------------------------------------------------------
349 function locations_list($name, $selected_id, $all_option=false, $submit_on_change=false)
353 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
355 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
357 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
358 'spec_id' => $all_items,
359 'select_submit'=> $submit_on_change
363 function locations_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
366 echo "<td>$label</td>\n";
368 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
373 function locations_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
376 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
381 //-----------------------------------------------------------------------------------------------
383 function currencies_list($name, $selected_id, $submit_on_change=false)
385 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
387 // default to the company currency
388 if ($selected_id == "")
390 $selected_id = get_company_currency();
391 $_POST[$name] = $selected_id;
394 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
396 'select_submit'=> $submit_on_change,
401 function currencies_list_cells($label, $name, $selected_id)
404 echo "<td>$label</td>\n";
406 $str = currencies_list($name, $selected_id);
411 function currencies_list_row($label, $name, $selected_id)
414 $str = currencies_list_cells($label, $name, $selected_id);
419 //---------------------------------------------------------------------------------------------------
421 function fiscalyears_list($name, $selected_id, $submit_on_change=false)
424 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
426 // default to the company current fiscal year
427 if ($selected_id == "")
429 $selected_id = get_company_pref('f_year');
430 $_POST[$name] = $selected_id;
433 return combo_input($name, $selected_id, $sql, 'id', '',
436 'format' => '_format_fiscalyears',
437 'select_submit'=> $submit_on_change,
442 function _format_fiscalyears($row)
444 return sql2date($row[1]) . " - " . sql2date($row[2])
445 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
448 function fiscalyears_list_cells($label, $name, $selected_id)
451 echo "<td>$label</td>\n";
453 $str = fiscalyears_list($name, $selected_id);
458 function fiscalyears_list_row($label, $name, $selected_id)
461 $str = fiscalyears_list_cells($label, $name, $selected_id);
465 //------------------------------------------------------------------------------------
467 function dimensions_list($name, $selected_id, $no_option=false, $showname=' ',
468 $submit_on_change=false, $showclosed=false, $showtype=1)
470 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
473 'order' => 'reference',
474 'spec_option'=>$no_option ? $showname : false,
476 'select_submit'=> $submit_on_change,
481 $options['where'][] = "closed=0";
483 $options['where'][] = "type_=$showtype";
485 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
488 function dimensions_list_cells($label, $name, $selected_id, $no_option=false, $showname=null,
489 $showclosed=false, $showtype=0)
492 echo "<td>$label</td>\n";
494 $str = dimensions_list($name, $selected_id, $no_option, $showname, false, $showclosed, $showtype);
499 function dimensions_list_row($label, $name, $selected_id, $no_option=false, $showname=null,
500 $showclosed=false, $showtype=0)
503 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
504 $showclosed, $showtype);
509 //---------------------------------------------------------------------------------------------------
511 function stock_items_list($name, $selected_id, $all_option=false, $submit_on_change=false, $opts=array())
515 $sql = "SELECT stock_id, s.description, c.description
516 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
518 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
521 'format' => '_format_stock_items',
522 'spec_option' => $all_option===true ? _("All Items") : $all_option,
523 'spec_id' => $all_items,
524 'search_box' => true,
525 'search' => array("stock_id", "c.description","s.description"),
526 'search_submit' => get_company_pref('no_item_list')!=0,
528 'select_submit'=> $submit_on_change
532 function _format_stock_items($row)
534 return (user_show_codes() ? ($row[0] . " - ") : "")
535 . $row[2] . " - " . $row[1];
538 function stock_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
541 echo "<td>$label</td>\n";
542 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
543 array('cells'=>true));
547 function stock_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
550 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
555 //------------------------------------------------------------------------------------
557 function base_stock_items_list($where, $name, $selected_id,
558 $all_option=false, $submit_on_change=false)
562 $sql = "SELECT stock_id, s.description, c.description
563 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
564 s.category_id=c.category_id";
566 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
568 'format' => '_format_stock_items',
569 'spec_option' => $all_option==true ? _("All Items") : $all_option,
570 'spec_id' => $all_items,
571 'select_submit'=> $submit_on_change,
575 //------------------------------------------------------------------------------------
577 function stock_bom_items_list($name, $selected_id, $all_option=false, $submit_on_change=false)
580 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
581 $name, $selected_id, $all_option, $submit_on_change);
584 function stock_bom_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
587 echo "<td>$label</td>\n";
589 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
594 function stock_bom_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
597 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
602 //------------------------------------------------------------------------------------
604 function stock_manufactured_items_list($name, $selected_id,
605 $all_option=false, $submit_on_change=false)
607 return base_stock_items_list("s.mb_flag='M'",
608 $name, $selected_id, $all_option, $submit_on_change);
611 function stock_manufactured_items_list_cells($label, $name, $selected_id,
612 $all_option=false, $submit_on_change=false)
615 echo "<td>$label</td>\n";
617 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
623 function stock_manufactured_items_list_row($label, $name, $selected_id,
624 $all_option=false, $submit_on_change=false)
627 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
628 $all_option, $submit_on_change);
632 //------------------------------------------------------------------------------------
634 function stock_component_items_list($name, $parent_stock_id, $selected_id,
635 $all_option=false, $submit_on_change=false)
637 return base_stock_items_list("stock_id != '$parent_stock_id'", $name, $selected_id,
638 $all_option, $submit_on_change);
640 //------------------------------------------------------------------------------------
642 function stock_costable_items_list($name, $selected_id,
643 $all_option=false, $submit_on_change=false)
645 return base_stock_items_list("mb_flag!='D'", $name, $selected_id,
646 $all_option, $submit_on_change);
649 //------------------------------------------------------------------------------------
651 function stock_purchasable_items_list($name, $selected_id, $all_option=false,
652 $submit_on_change=false, $opts=array())
655 $sql = "SELECT stock_id, s.description, c.description
656 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c
657 WHERE s.category_id=c.category_id
659 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
661 'format' => '_format_stock_items',
662 'spec_option' => $all_option===true ? _("All Items") : $all_option,
663 'spec_id' => $all_items,
664 'search_box' => true,
665 'search' => array("stock_id", "c.description","s.description"),
666 'search_submit' => get_company_pref('no_item_list')!=0,
668 'select_submit'=> $submit_on_change
673 function stock_purchasable_items_list_cells($label, $name, $selected_id,
674 $all_option=false, $submit_on_change=false)
677 echo "<td>$label</td>\n";
678 $ret = stock_purchasable_items_list($name, $selected_id, $all_option,
679 $submit_on_change, array('cells'=>true) );
683 function stock_purchasable_items_list_row($label, $name, $selected_id,
684 $all_option=false, $submit_on_change=false)
687 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id,
688 $all_option, $submit_on_change);
693 //------------------------------------------------------------------------------------
695 function stock_item_types_list_row($label, $name, $selected_id, $enabled=true)
697 default_focus($name);
700 echo "<td>$label</td>\n";
703 $sel = "<select name='$name' onchange='JsHttpRequest.request(\"_{$name}_update\", this.form);'>\n";
706 $sel = "<select disabled name='$name'>\n";
707 if ($selected_id == null)
708 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
709 if ($selected_id == "")
710 $_POST[$name] = $selected_id = "B";
711 $sel .= "<option " . ($selected_id == 'M'?" selected ":"") . " value='M'>" . _("Manufactured"). "</option>\n";
712 $sel .= "<option " . ($selected_id == 'B'?" selected ":"") . " value='B'>" . _("Purchased"). "</option>\n";
713 $sel .= "<option " . ($selected_id == 'D'?" selected ":"") . " value='D'>" . _("Service"). "</option>\n";
720 function stock_units_list_row($label, $name, $value, $enabled=true)
722 default_focus($name);
723 $result = get_all_item_units();
724 echo "<tr><td>$label</td>\n";
726 echo "<td><select name='$name'>";
728 echo "<td><select disabled name='$name'>";
731 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
733 while($unit = db_fetch($result))
737 $_POST[$name] = $unit['abbr'];
739 $descr = $unit['name'];
740 if ($value==$unit['abbr'])
742 echo "<option selected value='".$unit['abbr']."'>$descr</option>\n";
746 echo "<option value='".$unit['abbr']."'>$descr</option>\n";
749 echo "</select></td></tr>\n";
752 //------------------------------------------------------------------------------------
754 function tax_types_list($name, $selected_id, $none_option=false, $submit_on_change=false)
756 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
758 return combo_input($name, $selected_id, $sql, 'id', 'name',
760 'spec_option' => $none_option,
762 'select_submit'=> $submit_on_change,
767 function tax_types_list_cells($label, $name, $selected_id, $none_option=false,
768 $submit_on_change=false)
771 echo "<td>$label</td>\n";
773 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
778 function tax_types_list_row($label, $name, $selected_id, $none_option=false,
779 $submit_on_change=false)
782 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
787 //------------------------------------------------------------------------------------
789 function tax_groups_list($name, $selected_id,
790 $none_option=false, $submit_on_change=false)
792 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
794 return combo_input($name, $selected_id, $sql, 'id', 'name',
797 'spec_option' => $none_option,
799 'select_submit'=> $submit_on_change,
804 function tax_groups_list_cells($label, $name, $selected_id, $submit_on_change=false)
807 echo "<td>$label</td>\n";
809 $str = tax_groups_list($name, $selected_id, false, $submit_on_change);
814 function tax_groups_list_row($label, $name, $selected_id, $submit_on_change=false)
817 $str = tax_groups_list_cells($label, $name, $selected_id, false, $submit_on_change);
822 //------------------------------------------------------------------------------------
824 function item_tax_types_list($name, $selected_id)
826 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
827 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
830 function item_tax_types_list_cells($label, $name, $selected_id)
833 echo "<td>$label</td>\n";
835 item_tax_types_list($name, $selected_id);
839 function item_tax_types_list_row($label, $name, $selected_id)
842 item_tax_types_list_cells($label, $name, $selected_id);
846 //------------------------------------------------------------------------------------
848 function shippers_list($name, $selected_id)
850 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
851 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
854 function shippers_list_cells($label, $name, $selected_id)
857 echo "<td>$label</td>\n";
859 shippers_list($name, $selected_id);
863 function shippers_list_row($label, $name, $selected_id)
866 shippers_list_cells($label, $name, $selected_id);
870 //-------------------------------------------------------------------------------------
872 function sales_persons_list($name, $selected_id)
874 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
875 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
878 function sales_persons_list_cells($label, $name, $selected_id)
881 echo "<td>$label</td>\n";
883 sales_persons_list($name, $selected_id);
887 function sales_persons_list_row($label, $name, $selected_id, $submit_on_change=false)
890 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
894 //------------------------------------------------------------------------------------
896 function sales_areas_list($name, $selected_id)
898 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
899 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
902 function sales_areas_list_cells($label, $name, $selected_id)
905 echo "<td>$label</td>\n";
907 sales_areas_list($name, $selected_id);
911 function sales_areas_list_row($label, $name, $selected_id)
914 sales_areas_list_cells($label, $name, $selected_id);
918 //------------------------------------------------------------------------------------
920 function workorders_list($name, $selected_id)
922 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
923 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
926 function workorders_list_cells($label, $name, $selected_id)
929 echo "<td>$label</td>\n";
931 workorders_list($name, $selected_id);
935 function workorders_list_row($label, $name, $selected_id)
938 workorders_list_cells($label, $name, $selected_id);
942 //------------------------------------------------------------------------------------
944 function payment_terms_list($name, $selected_id)
946 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
947 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
950 function payment_terms_list_cells($label, $name, $selected_id)
953 echo "<td>$label</td>\n";
955 payment_terms_list($name, $selected_id);
959 function payment_terms_list_row($label, $name, $selected_id)
962 payment_terms_list_cells($label, $name, $selected_id);
966 //------------------------------------------------------------------------------------
968 function credit_status_list($name, $selected_id)
970 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
971 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
974 function credit_status_list_cells($label, $name, $selected_id)
977 echo "<td>$label</td>\n";
979 credit_status_list($name, $selected_id);
983 function credit_status_list_row($label, $name, $selected_id)
986 credit_status_list_cells($label, $name, $selected_id);
990 //-----------------------------------------------------------------------------------------------
992 function sales_types_list($name, $selected_id, $submit_on_change=false, $special_option=false)
994 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
996 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
998 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1000 'select_submit'=> $submit_on_change,
1001 // 'async' => false,
1005 function sales_types_list_cells($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1008 echo "<td>$label</td>\n";
1010 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1015 function sales_types_list_row($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1018 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1023 //-----------------------------------------------------------------------------------------------
1025 function movement_types_list($name, $selected_id)
1027 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1028 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1031 function movement_types_list_cells($label, $name, $selected_id)
1034 echo "<td>$label</td>\n";
1036 movement_types_list($name, $selected_id);
1040 function movement_types_list_row($label, $name, $selected_id)
1043 movement_types_list_cells($label, $name, $selected_id);
1047 //-----------------------------------------------------------------------------------------------
1049 function bank_trans_types_list($name, $selected_id)
1051 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1052 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1055 function bank_trans_types_list_cells($label, $name, $selected_id)
1058 echo "<td>$label</td>\n";
1060 bank_trans_types_list($name, $selected_id);
1064 function bank_trans_types_list_row($label, $name, $selected_id)
1067 bank_trans_types_list_cells($label, $name, $selected_id);
1071 //-----------------------------------------------------------------------------------------------
1073 function workcenter_list($name, $selected_id, $all_option=false)
1077 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1079 return combo_input($name, $selected_id, $sql, 'id', 'name',
1081 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1082 'spec_id' => $all_items,
1086 function workcenter_list_cells($label, $name, $selected_id, $all_option=false)
1088 default_focus($name);
1090 echo "<td>$label</td>\n";
1092 workcenter_list($name, $selected_id, $all_option);
1096 function workcenter_list_row($label, $name, $selected_id, $all_option=false)
1099 workcenter_list_cells($label, $name, $selected_id, $all_option);
1103 //-----------------------------------------------------------------------------------------------
1105 function bank_accounts_list($name, $selected_id, $submit_on_change=false)
1107 $sql = "SELECT ".TB_PREF."bank_accounts.account_code, bank_account_name, bank_curr_code
1108 FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master
1109 WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1111 return combo_input($name, $selected_id, $sql, 'account_code', 'bank_account_name',
1113 'format' => '_format_add_curr',
1114 'select_submit'=> $submit_on_change,
1119 function bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change=false)
1122 echo "<td>$label</td>\n";
1124 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1129 function bank_accounts_list_row($label, $name, $selected_id, $submit_on_change=false)
1132 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1137 //-----------------------------------------------------------------------------------------------
1139 function class_list($name, $selected_id, $submit_on_change=false)
1141 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1143 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1145 'select_submit'=> $submit_on_change,
1151 function class_list_cells($label, $name, $selected_id, $submit_on_change=false)
1154 echo "<td>$label</td>\n";
1156 $str = class_list($name, $selected_id, $submit_on_change);
1161 function class_list_row($label, $name, $selected_id, $submit_on_change=false)
1164 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1169 //-----------------------------------------------------------------------------------------------
1171 function stock_categories_list($name, $selected_id)
1173 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1174 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1175 array('order'=>'category_id'));
1178 function stock_categories_list_cells($label, $name, $selected_id)
1181 echo "<td>$label</td>\n";
1183 stock_categories_list($name, $selected_id);
1187 function stock_categories_list_row($label, $name, $selected_id)
1190 stock_categories_list_cells($label, $name, $selected_id);
1194 //-----------------------------------------------------------------------------------------------
1196 function gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric)
1200 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1202 combo_input($name, $selected_id, $sql, 'id', 'name',
1205 'spec_option' =>$all_option,
1206 'spec_id' => $all_option_numeric ? 0 : $all_items
1210 function gl_account_types_list_cells($label, $name, $selected_id, $all_option=false,
1211 $all_option_numeric=false)
1214 echo "<td>$label</td>\n";
1216 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1220 function gl_account_types_list_row($label, $name, $selected_id, $all_option=false,
1221 $all_option_numeric=false)
1224 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1225 $all_option_numeric);
1229 //-----------------------------------------------------------------------------------------------
1230 function gl_all_accounts_list($name, $selected_id, $skip_bank_accounts=false,
1231 $show_group=false, $cells=false, $all_option=false)
1233 if ($skip_bank_accounts)
1234 $sql = "SELECT chart.account_code, chart.account_name, type.name
1235 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1236 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1237 ."ON chart.account_code=acc.account_code
1238 WHERE acc.account_code IS NULL
1239 AND chart.account_type=type.id";
1241 $sql = "SELECT chart.account_code, chart.account_name, type.name
1242 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1243 WHERE chart.account_type=type.id";
1245 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1247 'format' => '_format_account' . ($show_group ? '2' : ''),
1248 'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
1250 'order' => 'account_code',
1251 'search_box' => $cells,
1252 'search_submit' => false,
1260 function _format_account($row)
1262 return $row[0] . " " . $row[1];
1265 function _format_account2($row)
1267 return $row[0] . " " . $row[2] . " " . $row[1];
1270 function gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts=false,
1271 $show_group=false, $cells=false, $all_option=false)
1274 echo "<td>$label</td>\n";
1276 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
1280 function gl_all_accounts_list_row($label, $name, $selected_id, $skip_bank_accounts=false,
1281 $show_group=false, $cells=false, $all_option=false)
1284 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1285 $show_group, $cells, $all_option);
1289 function yesno_list($name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1291 default_focus($name);
1292 if ($submit_on_change == true)
1293 echo "<select name='$name' onchange='this.form.submit();'>"; // FIX ajax
1295 echo "<select name='$name'>";
1297 if (strlen($name_yes) == 0)
1301 if (strlen($name_no) == 0)
1306 if ($selected_id == null)
1307 $selected_id = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1308 if ($selected_id == 0)
1309 echo "<option value=1>";
1311 echo "<option selected value=1>";
1312 if (!isset($name_yes))
1313 echo _("Yes") . "</option>\n";
1315 echo $name_yes . "</option>\n";
1316 if ($selected_id == 0)
1317 echo "<option selected value=0>";
1319 echo "<option value=0>";
1320 if (!isset($name_no))
1321 echo _("No") . "</option>\n";
1323 echo $name_no . "</option>\n";
1327 function yesno_list_cells($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1330 echo "<td>$label</td>\n";
1332 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1337 function yesno_list_row($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1340 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1345 //------------------------------------------------------------------------------------------------
1347 function languages_list($name, $selected_id)
1349 global $installed_languages;
1351 default_focus($name);
1352 echo "<select name='$name'>";
1354 if ($selected_id == null)
1355 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1356 foreach ($installed_languages as $lang)
1359 if ($selected_id == $lang['code'])
1361 echo "value='" . $lang['code'] . "'>" . $lang['name'] . "</option>\n";
1365 function languages_list_cells($label, $name, $selected_id)
1368 echo "<td>$label</td>\n";
1370 languages_list($name, $selected_id);
1374 function languages_list_row($label, $name, $selected_id)
1377 languages_list_cells($label, $name, $selected_id);
1381 //------------------------------------------------------------------------------------------------
1383 function bank_account_types_list($name, $selected_id)
1385 $bank_account_types = bank_account_types::get_all();
1387 default_focus($name);
1388 echo "<select name='$name'>";
1390 if ($selected_id == null)
1391 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1392 foreach ($bank_account_types as $type)
1395 if ($selected_id == "" || $selected_id == $type['id'])
1397 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1401 function bank_account_types_list_cells($label, $name, $selected_id)
1404 echo "<td>$label</td>\n";
1406 bank_account_types_list($name, $selected_id);
1410 function bank_account_types_list_row($label, $name, $selected_id)
1413 bank_account_types_list_cells($label, $name, $selected_id);
1417 //------------------------------------------------------------------------------------------------
1419 function payment_person_types_list($name, $selected_id, $related=null)
1421 $types = payment_person_types::get_all();
1423 default_focus($name);
1424 echo "<select name='$name'";
1425 if ($related) // FIX ajax
1426 echo " onchange='this.form.$related.value=\"\"; this.form.submit();' ";
1429 if ($selected_id == null)
1430 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1431 foreach ($types as $type)
1433 if (payment_person_types::has_items($type['id']))
1435 if ($selected_id == "")
1436 $_POST[$name] = $selected_id = $type['id'];
1438 if ($selected_id == $type['id'])
1440 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1445 function payment_person_types_list_cells($label, $name, $selected_id, $related=null)
1448 echo "<td>$label</td>\n";
1450 $str = payment_person_types_list($name, $selected_id, $related);
1455 function payment_person_types_list_row($label, $name, $selected_id, $related=null)
1458 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1463 //------------------------------------------------------------------------------------------------
1465 function wo_types_list($name, $selected_id)
1467 $types = wo_types::get_all();
1469 default_focus($name); // FIX ajax
1470 echo "<select name='$name' onchange='this.form.submit();'>";
1472 if ($selected_id == null)
1473 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1474 foreach ($types as $type)
1477 if ($selected_id == $type['id'])
1479 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1484 function wo_types_list_row($label, $name, $selected_id)
1486 echo "<tr><td>$label</td><td>\n";
1487 $str = wo_types_list($name, $selected_id);
1488 echo "</td></tr>\n";
1492 //------------------------------------------------------------------------------------------------
1494 function dateformats_list_row($label, $name, $value)
1496 global $dateformats;
1498 default_focus($name);
1499 echo "<tr><td>$label</td>\n";
1500 echo "<td><select name='$name'>";
1503 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1505 foreach ($dateformats as $df)
1508 if ($value==$counter)
1510 echo "<option selected value='$counter'>$df</option>\n";
1514 echo "<option value='$counter'>$df</option>\n";
1518 echo "</select></td></tr>\n";
1521 function dateseps_list_row($label, $name, $value)
1525 default_focus($name);
1526 echo "<tr><td>$label</td>\n";
1527 echo "<td><select name='$name'>";
1530 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1532 foreach ($dateseps as $ds)
1535 if ($value==$counter)
1537 echo "<option selected value='$counter'>$ds</option>\n";
1541 echo "<option value='$counter'>$ds</option>\n";
1545 echo "</select></td></tr>\n";
1548 function thoseps_list_row($label, $name, $value)
1552 default_focus($name);
1553 echo "<tr><td>$label</td>\n";
1554 echo "<td><select name='$name'>";
1557 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1559 foreach ($thoseps as $ts)
1562 if ($value==$counter)
1564 echo "<option selected value='$counter'>$ts</option>\n";
1568 echo "<option value='$counter'>$ts</option>\n";
1572 echo "</select></td></tr>\n";
1575 function decseps_list_row($label, $name, $value)
1579 default_focus($name);
1580 echo "<tr><td>$label</td>\n";
1581 echo "<td><select name='$name'>";
1584 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1586 foreach ($decseps as $ds)
1589 if ($value==$counter)
1591 echo "<option selected value='$counter'>$ds</option>\n";
1595 echo "<option value='$counter'>$ds</option>\n";
1599 echo "</select></td></tr>\n";
1602 function themes_list_row($label, $name, $value)
1604 global $path_to_root;
1606 default_focus($name);
1607 $path = $path_to_root.'/themes/';
1609 $themedir = opendir($path);
1610 while(false !== ($fname = readdir($themedir)))
1612 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1618 echo "<tr><td>$label</td>\n";
1619 echo "<td><select name='$name'>";
1622 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1623 foreach ($themes as $th)
1628 echo "<option selected value='$th'>$th</option>\n";
1632 echo "<option value='$th'>$th</option>\n";
1635 echo "</select></td></tr>\n";
1638 function pagesizes_list_row($label, $name, $value)
1642 default_focus($name);
1643 echo "<tr><td>$label</td>\n";
1644 echo "<td><select name='$name'>";
1647 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1648 foreach ($pagesizes as $pz)
1653 echo "<option selected value='$pz'>$pz</option>\n";
1657 echo "<option value='$pz'>$pz</option>\n";
1660 echo "</select></td></tr>\n";
1663 function security_headings_list_row($label, $name, $value)
1665 global $security_headings;
1667 default_focus($name);
1668 echo "<tr><td>$label</td>\n";
1669 echo "<td><select name='$name'>";
1672 $value = (!isset($_POST[$name]) ? 0 : (int)$_POST[$name]);
1674 foreach ($security_headings as $sh)
1677 if ($value==$counter)
1679 echo "<option selected value='$counter'>$sh</option>\n";
1683 echo "<option value='$counter'>$sh</option>\n";
1687 echo "</select></td></tr>\n";
1690 function systypes_list_cells($label, $name, $value, $submit_on_change=false)
1692 global $systypes_array;
1694 default_focus($name);
1696 echo "<td>$label</td>\n";
1697 echo "<td><select name='$name'";
1698 if ($submit_on_change)
1699 echo " onchange='this.form.submit();'>"; // FIX ajax
1703 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1704 foreach ($systypes_array as $key=>$type)
1709 echo "<option selected value='$key'>".$type['name']."</option>\n";
1713 echo "<option value='$key'>".$type['name']."</option>\n";
1716 echo "</select></td>\n";
1719 function systypes_list_row($label, $name, $value, $submit_on_change=false)
1722 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1727 function cust_allocations_list_cells($label, $name, $selected)
1730 default_focus($name);
1733 if ($selected == null)
1734 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1735 echo "<td><select name='$name'>";
1736 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1737 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Sales Invoices"). "</option>\n";
1738 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1739 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1740 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1741 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Delivery Notes"). "</option>\n";
1742 echo "</select></td>\n";
1745 function supp_allocations_list_cells($name, $selected)
1749 default_focus($name);
1750 if ($selected == null)
1751 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1752 echo "<td><select name='$name'>";
1753 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1754 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Invoices"). "</option>\n";
1755 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1756 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1757 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1758 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Overdue Credit Notes"). "</option>\n";
1759 echo "</select></td>\n";
1762 function policy_list_cells($label, $name, $selected)
1764 default_focus($name);
1765 if ($selected == null)
1767 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1768 if ($selected == "")
1769 $_POST[$name] = $selected;
1773 echo "<td><select name='$name'>";
1774 echo "<option " . ($selected == ''?" selected ":"") . " value=''>" . _("Automatically put balance on back order"). "</option>\n";
1775 echo "<option " . ($selected == 'CAN'?" selected ":"") . " value='CAN'>" . _("Cancel any quantites not delivered"). "</option>\n";
1776 echo "</select></td>\n";
1779 function policy_list_row($label, $name, $selected)
1782 policy_list_cells($label, $name, $selected);
1786 function credit_type_list_cells($label, $name, $selected, $submit_on_change=false)
1788 default_focus($name);
1789 if ($selected == null)
1791 $selected = (!isset($_POST[$name]) ? "Return" : $_POST[$name]);
1792 if ($selected == "Return")
1793 $_POST[$name] = $selected;
1797 echo "<td><select name='$name'";
1798 if ($submit_on_change)
1799 echo " onchange='JsHttpRequest.request(\"_{$name}_update\", this.form);'>";
1802 echo "<option " . ($selected == 'Return'?" selected ":"") . " value='Return'>" . _("Items Returned to Inventory Location"). "</option>\n";
1803 echo "<option " . ($selected == 'WriteOff'?" selected ":"") . " value='WriteOff'>" . _("Items Written Off"). "</option>\n";
1804 echo "</select></td>\n";
1807 function credit_type_list_row($label, $name, $selected, $submit_on_change=false)
1810 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1815 function number_list($name, $selected, $from, $to, $no_option=false)
1817 default_focus($name);
1818 if ($selected == null)
1820 $selected = (!isset($_POST[$name]) ? reserved_words::get_all_numeric() : $_POST[$name]);
1822 echo "<select name='$name'>";
1823 if ($no_option !== false)
1825 $reserved_word = reserved_words::get_all_numeric();
1827 if ($selected == $reserved_word)
1829 echo "<option selected value='$reserved_word'>$no_option</option>\n";
1833 echo "<option value='$reserved_word'>$no_option</option>\n";
1837 for ($i = $from; $i <= $to; $i++)
1839 if ($selected == $i)
1841 echo "<option selected value='$i'>$i</option>\n";
1845 echo "<option value='$i'>$i</option>\n";
1851 function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
1856 number_list($name, $selected, $from, $to, $no_option);
1860 function number_list_row($label, $name, $selected, $from, $to, $no_option=false)
1863 number_list_cells($label, $name, $selected, $from, $to, $no_option);