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);
79 $txt = get_post($search_box);
83 if (isset($_POST[$select_submit])) {
85 $Ajax->activate('_page_body');
87 $Ajax->activate($name);
90 // search related sql modifications
92 $rel = "rel='$search_box'"; // set relation to list
93 if ($opts['search_submit']) {
94 // if selected from list - set focus on next field
95 if (isset($_POST[$search_submit])) {
96 $Ajax->activate($name);
99 if ($spec_option === false)
102 $opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
107 foreach($opts['search'] as $i=> $s)
108 $opts['search'][$i] = $s . " LIKE '%{$txt}%'";
109 $opts['where'][] = '('. implode($opts['search'], ' OR ') . ')';
114 if (count($opts['where'])) {
115 $sql .= strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
116 $sql .= '('. implode($opts['where'], ' AND ') . ')';
118 if ($opts['order'] != false) {
119 $sql .= ' ORDER BY '.$opts['order'];
123 // ------ make selector ----------
125 $first_id = $first_opt = '';
127 //if($name=='code_id') display_error($sql);
128 if($result = db_query($sql)) {
129 while ($contact_row = db_fetch($result)) {
130 $value = $contact_row[0];
131 $descr = $opts['format']==null ? $contact_row[1] :
132 call_user_func($opts['format'], $contact_row);
134 if (isset($_POST[$search_submit])) {
135 if (($by_id ? $value : $contact_row[1]) === $txt)
136 $selected_id = $value;
138 // if no initial selection - set the first item
139 if ($selected_id === "") {
140 $selected_id = $value;
142 if ($selected_id == $value) {
145 $_POST[$name] = $selected_id;
147 if ($first_opt == false) {
152 $selector .= "<option $sel value='$value'>$descr</option>\n";
154 db_free_result($result);
156 // add first option - selected also if no match for selected_id was found
157 // and no special option defined
158 $sel = $spec_option===false || $found === $first_id ? 'selected' : '';
159 $selector = "<option $sel value='$first_id'>$first_opt</option>\n"
162 // Prepend special option.
163 if ($spec_option !== false) { // if special option used - add it
164 $first_id = $spec_id;
165 $first_opt = $spec_option;
166 if (isset($_POST[$search_submit])) {
168 $selected_id = $spec_id;
170 $sel = $found===false ? 'selected' : '';
171 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
175 if ($found === false) {
176 $_POST[$name] = $first_id;
181 $txt = $_POST[$name];
183 $Ajax->addUpdate($name, $search_box, $txt);
186 $selector = "<select name='$name' class='$class' title='"
187 . $opts['sel_hint']."' $rel>".$selector."</select>\n";
189 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
191 // because of bug which M$ cannot fix since IE 5.0
192 // we must embed whole selector in span tags to enable proper ajax update
193 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
195 if ($select_submit != false) { // if submit on change is used - add select button
196 global $_select_button;
197 // button class selects form reload/ajax selector update
198 $selector .= sprintf($_select_button, user_theme(),
199 (in_ajax() ? 'display:none;':''),
200 $select_submit)."\n";
202 // ------ make combo ----------
205 if ($search_box != false) {
206 $edit_entry = "<input type='text' name='$search_box' id='$search_box' size='".
207 $opts['size']."' maxlength='".$opts['max'].
208 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
209 .$opts['box_hint']."'"
210 .(in_ajax() && !$by_id ? " style=display:none;":'')
212 if ($search_submit != false) {
213 global $_search_button;
214 $edit_entry .= sprintf($_search_button, user_theme(),
215 (in_ajax() ? 'display:none;':''),
216 $search_submit)."\n";
219 default_focus($name);
221 if ($search_box && $opts['cells'])
222 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
224 echo $edit_entry.$selector;
229 function supplier_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
233 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
235 $mode = get_company_pref('no_supplier_list');
237 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
239 'format' => '_format_add_curr',
240 'search_box' => $mode!=0,
242 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
243 'spec_id' => $all_items,
244 'select_submit'=> $submit_on_change,
246 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
251 function _format_add_curr($row)
253 static $company_currency;
255 if ($company_currency == null)
257 $company_currency = get_company_currency();
259 return $row[1] . ($row[2] == $company_currency ?
260 '' : (" - " . $row[2]));
263 function supplier_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
266 echo "<td>$label</td><td>\n";
267 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
272 function supplier_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
274 echo "<tr><td>$label</td><td>";
275 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
279 //----------------------------------------------------------------------------------------------
281 function customer_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
285 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
287 $mode = get_company_pref('no_customer_list');
289 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
291 'format' => '_format_add_curr',
292 'search_box' => $mode!=0,
295 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
296 'spec_id' => $all_items,
297 'select_submit'=> $submit_on_change,
299 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
304 function customer_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
307 echo "<td>$label</td>\n";
309 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
314 function customer_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
316 echo "<tr><td>$label</td><td nowrap>";
317 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
318 echo "</td>\n</tr>\n";
322 //------------------------------------------------------------------------------------------------
324 function customer_branches_list($customer_id, $name, $selected_id,
325 $spec_option = true, $enabled=true, $submit_on_change=false)
329 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
330 WHERE debtor_no='" . $customer_id . "' ";
332 $where = $enabled ? array("disable_trans = 0") : array();
333 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
336 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
337 'spec_id' => $all_items,
338 'select_submit'=> $submit_on_change,
339 'sel_hint' => _('Select customer branch')
343 //------------------------------------------------------------------------------------------------
345 function customer_branches_list_cells($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
348 echo "<td>$label</td>\n";
350 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
355 function customer_branches_list_row($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
358 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
363 //------------------------------------------------------------------------------------------------
365 function locations_list($name, $selected_id, $all_option=false, $submit_on_change=false)
369 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
371 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
373 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
374 'spec_id' => $all_items,
375 'select_submit'=> $submit_on_change,
380 function locations_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
383 echo "<td>$label</td>\n";
385 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
390 function locations_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
393 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
398 //-----------------------------------------------------------------------------------------------
400 function currencies_list($name, $selected_id, $submit_on_change=false)
402 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
404 // default to the company currency
405 if ($selected_id == "")
407 $selected_id = get_company_currency();
408 $_POST[$name] = $selected_id;
411 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
413 'select_submit'=> $submit_on_change,
418 function currencies_list_cells($label, $name, $selected_id)
421 echo "<td>$label</td>\n";
423 $str = currencies_list($name, $selected_id);
428 function currencies_list_row($label, $name, $selected_id)
431 $str = currencies_list_cells($label, $name, $selected_id);
436 //---------------------------------------------------------------------------------------------------
438 function fiscalyears_list($name, $selected_id, $submit_on_change=false)
441 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
443 // default to the company current fiscal year
444 if ($selected_id == "")
446 $selected_id = get_company_pref('f_year');
447 $_POST[$name] = $selected_id;
450 return combo_input($name, $selected_id, $sql, 'id', '',
453 'format' => '_format_fiscalyears',
454 'select_submit'=> $submit_on_change,
459 function _format_fiscalyears($row)
461 return sql2date($row[1]) . " - " . sql2date($row[2])
462 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
465 function fiscalyears_list_cells($label, $name, $selected_id)
468 echo "<td>$label</td>\n";
470 $str = fiscalyears_list($name, $selected_id);
475 function fiscalyears_list_row($label, $name, $selected_id)
478 $str = fiscalyears_list_cells($label, $name, $selected_id);
482 //------------------------------------------------------------------------------------
484 function dimensions_list($name, $selected_id, $no_option=false, $showname=' ',
485 $submit_on_change=false, $showclosed=false, $showtype=1)
487 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
490 'order' => 'reference',
491 'spec_option'=>$no_option ? $showname : false,
493 'select_submit'=> $submit_on_change,
498 $options['where'][] = "closed=0";
500 $options['where'][] = "type_=$showtype";
502 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
505 function dimensions_list_cells($label, $name, $selected_id, $no_option=false, $showname=null,
506 $showclosed=false, $showtype=0)
509 echo "<td>$label</td>\n";
511 $str = dimensions_list($name, $selected_id, $no_option, $showname, false, $showclosed, $showtype);
516 function dimensions_list_row($label, $name, $selected_id, $no_option=false, $showname=null,
517 $showclosed=false, $showtype=0)
520 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
521 $showclosed, $showtype);
526 //---------------------------------------------------------------------------------------------------
528 function stock_items_list($name, $selected_id, $all_option=false, $submit_on_change=false, $opts=array())
532 $sql = "SELECT stock_id, s.description, c.description
533 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
535 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
538 'format' => '_format_stock_items',
539 'spec_option' => $all_option===true ? _("All Items") : $all_option,
540 'spec_id' => $all_items,
541 'search_box' => true,
542 'search' => array("stock_id", "c.description","s.description"),
543 'search_submit' => get_company_pref('no_item_list')!=0,
545 'select_submit'=> $submit_on_change
549 function _format_stock_items($row)
551 return (user_show_codes() ? ($row[0] . " - ") : "")
552 . $row[2] . " - " . $row[1];
555 function stock_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
558 echo "<td>$label</td>\n";
559 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
560 array('cells'=>true));
564 function stock_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
567 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
572 //------------------------------------------------------------------------------------
574 function base_stock_items_list($where, $name, $selected_id,
575 $all_option=false, $submit_on_change=false)
579 $sql = "SELECT stock_id, s.description, c.description
580 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
581 s.category_id=c.category_id";
583 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
585 'format' => '_format_stock_items',
586 'spec_option' => $all_option==true ? _("All Items") : $all_option,
587 'spec_id' => $all_items,
588 'select_submit'=> $submit_on_change,
592 //------------------------------------------------------------------------------------
594 function stock_bom_items_list($name, $selected_id, $all_option=false, $submit_on_change=false)
597 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
598 $name, $selected_id, $all_option, $submit_on_change);
601 function stock_bom_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
604 echo "<td>$label</td>\n";
606 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
611 function stock_bom_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
614 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
619 //------------------------------------------------------------------------------------
621 function stock_manufactured_items_list($name, $selected_id,
622 $all_option=false, $submit_on_change=false)
624 return base_stock_items_list("s.mb_flag='M'",
625 $name, $selected_id, $all_option, $submit_on_change);
628 function stock_manufactured_items_list_cells($label, $name, $selected_id,
629 $all_option=false, $submit_on_change=false)
632 echo "<td>$label</td>\n";
634 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
640 function stock_manufactured_items_list_row($label, $name, $selected_id,
641 $all_option=false, $submit_on_change=false)
644 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
645 $all_option, $submit_on_change);
649 //------------------------------------------------------------------------------------
651 function stock_component_items_list($name, $parent_stock_id, $selected_id,
652 $all_option=false, $submit_on_change=false)
654 return base_stock_items_list("stock_id != '$parent_stock_id'", $name, $selected_id,
655 $all_option, $submit_on_change);
657 //------------------------------------------------------------------------------------
659 function stock_costable_items_list($name, $selected_id,
660 $all_option=false, $submit_on_change=false)
662 return base_stock_items_list("mb_flag!='D'", $name, $selected_id,
663 $all_option, $submit_on_change);
666 //------------------------------------------------------------------------------------
668 function stock_purchasable_items_list($name, $selected_id, $all_option=false,
669 $submit_on_change=false, $opts=array())
672 $sql = "SELECT stock_id, s.description, c.description
673 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c
674 WHERE s.category_id=c.category_id
676 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
678 'format' => '_format_stock_items',
679 'spec_option' => $all_option===true ? _("All Items") : $all_option,
680 'spec_id' => $all_items,
681 'search_box' => true,
682 'search' => array("stock_id", "c.description","s.description"),
683 'search_submit' => get_company_pref('no_item_list')!=0,
685 'select_submit'=> $submit_on_change
690 function stock_purchasable_items_list_cells($label, $name, $selected_id,
691 $all_option=false, $submit_on_change=false)
694 echo "<td>$label</td>\n";
695 $ret = stock_purchasable_items_list($name, $selected_id, $all_option,
696 $submit_on_change, array('cells'=>true) );
700 function stock_purchasable_items_list_row($label, $name, $selected_id,
701 $all_option=false, $submit_on_change=false)
704 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id,
705 $all_option, $submit_on_change);
710 //------------------------------------------------------------------------------------
712 function stock_item_types_list_row($label, $name, $selected_id, $enabled=true)
714 default_focus($name);
717 echo "<td>$label</td>\n";
720 $sel = "<select name='$name' onchange='this.form.submit();'>\n";
722 $sel = "<select disabled name='$name'>\n";
723 if ($selected_id == null)
724 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
725 if ($selected_id == "")
726 $_POST[$name] = $selected_id = "B";
727 $sel .= "<option " . ($selected_id == 'M'?" selected ":"") . " value='M'>" . _("Manufactured"). "</option>\n";
728 $sel .= "<option " . ($selected_id == 'B'?" selected ":"") . " value='B'>" . _("Purchased"). "</option>\n";
729 $sel .= "<option " . ($selected_id == 'D'?" selected ":"") . " value='D'>" . _("Service"). "</option>\n";
736 function stock_units_list_row($label, $name, $value, $enabled=true)
740 default_focus($name);
741 $result = get_all_item_units();
742 echo "<tr><td>$label</td>\n";
744 echo "<td><select name='$name'>";
746 echo "<td><select disabled name='$name'>";
749 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
751 while($unit = db_fetch($result))
755 $_POST[$name] = $unit['abbr'];
757 $descr = $unit['name'];
758 if ($value==$unit['abbr'])
760 echo "<option selected value='".$unit['abbr']."'>$descr</option>\n";
764 echo "<option value='".$unit['abbr']."'>$descr</option>\n";
767 echo "</select></td></tr>\n";
770 //------------------------------------------------------------------------------------
772 function tax_types_list($name, $selected_id, $none_option=false, $submit_on_change=false)
776 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
778 return combo_input($name, $selected_id, $sql, 'id', 'name',
780 'spec_option' => $none_option,
781 'spec_id' => $all_items,
782 'select_submit'=> $submit_on_change,
787 function tax_types_list_cells($label, $name, $selected_id, $none_option=false,
788 $submit_on_change=false)
791 echo "<td>$label</td>\n";
793 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
798 function tax_types_list_row($label, $name, $selected_id, $none_option=false,
799 $submit_on_change=false)
802 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
807 //------------------------------------------------------------------------------------
809 function tax_groups_list($name, $selected_id,
810 $none_option=false, $submit_on_change=false)
814 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
816 return combo_input($name, $selected_id, $sql, 'id', 'name',
819 'spec_option' => $none_option,
820 'spec_id' => $all_items,
821 'select_submit'=> $submit_on_change,
826 function tax_groups_list_cells($label, $name, $selected_id, $submit_on_change=false)
829 echo "<td>$label</td>\n";
831 $str = tax_groups_list($name, $selected_id, false, $submit_on_change);
836 function tax_groups_list_row($label, $name, $selected_id, $submit_on_change=false)
839 $str = tax_groups_list_cells($label, $name, $selected_id, false, $submit_on_change);
844 //------------------------------------------------------------------------------------
846 function item_tax_types_list($name, $selected_id)
848 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
849 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
852 function item_tax_types_list_cells($label, $name, $selected_id)
855 echo "<td>$label</td>\n";
857 item_tax_types_list($name, $selected_id);
861 function item_tax_types_list_row($label, $name, $selected_id)
864 item_tax_types_list_cells($label, $name, $selected_id);
868 //------------------------------------------------------------------------------------
870 function shippers_list($name, $selected_id)
872 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
873 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
876 function shippers_list_cells($label, $name, $selected_id)
879 echo "<td>$label</td>\n";
881 shippers_list($name, $selected_id);
885 function shippers_list_row($label, $name, $selected_id)
888 shippers_list_cells($label, $name, $selected_id);
892 //-------------------------------------------------------------------------------------
894 function sales_persons_list($name, $selected_id)
896 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
897 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
900 function sales_persons_list_cells($label, $name, $selected_id)
903 echo "<td>$label</td>\n";
905 sales_persons_list($name, $selected_id);
909 function sales_persons_list_row($label, $name, $selected_id, $submit_on_change=false)
912 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
916 //------------------------------------------------------------------------------------
918 function sales_areas_list($name, $selected_id)
920 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
921 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
924 function sales_areas_list_cells($label, $name, $selected_id)
927 echo "<td>$label</td>\n";
929 sales_areas_list($name, $selected_id);
933 function sales_areas_list_row($label, $name, $selected_id)
936 sales_areas_list_cells($label, $name, $selected_id);
940 //------------------------------------------------------------------------------------
942 function workorders_list($name, $selected_id)
944 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
945 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
948 function workorders_list_cells($label, $name, $selected_id)
951 echo "<td>$label</td>\n";
953 workorders_list($name, $selected_id);
957 function workorders_list_row($label, $name, $selected_id)
960 workorders_list_cells($label, $name, $selected_id);
964 //------------------------------------------------------------------------------------
966 function payment_terms_list($name, $selected_id)
968 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
969 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
972 function payment_terms_list_cells($label, $name, $selected_id)
975 echo "<td>$label</td>\n";
977 payment_terms_list($name, $selected_id);
981 function payment_terms_list_row($label, $name, $selected_id)
984 payment_terms_list_cells($label, $name, $selected_id);
988 //------------------------------------------------------------------------------------
990 function credit_status_list($name, $selected_id)
992 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
993 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
996 function credit_status_list_cells($label, $name, $selected_id)
999 echo "<td>$label</td>\n";
1001 credit_status_list($name, $selected_id);
1005 function credit_status_list_row($label, $name, $selected_id)
1008 credit_status_list_cells($label, $name, $selected_id);
1012 //-----------------------------------------------------------------------------------------------
1014 function sales_types_list($name, $selected_id, $submit_on_change=false, $special_option=false)
1018 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
1020 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
1022 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1024 'select_submit'=> $submit_on_change,
1025 // 'async' => false,
1029 function sales_types_list_cells($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1032 echo "<td>$label</td>\n";
1034 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1039 function sales_types_list_row($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1042 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1047 //-----------------------------------------------------------------------------------------------
1049 function movement_types_list($name, $selected_id)
1051 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1052 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1055 function movement_types_list_cells($label, $name, $selected_id)
1058 echo "<td>$label</td>\n";
1060 movement_types_list($name, $selected_id);
1064 function movement_types_list_row($label, $name, $selected_id)
1067 movement_types_list_cells($label, $name, $selected_id);
1071 //-----------------------------------------------------------------------------------------------
1073 function bank_trans_types_list($name, $selected_id)
1075 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1076 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1079 function bank_trans_types_list_cells($label, $name, $selected_id)
1082 echo "<td>$label</td>\n";
1084 bank_trans_types_list($name, $selected_id);
1088 function bank_trans_types_list_row($label, $name, $selected_id)
1091 bank_trans_types_list_cells($label, $name, $selected_id);
1095 //-----------------------------------------------------------------------------------------------
1097 function workcenter_list($name, $selected_id, $all_option=false)
1101 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1103 return combo_input($name, $selected_id, $sql, 'id', 'name',
1105 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1106 'spec_id' => $all_items,
1110 function workcenter_list_cells($label, $name, $selected_id, $all_option=false)
1112 default_focus($name);
1114 echo "<td>$label</td>\n";
1116 workcenter_list($name, $selected_id, $all_option);
1120 function workcenter_list_row($label, $name, $selected_id, $all_option=false)
1123 workcenter_list_cells($label, $name, $selected_id, $all_option);
1127 //-----------------------------------------------------------------------------------------------
1129 function bank_accounts_list($name, $selected_id, $submit_on_change=false)
1131 $sql = "SELECT ".TB_PREF."bank_accounts.account_code, bank_account_name, bank_curr_code
1132 FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master
1133 WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1135 return combo_input($name, $selected_id, $sql, 'account_code', 'bank_account_name',
1137 'format' => '_format_add_curr',
1138 'select_submit'=> $submit_on_change,
1143 function bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change=false)
1146 echo "<td>$label</td>\n";
1148 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1153 function bank_accounts_list_row($label, $name, $selected_id, $submit_on_change=false)
1156 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1161 //-----------------------------------------------------------------------------------------------
1163 function class_list($name, $selected_id, $submit_on_change=false)
1165 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1167 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1169 'select_submit'=> $submit_on_change,
1175 function class_list_cells($label, $name, $selected_id, $submit_on_change=false)
1178 echo "<td>$label</td>\n";
1180 $str = class_list($name, $selected_id, $submit_on_change);
1185 function class_list_row($label, $name, $selected_id, $submit_on_change=false)
1188 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1193 //-----------------------------------------------------------------------------------------------
1195 function stock_categories_list($name, $selected_id)
1197 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1198 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1199 array('order'=>'category_id'));
1202 function stock_categories_list_cells($label, $name, $selected_id)
1205 echo "<td>$label</td>\n";
1207 stock_categories_list($name, $selected_id);
1211 function stock_categories_list_row($label, $name, $selected_id)
1214 stock_categories_list_cells($label, $name, $selected_id);
1218 //-----------------------------------------------------------------------------------------------
1220 function gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric)
1224 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1226 combo_input($name, $selected_id, $sql, 'id', 'name',
1229 'spec_option' =>$all_option,
1230 'spec_id' => $all_option_numeric ? 0 : $all_items
1234 function gl_account_types_list_cells($label, $name, $selected_id, $all_option=false,
1235 $all_option_numeric=false)
1238 echo "<td>$label</td>\n";
1240 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1244 function gl_account_types_list_row($label, $name, $selected_id, $all_option=false,
1245 $all_option_numeric=false)
1248 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1249 $all_option_numeric);
1253 //-----------------------------------------------------------------------------------------------
1254 function gl_all_accounts_list($name, $selected_id, $skip_bank_accounts=false,
1255 $show_group=false, $cells=false)
1257 if ($skip_bank_accounts)
1258 $sql = "SELECT chart.account_code, chart.account_name, type.name
1259 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1260 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1261 ."ON chart.account_code=acc.account_code
1262 WHERE acc.account_code IS NULL
1263 AND chart.account_type=type.id";
1265 $sql = "SELECT chart.account_code, chart.account_name, type.name
1266 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1267 WHERE chart.account_type=type.id";
1269 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1271 'format' => '_format_account' . ($show_group ? '2' : ''),
1272 'order' => 'account_code',
1273 'search_box' => $cells,
1274 'search_submit' => false,
1282 function _format_account($row)
1284 return $row[0] . " " . $row[1];
1287 function _format_account2($row)
1289 return $row[0] . " " . $row[2] . " " . $row[1];
1292 function gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts=false,
1293 $show_group=false, $cells=false)
1296 echo "<td>$label</td>\n";
1298 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells);
1302 function gl_all_accounts_list_row($label, $name, $selected_id, $skip_bank_accounts=false,
1303 $show_group=false, $cells=false)
1306 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1307 $show_group, $cells);
1311 function yesno_list($name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1313 default_focus($name);
1314 if ($submit_on_change == true)
1315 echo "<select name='$name' onchange='this.form.submit();'>"; // FIX ajax
1317 echo "<select name='$name'>";
1319 if (strlen($name_yes) == 0)
1323 if (strlen($name_no) == 0)
1328 if ($selected_id == null)
1329 $selected_id = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1330 if ($selected_id == 0)
1331 echo "<option value=1>";
1333 echo "<option selected value=1>";
1334 if (!isset($name_yes))
1335 echo _("Yes") . "</option>\n";
1337 echo $name_yes . "</option>\n";
1338 if ($selected_id == 0)
1339 echo "<option selected value=0>";
1341 echo "<option value=0>";
1342 if (!isset($name_no))
1343 echo _("No") . "</option>\n";
1345 echo $name_no . "</option>\n";
1349 function yesno_list_cells($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1352 echo "<td>$label</td>\n";
1354 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1359 function yesno_list_row($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1362 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1367 //------------------------------------------------------------------------------------------------
1369 function languages_list($name, $selected_id)
1371 global $installed_languages;
1373 default_focus($name);
1374 echo "<select name='$name'>";
1376 if ($selected_id == null)
1377 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1378 foreach ($installed_languages as $lang)
1381 if ($selected_id == $lang['code'])
1383 echo "value='" . $lang['code'] . "'>" . $lang['name'] . "</option>\n";
1387 function languages_list_cells($label, $name, $selected_id)
1390 echo "<td>$label</td>\n";
1392 languages_list($name, $selected_id);
1396 function languages_list_row($label, $name, $selected_id)
1399 languages_list_cells($label, $name, $selected_id);
1403 //------------------------------------------------------------------------------------------------
1405 function bank_account_types_list($name, $selected_id)
1407 $bank_account_types = bank_account_types::get_all();
1409 default_focus($name);
1410 echo "<select name='$name'>";
1412 if ($selected_id == null)
1413 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1414 foreach ($bank_account_types as $type)
1417 if ($selected_id == "" || $selected_id == $type['id'])
1419 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1423 function bank_account_types_list_cells($label, $name, $selected_id)
1426 echo "<td>$label</td>\n";
1428 bank_account_types_list($name, $selected_id);
1432 function bank_account_types_list_row($label, $name, $selected_id)
1435 bank_account_types_list_cells($label, $name, $selected_id);
1439 //------------------------------------------------------------------------------------------------
1441 function payment_person_types_list($name, $selected_id, $related=null)
1443 $types = payment_person_types::get_all();
1445 default_focus($name);
1446 echo "<select name='$name'";
1447 if ($related) // FIX ajax
1448 echo " onchange='this.form.$related.value=\"\"; this.form.submit();' ";
1451 if ($selected_id == null)
1452 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1453 foreach ($types as $type)
1455 if (payment_person_types::has_items($type['id']))
1457 if ($selected_id == "")
1458 $_POST[$name] = $selected_id = $type['id'];
1460 if ($selected_id == $type['id'])
1462 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1467 function payment_person_types_list_cells($label, $name, $selected_id, $related=null)
1470 echo "<td>$label</td>\n";
1472 $str = payment_person_types_list($name, $selected_id, $related);
1477 function payment_person_types_list_row($label, $name, $selected_id, $related=null)
1480 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1485 //------------------------------------------------------------------------------------------------
1487 function wo_types_list($name, $selected_id)
1489 $types = wo_types::get_all();
1491 default_focus($name); // FIX ajax
1492 echo "<select name='$name' onchange='this.form.submit();'>";
1494 if ($selected_id == null)
1495 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1496 foreach ($types as $type)
1499 if ($selected_id == $type['id'])
1501 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1506 function wo_types_list_row($label, $name, $selected_id)
1508 echo "<tr><td>$label</td><td>\n";
1509 $str = wo_types_list($name, $selected_id);
1510 echo "</td></tr>\n";
1514 //------------------------------------------------------------------------------------------------
1516 function dateformats_list_row($label, $name, $value)
1518 global $dateformats;
1520 default_focus($name);
1521 echo "<tr><td>$label</td>\n";
1522 echo "<td><select name='$name'>";
1525 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1527 foreach ($dateformats as $df)
1530 if ($value==$counter)
1532 echo "<option selected value='$counter'>$df</option>\n";
1536 echo "<option value='$counter'>$df</option>\n";
1540 echo "</select></td></tr>\n";
1543 function dateseps_list_row($label, $name, $value)
1547 default_focus($name);
1548 echo "<tr><td>$label</td>\n";
1549 echo "<td><select name='$name'>";
1552 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1554 foreach ($dateseps as $ds)
1557 if ($value==$counter)
1559 echo "<option selected value='$counter'>$ds</option>\n";
1563 echo "<option value='$counter'>$ds</option>\n";
1567 echo "</select></td></tr>\n";
1570 function thoseps_list_row($label, $name, $value)
1574 default_focus($name);
1575 echo "<tr><td>$label</td>\n";
1576 echo "<td><select name='$name'>";
1579 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1581 foreach ($thoseps as $ts)
1584 if ($value==$counter)
1586 echo "<option selected value='$counter'>$ts</option>\n";
1590 echo "<option value='$counter'>$ts</option>\n";
1594 echo "</select></td></tr>\n";
1597 function decseps_list_row($label, $name, $value)
1601 default_focus($name);
1602 echo "<tr><td>$label</td>\n";
1603 echo "<td><select name='$name'>";
1606 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1608 foreach ($decseps as $ds)
1611 if ($value==$counter)
1613 echo "<option selected value='$counter'>$ds</option>\n";
1617 echo "<option value='$counter'>$ds</option>\n";
1621 echo "</select></td></tr>\n";
1624 function themes_list_row($label, $name, $value)
1626 global $path_to_root;
1628 default_focus($name);
1629 $path = $path_to_root.'/themes/';
1631 $themedir = opendir($path);
1632 while(false !== ($fname = readdir($themedir)))
1634 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1640 echo "<tr><td>$label</td>\n";
1641 echo "<td><select name='$name'>";
1644 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1645 foreach ($themes as $th)
1650 echo "<option selected value='$th'>$th</option>\n";
1654 echo "<option value='$th'>$th</option>\n";
1657 echo "</select></td></tr>\n";
1660 function pagesizes_list_row($label, $name, $value)
1664 default_focus($name);
1665 echo "<tr><td>$label</td>\n";
1666 echo "<td><select name='$name'>";
1669 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1670 foreach ($pagesizes as $pz)
1675 echo "<option selected value='$pz'>$pz</option>\n";
1679 echo "<option value='$pz'>$pz</option>\n";
1682 echo "</select></td></tr>\n";
1685 function security_headings_list_row($label, $name, $value)
1687 global $security_headings;
1689 default_focus($name);
1690 echo "<tr><td>$label</td>\n";
1691 echo "<td><select name='$name'>";
1694 $value = (!isset($_POST[$name]) ? 0 : (int)$_POST[$name]);
1696 foreach ($security_headings as $sh)
1699 if ($value==$counter)
1701 echo "<option selected value='$counter'>$sh</option>\n";
1705 echo "<option value='$counter'>$sh</option>\n";
1709 echo "</select></td></tr>\n";
1712 function systypes_list_cells($label, $name, $value, $submit_on_change=false)
1714 global $systypes_array;
1716 default_focus($name);
1718 echo "<td>$label</td>\n";
1719 echo "<td><select name='$name'";
1720 if ($submit_on_change)
1721 echo " onchange='this.form.submit();'>"; // FIX ajax
1725 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1726 foreach ($systypes_array as $key=>$type)
1731 echo "<option selected value='$key'>".$type['name']."</option>\n";
1735 echo "<option value='$key'>".$type['name']."</option>\n";
1738 echo "</select></td>\n";
1741 function systypes_list_row($label, $name, $value, $submit_on_change=false)
1744 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1749 function cust_allocations_list_cells($label, $name, $selected)
1752 default_focus($name);
1755 if ($selected == null)
1756 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1757 echo "<td><select name='$name'>";
1758 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1759 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Sales Invoices"). "</option>\n";
1760 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1761 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1762 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1763 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Delivery Notes"). "</option>\n";
1764 echo "</select></td>\n";
1767 function supp_allocations_list_cells($name, $selected)
1771 default_focus($name);
1772 if ($selected == null)
1773 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1774 echo "<td><select name='$name'>";
1775 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1776 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Invoices"). "</option>\n";
1777 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1778 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1779 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1780 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Overdue Credit Notes"). "</option>\n";
1781 echo "</select></td>\n";
1784 function policy_list_cells($label, $name, $selected)
1786 default_focus($name);
1787 if ($selected == null)
1789 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1790 if ($selected == "")
1791 $_POST[$name] = $selected;
1795 echo "<td><select name='$name'>";
1796 echo "<option " . ($selected == ''?" selected ":"") . " value=''>" . _("Automatically put balance on back order"). "</option>\n";
1797 echo "<option " . ($selected == 'CAN'?" selected ":"") . " value='CAN'>" . _("Cancel any quantites not delivered"). "</option>\n";
1798 echo "</select></td>\n";
1801 function policy_list_row($label, $name, $selected)
1804 policy_list_cells($label, $name, $selected);
1808 function credit_type_list_cells($label, $name, $selected, $submit_on_change=false)
1810 default_focus($name);
1811 if ($selected == null)
1813 $selected = (!isset($_POST[$name]) ? "Return" : $_POST[$name]);
1814 if ($selected == "Return")
1815 $_POST[$name] = $selected;
1819 echo "<td><select name='$name'";
1820 if ($submit_on_change)
1821 echo " onchange='this.form.submit();'>"; // FIX ajax
1824 echo "<option " . ($selected == 'Return'?" selected ":"") . " value='Return'>" . _("Items Returned to Inventory Location"). "</option>\n";
1825 echo "<option " . ($selected == 'WriteOff'?" selected ":"") . " value='WriteOff'>" . _("Items Written Off"). "</option>\n";
1826 echo "</select></td>\n";
1829 function credit_type_list_row($label, $name, $selected, $submit_on_change=false)
1832 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1837 function number_list($name, $selected, $from, $to, $firstlabel="")
1839 default_focus($name);
1840 if ($selected == null)
1842 $selected = (!isset($_POST[$name]) ? $from : $_POST[$name]);
1843 if ($selected == $from)
1844 $_POST[$name] = $selected;
1846 echo "<select name='$name'>";
1847 for ($i = $from; $i <= $to; $i++)
1849 if ($i == 0 && $firstlabel != "")
1850 $label = $firstlabel;
1853 if ($selected == $i)
1855 echo "<option selected value='$i'>$label</option>\n";
1859 echo "<option value='$i'>$label</option>\n";
1865 function number_list_cells($label, $name, $selected, $from, $to)
1870 number_list($name, $selected, $from, $to);
1874 function number_list_row($label, $name, $selected, $from, $to)
1877 number_list_cells($label, $name, $selected, $from, $to);