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 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
646 array('where'=>array("mb_flag!='D'")));
650 function stock_costable_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
653 echo "<td>$label</td>\n";
654 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
655 array('where'=>array("mb_flag!='D'"), 'cells'=>true));
659 //------------------------------------------------------------------------------------
661 function stock_purchasable_items_list($name, $selected_id, $all_option=false,
662 $submit_on_change=false, $opts=array())
665 $sql = "SELECT stock_id, s.description, c.description
666 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c
667 WHERE s.category_id=c.category_id
669 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
671 'format' => '_format_stock_items',
672 'spec_option' => $all_option===true ? _("All Items") : $all_option,
673 'spec_id' => $all_items,
674 'search_box' => true,
675 'search' => array("stock_id", "c.description","s.description"),
676 'search_submit' => get_company_pref('no_item_list')!=0,
678 'select_submit'=> $submit_on_change
683 function stock_purchasable_items_list_cells($label, $name, $selected_id,
684 $all_option=false, $submit_on_change=false)
687 echo "<td>$label</td>\n";
688 $ret = stock_purchasable_items_list($name, $selected_id, $all_option,
689 $submit_on_change, array('cells'=>true) );
693 function stock_purchasable_items_list_row($label, $name, $selected_id,
694 $all_option=false, $submit_on_change=false)
697 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id,
698 $all_option, $submit_on_change);
703 //------------------------------------------------------------------------------------
705 function stock_item_types_list_row($label, $name, $selected_id, $enabled=true)
707 default_focus($name);
710 echo "<td>$label</td>\n";
713 $sel = "<select name='$name' onchange='JsHttpRequest.request(\"_{$name}_update\", this.form);'>\n";
716 $sel = "<select disabled name='$name'>\n";
717 if ($selected_id == null)
718 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
719 if ($selected_id == "")
720 $_POST[$name] = $selected_id = "B";
721 $sel .= "<option " . ($selected_id == 'M'?" selected ":"") . " value='M'>" . _("Manufactured"). "</option>\n";
722 $sel .= "<option " . ($selected_id == 'B'?" selected ":"") . " value='B'>" . _("Purchased"). "</option>\n";
723 $sel .= "<option " . ($selected_id == 'D'?" selected ":"") . " value='D'>" . _("Service"). "</option>\n";
730 function stock_units_list_row($label, $name, $value, $enabled=true)
732 default_focus($name);
733 $result = get_all_item_units();
734 echo "<tr><td>$label</td>\n";
736 echo "<td><select name='$name'>";
738 echo "<td><select disabled name='$name'>";
741 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
743 while($unit = db_fetch($result))
747 $_POST[$name] = $unit['abbr'];
749 $descr = $unit['name'];
750 if ($value==$unit['abbr'])
752 echo "<option selected value='".$unit['abbr']."'>$descr</option>\n";
756 echo "<option value='".$unit['abbr']."'>$descr</option>\n";
759 echo "</select></td></tr>\n";
762 //------------------------------------------------------------------------------------
764 function tax_types_list($name, $selected_id, $none_option=false, $submit_on_change=false)
766 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
768 return combo_input($name, $selected_id, $sql, 'id', 'name',
770 'spec_option' => $none_option,
771 'spec_id' => reserved_words::get_all_numeric(),
772 'select_submit'=> $submit_on_change,
777 function tax_types_list_cells($label, $name, $selected_id, $none_option=false,
778 $submit_on_change=false)
781 echo "<td>$label</td>\n";
783 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
788 function tax_types_list_row($label, $name, $selected_id, $none_option=false,
789 $submit_on_change=false)
792 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
797 //------------------------------------------------------------------------------------
799 function tax_groups_list($name, $selected_id,
800 $none_option=false, $submit_on_change=false)
802 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
804 return combo_input($name, $selected_id, $sql, 'id', 'name',
807 'spec_option' => $none_option,
809 'select_submit'=> $submit_on_change,
814 function tax_groups_list_cells($label, $name, $selected_id, $submit_on_change=false)
817 echo "<td>$label</td>\n";
819 $str = tax_groups_list($name, $selected_id, false, $submit_on_change);
824 function tax_groups_list_row($label, $name, $selected_id, $submit_on_change=false)
827 $str = tax_groups_list_cells($label, $name, $selected_id, false, $submit_on_change);
832 //------------------------------------------------------------------------------------
834 function item_tax_types_list($name, $selected_id)
836 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
837 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
840 function item_tax_types_list_cells($label, $name, $selected_id)
843 echo "<td>$label</td>\n";
845 item_tax_types_list($name, $selected_id);
849 function item_tax_types_list_row($label, $name, $selected_id)
852 item_tax_types_list_cells($label, $name, $selected_id);
856 //------------------------------------------------------------------------------------
858 function shippers_list($name, $selected_id)
860 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
861 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
864 function shippers_list_cells($label, $name, $selected_id)
867 echo "<td>$label</td>\n";
869 shippers_list($name, $selected_id);
873 function shippers_list_row($label, $name, $selected_id)
876 shippers_list_cells($label, $name, $selected_id);
880 //-------------------------------------------------------------------------------------
882 function sales_persons_list($name, $selected_id)
884 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
885 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
888 function sales_persons_list_cells($label, $name, $selected_id)
891 echo "<td>$label</td>\n";
893 sales_persons_list($name, $selected_id);
897 function sales_persons_list_row($label, $name, $selected_id, $submit_on_change=false)
900 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
904 //------------------------------------------------------------------------------------
906 function sales_areas_list($name, $selected_id)
908 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
909 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
912 function sales_areas_list_cells($label, $name, $selected_id)
915 echo "<td>$label</td>\n";
917 sales_areas_list($name, $selected_id);
921 function sales_areas_list_row($label, $name, $selected_id)
924 sales_areas_list_cells($label, $name, $selected_id);
928 //------------------------------------------------------------------------------------
930 function workorders_list($name, $selected_id)
932 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
933 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
936 function workorders_list_cells($label, $name, $selected_id)
939 echo "<td>$label</td>\n";
941 workorders_list($name, $selected_id);
945 function workorders_list_row($label, $name, $selected_id)
948 workorders_list_cells($label, $name, $selected_id);
952 //------------------------------------------------------------------------------------
954 function payment_terms_list($name, $selected_id)
956 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
957 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
960 function payment_terms_list_cells($label, $name, $selected_id)
963 echo "<td>$label</td>\n";
965 payment_terms_list($name, $selected_id);
969 function payment_terms_list_row($label, $name, $selected_id)
972 payment_terms_list_cells($label, $name, $selected_id);
976 //------------------------------------------------------------------------------------
978 function credit_status_list($name, $selected_id)
980 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
981 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
984 function credit_status_list_cells($label, $name, $selected_id)
987 echo "<td>$label</td>\n";
989 credit_status_list($name, $selected_id);
993 function credit_status_list_row($label, $name, $selected_id)
996 credit_status_list_cells($label, $name, $selected_id);
1000 //-----------------------------------------------------------------------------------------------
1002 function sales_types_list($name, $selected_id, $submit_on_change=false, $special_option=false)
1004 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
1006 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
1008 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1010 'select_submit'=> $submit_on_change,
1011 // 'async' => false,
1015 function sales_types_list_cells($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1018 echo "<td>$label</td>\n";
1020 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1025 function sales_types_list_row($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1028 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1033 //-----------------------------------------------------------------------------------------------
1035 function movement_types_list($name, $selected_id)
1037 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1038 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1041 function movement_types_list_cells($label, $name, $selected_id)
1044 echo "<td>$label</td>\n";
1046 movement_types_list($name, $selected_id);
1050 function movement_types_list_row($label, $name, $selected_id)
1053 movement_types_list_cells($label, $name, $selected_id);
1057 //-----------------------------------------------------------------------------------------------
1059 function bank_trans_types_list($name, $selected_id)
1061 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1062 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1065 function bank_trans_types_list_cells($label, $name, $selected_id)
1068 echo "<td>$label</td>\n";
1070 bank_trans_types_list($name, $selected_id);
1074 function bank_trans_types_list_row($label, $name, $selected_id)
1077 bank_trans_types_list_cells($label, $name, $selected_id);
1081 //-----------------------------------------------------------------------------------------------
1083 function workcenter_list($name, $selected_id, $all_option=false)
1087 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1089 return combo_input($name, $selected_id, $sql, 'id', 'name',
1091 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1092 'spec_id' => $all_items,
1096 function workcenter_list_cells($label, $name, $selected_id, $all_option=false)
1098 default_focus($name);
1100 echo "<td>$label</td>\n";
1102 workcenter_list($name, $selected_id, $all_option);
1106 function workcenter_list_row($label, $name, $selected_id, $all_option=false)
1109 workcenter_list_cells($label, $name, $selected_id, $all_option);
1113 //-----------------------------------------------------------------------------------------------
1115 function bank_accounts_list($name, $selected_id, $submit_on_change=false)
1117 $sql = "SELECT ".TB_PREF."bank_accounts.account_code, bank_account_name, bank_curr_code
1118 FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master
1119 WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1121 return combo_input($name, $selected_id, $sql, 'account_code', 'bank_account_name',
1123 'format' => '_format_add_curr',
1124 'select_submit'=> $submit_on_change,
1129 function bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change=false)
1132 echo "<td>$label</td>\n";
1134 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1139 function bank_accounts_list_row($label, $name, $selected_id, $submit_on_change=false)
1142 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1147 //-----------------------------------------------------------------------------------------------
1149 function class_list($name, $selected_id, $submit_on_change=false)
1151 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1153 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1155 'select_submit'=> $submit_on_change,
1161 function class_list_cells($label, $name, $selected_id, $submit_on_change=false)
1164 echo "<td>$label</td>\n";
1166 $str = class_list($name, $selected_id, $submit_on_change);
1171 function class_list_row($label, $name, $selected_id, $submit_on_change=false)
1174 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1179 //-----------------------------------------------------------------------------------------------
1181 function stock_categories_list($name, $selected_id)
1183 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1184 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1185 array('order'=>'category_id'));
1188 function stock_categories_list_cells($label, $name, $selected_id)
1191 echo "<td>$label</td>\n";
1193 stock_categories_list($name, $selected_id);
1197 function stock_categories_list_row($label, $name, $selected_id)
1200 stock_categories_list_cells($label, $name, $selected_id);
1204 //-----------------------------------------------------------------------------------------------
1206 function gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric)
1210 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1212 combo_input($name, $selected_id, $sql, 'id', 'name',
1215 'spec_option' =>$all_option,
1216 'spec_id' => $all_option_numeric ? 0 : $all_items
1220 function gl_account_types_list_cells($label, $name, $selected_id, $all_option=false,
1221 $all_option_numeric=false)
1224 echo "<td>$label</td>\n";
1226 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1230 function gl_account_types_list_row($label, $name, $selected_id, $all_option=false,
1231 $all_option_numeric=false)
1234 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1235 $all_option_numeric);
1239 //-----------------------------------------------------------------------------------------------
1240 function gl_all_accounts_list($name, $selected_id, $skip_bank_accounts=false,
1241 $show_group=false, $cells=false, $all_option=false)
1243 if ($skip_bank_accounts)
1244 $sql = "SELECT chart.account_code, chart.account_name, type.name
1245 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1246 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1247 ."ON chart.account_code=acc.account_code
1248 WHERE acc.account_code IS NULL
1249 AND chart.account_type=type.id";
1251 $sql = "SELECT chart.account_code, chart.account_name, type.name
1252 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1253 WHERE chart.account_type=type.id";
1255 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1257 'format' => '_format_account' . ($show_group ? '2' : ''),
1258 'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
1260 'order' => 'account_code',
1261 'search_box' => $cells,
1262 'search_submit' => false,
1270 function _format_account($row)
1272 return $row[0] . " " . $row[1];
1275 function _format_account2($row)
1277 return $row[0] . " " . $row[2] . " " . $row[1];
1280 function gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts=false,
1281 $show_group=false, $cells=false, $all_option=false)
1284 echo "<td>$label</td>\n";
1286 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
1290 function gl_all_accounts_list_row($label, $name, $selected_id, $skip_bank_accounts=false,
1291 $show_group=false, $cells=false, $all_option=false)
1294 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1295 $show_group, $cells, $all_option);
1299 function yesno_list($name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1301 default_focus($name);
1302 if ($submit_on_change == true)
1303 echo "<select name='$name' onchange='this.form.submit();'>"; // FIX ajax
1305 echo "<select name='$name'>";
1307 if (strlen($name_yes) == 0)
1311 if (strlen($name_no) == 0)
1316 if ($selected_id == null)
1317 $selected_id = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1318 if ($selected_id == 0)
1319 echo "<option value=1>";
1321 echo "<option selected value=1>";
1322 if (!isset($name_yes))
1323 echo _("Yes") . "</option>\n";
1325 echo $name_yes . "</option>\n";
1326 if ($selected_id == 0)
1327 echo "<option selected value=0>";
1329 echo "<option value=0>";
1330 if (!isset($name_no))
1331 echo _("No") . "</option>\n";
1333 echo $name_no . "</option>\n";
1337 function yesno_list_cells($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1340 echo "<td>$label</td>\n";
1342 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1347 function yesno_list_row($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1350 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1355 //------------------------------------------------------------------------------------------------
1357 function languages_list($name, $selected_id)
1359 global $installed_languages;
1361 default_focus($name);
1362 echo "<select name='$name'>";
1364 if ($selected_id == null)
1365 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1366 foreach ($installed_languages as $lang)
1369 if ($selected_id == $lang['code'])
1371 echo "value='" . $lang['code'] . "'>" . $lang['name'] . "</option>\n";
1375 function languages_list_cells($label, $name, $selected_id)
1378 echo "<td>$label</td>\n";
1380 languages_list($name, $selected_id);
1384 function languages_list_row($label, $name, $selected_id)
1387 languages_list_cells($label, $name, $selected_id);
1391 //------------------------------------------------------------------------------------------------
1393 function bank_account_types_list($name, $selected_id)
1395 $bank_account_types = bank_account_types::get_all();
1397 default_focus($name);
1398 echo "<select name='$name'>";
1400 if ($selected_id == null)
1401 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1402 foreach ($bank_account_types as $type)
1405 if ($selected_id == "" || $selected_id == $type['id'])
1407 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1411 function bank_account_types_list_cells($label, $name, $selected_id)
1414 echo "<td>$label</td>\n";
1416 bank_account_types_list($name, $selected_id);
1420 function bank_account_types_list_row($label, $name, $selected_id)
1423 bank_account_types_list_cells($label, $name, $selected_id);
1427 //------------------------------------------------------------------------------------------------
1429 function payment_person_types_list($name, $selected_id, $related=null)
1431 $types = payment_person_types::get_all();
1433 default_focus($name);
1434 echo "<select name='$name'";
1435 if ($related) // FIX ajax
1436 echo " onchange='this.form.$related.value=\"\"; this.form.submit();' ";
1439 if ($selected_id == null)
1440 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1441 foreach ($types as $type)
1443 if (payment_person_types::has_items($type['id']))
1445 if ($selected_id == "")
1446 $_POST[$name] = $selected_id = $type['id'];
1448 if ($selected_id == $type['id'])
1450 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1455 function payment_person_types_list_cells($label, $name, $selected_id, $related=null)
1458 echo "<td>$label</td>\n";
1460 $str = payment_person_types_list($name, $selected_id, $related);
1465 function payment_person_types_list_row($label, $name, $selected_id, $related=null)
1468 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1473 //------------------------------------------------------------------------------------------------
1475 function wo_types_list($name, $selected_id)
1477 $types = wo_types::get_all();
1479 default_focus($name);
1480 echo "<select name='$name' onchange='JsHttpRequest.request(\"_{$name}_update\", this.form);'>";
1482 if ($selected_id == null)
1483 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1484 foreach ($types as $type)
1487 if ($selected_id == $type['id'])
1489 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1494 function wo_types_list_row($label, $name, $selected_id)
1496 echo "<tr><td>$label</td><td>\n";
1497 $str = wo_types_list($name, $selected_id);
1498 echo "</td></tr>\n";
1502 //------------------------------------------------------------------------------------------------
1504 function dateformats_list_row($label, $name, $value)
1506 global $dateformats;
1508 default_focus($name);
1509 echo "<tr><td>$label</td>\n";
1510 echo "<td><select name='$name'>";
1513 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1515 foreach ($dateformats as $df)
1518 if ($value==$counter)
1520 echo "<option selected value='$counter'>$df</option>\n";
1524 echo "<option value='$counter'>$df</option>\n";
1528 echo "</select></td></tr>\n";
1531 function dateseps_list_row($label, $name, $value)
1535 default_focus($name);
1536 echo "<tr><td>$label</td>\n";
1537 echo "<td><select name='$name'>";
1540 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1542 foreach ($dateseps as $ds)
1545 if ($value==$counter)
1547 echo "<option selected value='$counter'>$ds</option>\n";
1551 echo "<option value='$counter'>$ds</option>\n";
1555 echo "</select></td></tr>\n";
1558 function thoseps_list_row($label, $name, $value)
1562 default_focus($name);
1563 echo "<tr><td>$label</td>\n";
1564 echo "<td><select name='$name'>";
1567 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1569 foreach ($thoseps as $ts)
1572 if ($value==$counter)
1574 echo "<option selected value='$counter'>$ts</option>\n";
1578 echo "<option value='$counter'>$ts</option>\n";
1582 echo "</select></td></tr>\n";
1585 function decseps_list_row($label, $name, $value)
1589 default_focus($name);
1590 echo "<tr><td>$label</td>\n";
1591 echo "<td><select name='$name'>";
1594 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1596 foreach ($decseps as $ds)
1599 if ($value==$counter)
1601 echo "<option selected value='$counter'>$ds</option>\n";
1605 echo "<option value='$counter'>$ds</option>\n";
1609 echo "</select></td></tr>\n";
1612 function themes_list_row($label, $name, $value)
1614 global $path_to_root;
1616 default_focus($name);
1617 $path = $path_to_root.'/themes/';
1619 $themedir = opendir($path);
1620 while(false !== ($fname = readdir($themedir)))
1622 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1628 echo "<tr><td>$label</td>\n";
1629 echo "<td><select name='$name'>";
1632 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1633 foreach ($themes as $th)
1638 echo "<option selected value='$th'>$th</option>\n";
1642 echo "<option value='$th'>$th</option>\n";
1645 echo "</select></td></tr>\n";
1648 function pagesizes_list_row($label, $name, $value)
1652 default_focus($name);
1653 echo "<tr><td>$label</td>\n";
1654 echo "<td><select name='$name'>";
1657 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1658 foreach ($pagesizes as $pz)
1663 echo "<option selected value='$pz'>$pz</option>\n";
1667 echo "<option value='$pz'>$pz</option>\n";
1670 echo "</select></td></tr>\n";
1673 function security_headings_list_row($label, $name, $value)
1675 global $security_headings;
1677 default_focus($name);
1678 echo "<tr><td>$label</td>\n";
1679 echo "<td><select name='$name'>";
1682 $value = (!isset($_POST[$name]) ? 0 : (int)$_POST[$name]);
1684 foreach ($security_headings as $sh)
1687 if ($value==$counter)
1689 echo "<option selected value='$counter'>$sh</option>\n";
1693 echo "<option value='$counter'>$sh</option>\n";
1697 echo "</select></td></tr>\n";
1700 function systypes_list_cells($label, $name, $value, $submit_on_change=false)
1702 global $systypes_array;
1704 default_focus($name);
1706 echo "<td>$label</td>\n";
1707 echo "<td><select name='$name'";
1708 if ($submit_on_change)
1709 echo " onchange='this.form.submit();'>"; // FIX ajax
1713 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1714 foreach ($systypes_array as $key=>$type)
1719 echo "<option selected value='$key'>".$type['name']."</option>\n";
1723 echo "<option value='$key'>".$type['name']."</option>\n";
1726 echo "</select></td>\n";
1729 function systypes_list_row($label, $name, $value, $submit_on_change=false)
1732 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1737 function cust_allocations_list_cells($label, $name, $selected)
1740 default_focus($name);
1743 if ($selected == null)
1744 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1745 echo "<td><select name='$name'>";
1746 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1747 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Sales Invoices"). "</option>\n";
1748 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1749 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1750 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1751 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Delivery Notes"). "</option>\n";
1752 echo "</select></td>\n";
1755 function supp_allocations_list_cells($name, $selected)
1759 default_focus($name);
1760 if ($selected == null)
1761 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1762 echo "<td><select name='$name'>";
1763 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1764 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Invoices"). "</option>\n";
1765 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1766 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1767 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1768 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Overdue Credit Notes"). "</option>\n";
1769 echo "</select></td>\n";
1772 function policy_list_cells($label, $name, $selected)
1774 default_focus($name);
1775 if ($selected == null)
1777 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1778 if ($selected == "")
1779 $_POST[$name] = $selected;
1783 echo "<td><select name='$name'>";
1784 echo "<option " . ($selected == ''?" selected ":"") . " value=''>" . _("Automatically put balance on back order"). "</option>\n";
1785 echo "<option " . ($selected == 'CAN'?" selected ":"") . " value='CAN'>" . _("Cancel any quantites not delivered"). "</option>\n";
1786 echo "</select></td>\n";
1789 function policy_list_row($label, $name, $selected)
1792 policy_list_cells($label, $name, $selected);
1796 function credit_type_list_cells($label, $name, $selected, $submit_on_change=false)
1798 default_focus($name);
1799 if ($selected == null)
1801 $selected = (!isset($_POST[$name]) ? "Return" : $_POST[$name]);
1802 if ($selected == "Return")
1803 $_POST[$name] = $selected;
1807 echo "<td><select name='$name'";
1808 if ($submit_on_change)
1809 echo " onchange='JsHttpRequest.request(\"_{$name}_update\", this.form);'>";
1812 echo "<option " . ($selected == 'Return'?" selected ":"") . " value='Return'>" . _("Items Returned to Inventory Location"). "</option>\n";
1813 echo "<option " . ($selected == 'WriteOff'?" selected ":"") . " value='WriteOff'>" . _("Items Written Off"). "</option>\n";
1814 echo "</select></td>\n";
1817 function credit_type_list_row($label, $name, $selected, $submit_on_change=false)
1820 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1825 function number_list($name, $selected, $from, $to, $no_option=false)
1827 default_focus($name);
1828 if ($selected == null)
1830 $selected = (!isset($_POST[$name]) ? reserved_words::get_all_numeric() : $_POST[$name]);
1832 echo "<select name='$name'>";
1833 if ($no_option !== false)
1835 $reserved_word = reserved_words::get_all_numeric();
1837 if ($selected == $reserved_word)
1839 echo "<option selected value='$reserved_word'>$no_option</option>\n";
1843 echo "<option value='$reserved_word'>$no_option</option>\n";
1847 for ($i = $from; $i <= $to; $i++)
1849 if ($selected == $i)
1851 echo "<option selected value='$i'>$i</option>\n";
1855 echo "<option value='$i'>$i</option>\n";
1861 function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
1866 number_list($name, $selected, $from, $to, $no_option);
1870 function number_list_row($label, $name, $selected, $from, $to, $no_option=false)
1873 number_list_cells($label, $name, $selected, $from, $to, $no_option);