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 ----------
124 $selector = $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 if ($first_id !== false) {
157 // add first option - selected also if no match for selected_id was found
158 // and no special option defined
159 $sel = $spec_option===false || $found === $first_id ? 'selected' : '';
160 $selector = "<option $sel value='$first_id'>$first_opt</option>\n"
163 // Prepend special option.
164 if ($spec_option !== false) { // if special option used - add it
165 $first_id = $spec_id;
166 $first_opt = $spec_option;
167 if (isset($_POST[$search_submit])) {
169 $selected_id = $spec_id;
171 $sel = $found===false ? 'selected' : '';
172 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
174 $first_id = $spec_id;
177 if ($found === false) {
178 $_POST[$name] = $first_id;
183 $txt = $_POST[$name];
185 $Ajax->addUpdate($name, $search_box, $txt);
188 $selector = "<select name='$name' class='$class' title='"
189 . $opts['sel_hint']."' $rel>".$selector."</select>\n";
191 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
193 // because of bug which M$ cannot fix since IE 5.0
194 // we must embed whole selector in span tags to enable proper ajax update
195 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
197 if ($select_submit != false) { // if submit on change is used - add select button
198 global $_select_button;
199 // button class selects form reload/ajax selector update
200 $selector .= sprintf($_select_button, user_theme(),
201 (in_ajax() ? 'display:none;':''),
202 $select_submit)."\n";
204 // ------ make combo ----------
207 if ($search_box != false) {
208 $edit_entry = "<input type='text' name='$search_box' id='$search_box' size='".
209 $opts['size']."' maxlength='".$opts['max'].
210 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
211 .$opts['box_hint']."'"
212 .(in_ajax() && !$by_id ? " style=display:none;":'')
214 if ($search_submit != false) {
215 global $_search_button;
216 $edit_entry .= sprintf($_search_button, user_theme(),
217 (in_ajax() ? 'display:none;':''),
218 $search_submit)."\n";
221 default_focus($name);
223 if ($search_box && $opts['cells'])
224 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
226 echo $edit_entry.$selector;
231 function supplier_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
235 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
237 $mode = get_company_pref('no_supplier_list');
239 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
241 'format' => '_format_add_curr',
242 'search_box' => $mode!=0,
244 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
245 'spec_id' => $all_items,
246 'select_submit'=> $submit_on_change,
248 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
253 function _format_add_curr($row)
255 static $company_currency;
257 if ($company_currency == null)
259 $company_currency = get_company_currency();
261 return $row[1] . ($row[2] == $company_currency ?
262 '' : (" - " . $row[2]));
265 function supplier_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
268 echo "<td>$label</td><td>\n";
269 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
274 function supplier_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
276 echo "<tr><td>$label</td><td>";
277 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
281 //----------------------------------------------------------------------------------------------
283 function customer_list($name, $selected_id, $spec_option=false, $submit_on_change=false)
287 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
289 $mode = get_company_pref('no_customer_list');
291 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
293 'format' => '_format_add_curr',
294 'search_box' => $mode!=0,
297 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
298 'spec_id' => $all_items,
299 'select_submit'=> $submit_on_change,
301 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
306 function customer_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
309 echo "<td>$label</td>\n";
311 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
316 function customer_list_row($label, $name, $selected_id, $all_option = false, $submit_on_change=false)
318 echo "<tr><td>$label</td><td nowrap>";
319 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
320 echo "</td>\n</tr>\n";
324 //------------------------------------------------------------------------------------------------
326 function customer_branches_list($customer_id, $name, $selected_id,
327 $spec_option = true, $enabled=true, $submit_on_change=false)
331 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
332 WHERE debtor_no='" . $customer_id . "' ";
334 $where = $enabled ? array("disable_trans = 0") : array();
335 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
338 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
339 'spec_id' => $all_items,
340 'select_submit'=> $submit_on_change,
341 'sel_hint' => _('Select customer branch')
345 //------------------------------------------------------------------------------------------------
347 function customer_branches_list_cells($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
350 echo "<td>$label</td>\n";
352 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
357 function customer_branches_list_row($label,$customer_id, $name, $selected_id, $all_option = true, $enabled=true, $submit_on_change=false)
360 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
365 //------------------------------------------------------------------------------------------------
367 function locations_list($name, $selected_id, $all_option=false, $submit_on_change=false)
371 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
373 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
375 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
376 'spec_id' => $all_items,
377 'select_submit'=> $submit_on_change,
382 function locations_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
385 echo "<td>$label</td>\n";
387 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
392 function locations_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
395 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
400 //-----------------------------------------------------------------------------------------------
402 function currencies_list($name, $selected_id, $submit_on_change=false)
404 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
406 // default to the company currency
407 if ($selected_id == "")
409 $selected_id = get_company_currency();
410 $_POST[$name] = $selected_id;
413 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
415 'select_submit'=> $submit_on_change,
420 function currencies_list_cells($label, $name, $selected_id)
423 echo "<td>$label</td>\n";
425 $str = currencies_list($name, $selected_id);
430 function currencies_list_row($label, $name, $selected_id)
433 $str = currencies_list_cells($label, $name, $selected_id);
438 //---------------------------------------------------------------------------------------------------
440 function fiscalyears_list($name, $selected_id, $submit_on_change=false)
443 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
445 // default to the company current fiscal year
446 if ($selected_id == "")
448 $selected_id = get_company_pref('f_year');
449 $_POST[$name] = $selected_id;
452 return combo_input($name, $selected_id, $sql, 'id', '',
455 'format' => '_format_fiscalyears',
456 'select_submit'=> $submit_on_change,
461 function _format_fiscalyears($row)
463 return sql2date($row[1]) . " - " . sql2date($row[2])
464 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
467 function fiscalyears_list_cells($label, $name, $selected_id)
470 echo "<td>$label</td>\n";
472 $str = fiscalyears_list($name, $selected_id);
477 function fiscalyears_list_row($label, $name, $selected_id)
480 $str = fiscalyears_list_cells($label, $name, $selected_id);
484 //------------------------------------------------------------------------------------
486 function dimensions_list($name, $selected_id, $no_option=false, $showname=' ',
487 $submit_on_change=false, $showclosed=false, $showtype=1)
489 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
492 'order' => 'reference',
493 'spec_option'=>$no_option ? $showname : false,
495 'select_submit'=> $submit_on_change,
500 $options['where'][] = "closed=0";
502 $options['where'][] = "type_=$showtype";
504 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
507 function dimensions_list_cells($label, $name, $selected_id, $no_option=false, $showname=null,
508 $showclosed=false, $showtype=0)
511 echo "<td>$label</td>\n";
513 $str = dimensions_list($name, $selected_id, $no_option, $showname, false, $showclosed, $showtype);
518 function dimensions_list_row($label, $name, $selected_id, $no_option=false, $showname=null,
519 $showclosed=false, $showtype=0)
522 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
523 $showclosed, $showtype);
528 //---------------------------------------------------------------------------------------------------
530 function stock_items_list($name, $selected_id, $all_option=false, $submit_on_change=false, $opts=array())
534 $sql = "SELECT stock_id, s.description, c.description
535 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
537 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
540 'format' => '_format_stock_items',
541 'spec_option' => $all_option===true ? _("All Items") : $all_option,
542 'spec_id' => $all_items,
543 'search_box' => true,
544 'search' => array("stock_id", "c.description","s.description"),
545 'search_submit' => get_company_pref('no_item_list')!=0,
547 'select_submit'=> $submit_on_change
551 function _format_stock_items($row)
553 return (user_show_codes() ? ($row[0] . " - ") : "")
554 . $row[2] . " - " . $row[1];
557 function stock_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
560 echo "<td>$label</td>\n";
561 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
562 array('cells'=>true));
566 function stock_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
569 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
574 //------------------------------------------------------------------------------------
576 function base_stock_items_list($where, $name, $selected_id,
577 $all_option=false, $submit_on_change=false)
581 $sql = "SELECT stock_id, s.description, c.description
582 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
583 s.category_id=c.category_id";
585 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
587 'format' => '_format_stock_items',
588 'spec_option' => $all_option==true ? _("All Items") : $all_option,
589 'spec_id' => $all_items,
590 'select_submit'=> $submit_on_change,
594 //------------------------------------------------------------------------------------
596 function stock_bom_items_list($name, $selected_id, $all_option=false, $submit_on_change=false)
599 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
600 $name, $selected_id, $all_option, $submit_on_change);
603 function stock_bom_items_list_cells($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
606 echo "<td>$label</td>\n";
608 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
613 function stock_bom_items_list_row($label, $name, $selected_id, $all_option=false, $submit_on_change=false)
616 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
621 //------------------------------------------------------------------------------------
623 function stock_manufactured_items_list($name, $selected_id,
624 $all_option=false, $submit_on_change=false)
626 return base_stock_items_list("s.mb_flag='M'",
627 $name, $selected_id, $all_option, $submit_on_change);
630 function stock_manufactured_items_list_cells($label, $name, $selected_id,
631 $all_option=false, $submit_on_change=false)
634 echo "<td>$label</td>\n";
636 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
642 function stock_manufactured_items_list_row($label, $name, $selected_id,
643 $all_option=false, $submit_on_change=false)
646 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
647 $all_option, $submit_on_change);
651 //------------------------------------------------------------------------------------
653 function stock_component_items_list($name, $parent_stock_id, $selected_id,
654 $all_option=false, $submit_on_change=false)
656 return base_stock_items_list("stock_id != '$parent_stock_id'", $name, $selected_id,
657 $all_option, $submit_on_change);
659 //------------------------------------------------------------------------------------
661 function stock_costable_items_list($name, $selected_id,
662 $all_option=false, $submit_on_change=false)
664 return base_stock_items_list("mb_flag!='D'", $name, $selected_id,
665 $all_option, $submit_on_change);
668 //------------------------------------------------------------------------------------
670 function stock_purchasable_items_list($name, $selected_id, $all_option=false,
671 $submit_on_change=false, $opts=array())
674 $sql = "SELECT stock_id, s.description, c.description
675 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c
676 WHERE s.category_id=c.category_id
678 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
680 'format' => '_format_stock_items',
681 'spec_option' => $all_option===true ? _("All Items") : $all_option,
682 'spec_id' => $all_items,
683 'search_box' => true,
684 'search' => array("stock_id", "c.description","s.description"),
685 'search_submit' => get_company_pref('no_item_list')!=0,
687 'select_submit'=> $submit_on_change
692 function stock_purchasable_items_list_cells($label, $name, $selected_id,
693 $all_option=false, $submit_on_change=false)
696 echo "<td>$label</td>\n";
697 $ret = stock_purchasable_items_list($name, $selected_id, $all_option,
698 $submit_on_change, array('cells'=>true) );
702 function stock_purchasable_items_list_row($label, $name, $selected_id,
703 $all_option=false, $submit_on_change=false)
706 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id,
707 $all_option, $submit_on_change);
712 //------------------------------------------------------------------------------------
714 function stock_item_types_list_row($label, $name, $selected_id, $enabled=true)
716 default_focus($name);
719 echo "<td>$label</td>\n";
722 $sel = "<select name='$name' onchange='this.form.submit();'>\n";
724 $sel = "<select disabled name='$name'>\n";
725 if ($selected_id == null)
726 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
727 if ($selected_id == "")
728 $_POST[$name] = $selected_id = "B";
729 $sel .= "<option " . ($selected_id == 'M'?" selected ":"") . " value='M'>" . _("Manufactured"). "</option>\n";
730 $sel .= "<option " . ($selected_id == 'B'?" selected ":"") . " value='B'>" . _("Purchased"). "</option>\n";
731 $sel .= "<option " . ($selected_id == 'D'?" selected ":"") . " value='D'>" . _("Service"). "</option>\n";
738 function stock_units_list_row($label, $name, $value, $enabled=true)
742 default_focus($name);
743 $result = get_all_item_units();
744 echo "<tr><td>$label</td>\n";
746 echo "<td><select name='$name'>";
748 echo "<td><select disabled name='$name'>";
751 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
753 while($unit = db_fetch($result))
757 $_POST[$name] = $unit['abbr'];
759 $descr = $unit['name'];
760 if ($value==$unit['abbr'])
762 echo "<option selected value='".$unit['abbr']."'>$descr</option>\n";
766 echo "<option value='".$unit['abbr']."'>$descr</option>\n";
769 echo "</select></td></tr>\n";
772 //------------------------------------------------------------------------------------
774 function tax_types_list($name, $selected_id, $none_option=false, $submit_on_change=false)
778 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
780 return combo_input($name, $selected_id, $sql, 'id', 'name',
782 'spec_option' => $none_option,
783 'spec_id' => $all_items,
784 'select_submit'=> $submit_on_change,
789 function tax_types_list_cells($label, $name, $selected_id, $none_option=false,
790 $submit_on_change=false)
793 echo "<td>$label</td>\n";
795 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
800 function tax_types_list_row($label, $name, $selected_id, $none_option=false,
801 $submit_on_change=false)
804 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
809 //------------------------------------------------------------------------------------
811 function tax_groups_list($name, $selected_id,
812 $none_option=false, $submit_on_change=false)
816 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
818 return combo_input($name, $selected_id, $sql, 'id', 'name',
821 'spec_option' => $none_option,
822 'spec_id' => $all_items,
823 'select_submit'=> $submit_on_change,
828 function tax_groups_list_cells($label, $name, $selected_id, $submit_on_change=false)
831 echo "<td>$label</td>\n";
833 $str = tax_groups_list($name, $selected_id, false, $submit_on_change);
838 function tax_groups_list_row($label, $name, $selected_id, $submit_on_change=false)
841 $str = tax_groups_list_cells($label, $name, $selected_id, false, $submit_on_change);
846 //------------------------------------------------------------------------------------
848 function item_tax_types_list($name, $selected_id)
850 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
851 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
854 function item_tax_types_list_cells($label, $name, $selected_id)
857 echo "<td>$label</td>\n";
859 item_tax_types_list($name, $selected_id);
863 function item_tax_types_list_row($label, $name, $selected_id)
866 item_tax_types_list_cells($label, $name, $selected_id);
870 //------------------------------------------------------------------------------------
872 function shippers_list($name, $selected_id)
874 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
875 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
878 function shippers_list_cells($label, $name, $selected_id)
881 echo "<td>$label</td>\n";
883 shippers_list($name, $selected_id);
887 function shippers_list_row($label, $name, $selected_id)
890 shippers_list_cells($label, $name, $selected_id);
894 //-------------------------------------------------------------------------------------
896 function sales_persons_list($name, $selected_id)
898 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
899 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
902 function sales_persons_list_cells($label, $name, $selected_id)
905 echo "<td>$label</td>\n";
907 sales_persons_list($name, $selected_id);
911 function sales_persons_list_row($label, $name, $selected_id, $submit_on_change=false)
914 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
918 //------------------------------------------------------------------------------------
920 function sales_areas_list($name, $selected_id)
922 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
923 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
926 function sales_areas_list_cells($label, $name, $selected_id)
929 echo "<td>$label</td>\n";
931 sales_areas_list($name, $selected_id);
935 function sales_areas_list_row($label, $name, $selected_id)
938 sales_areas_list_cells($label, $name, $selected_id);
942 //------------------------------------------------------------------------------------
944 function workorders_list($name, $selected_id)
946 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
947 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
950 function workorders_list_cells($label, $name, $selected_id)
953 echo "<td>$label</td>\n";
955 workorders_list($name, $selected_id);
959 function workorders_list_row($label, $name, $selected_id)
962 workorders_list_cells($label, $name, $selected_id);
966 //------------------------------------------------------------------------------------
968 function payment_terms_list($name, $selected_id)
970 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
971 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
974 function payment_terms_list_cells($label, $name, $selected_id)
977 echo "<td>$label</td>\n";
979 payment_terms_list($name, $selected_id);
983 function payment_terms_list_row($label, $name, $selected_id)
986 payment_terms_list_cells($label, $name, $selected_id);
990 //------------------------------------------------------------------------------------
992 function credit_status_list($name, $selected_id)
994 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
995 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
998 function credit_status_list_cells($label, $name, $selected_id)
1001 echo "<td>$label</td>\n";
1003 credit_status_list($name, $selected_id);
1007 function credit_status_list_row($label, $name, $selected_id)
1010 credit_status_list_cells($label, $name, $selected_id);
1014 //-----------------------------------------------------------------------------------------------
1016 function sales_types_list($name, $selected_id, $submit_on_change=false, $special_option=false)
1020 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
1022 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
1024 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1026 'select_submit'=> $submit_on_change,
1027 // 'async' => false,
1031 function sales_types_list_cells($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1034 echo "<td>$label</td>\n";
1036 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1041 function sales_types_list_row($label, $name, $selected_id, $submit_on_change=false, $special_option=false)
1044 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1049 //-----------------------------------------------------------------------------------------------
1051 function movement_types_list($name, $selected_id)
1053 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1054 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1057 function movement_types_list_cells($label, $name, $selected_id)
1060 echo "<td>$label</td>\n";
1062 movement_types_list($name, $selected_id);
1066 function movement_types_list_row($label, $name, $selected_id)
1069 movement_types_list_cells($label, $name, $selected_id);
1073 //-----------------------------------------------------------------------------------------------
1075 function bank_trans_types_list($name, $selected_id)
1077 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1078 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1081 function bank_trans_types_list_cells($label, $name, $selected_id)
1084 echo "<td>$label</td>\n";
1086 bank_trans_types_list($name, $selected_id);
1090 function bank_trans_types_list_row($label, $name, $selected_id)
1093 bank_trans_types_list_cells($label, $name, $selected_id);
1097 //-----------------------------------------------------------------------------------------------
1099 function workcenter_list($name, $selected_id, $all_option=false)
1103 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1105 return combo_input($name, $selected_id, $sql, 'id', 'name',
1107 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1108 'spec_id' => $all_items,
1112 function workcenter_list_cells($label, $name, $selected_id, $all_option=false)
1114 default_focus($name);
1116 echo "<td>$label</td>\n";
1118 workcenter_list($name, $selected_id, $all_option);
1122 function workcenter_list_row($label, $name, $selected_id, $all_option=false)
1125 workcenter_list_cells($label, $name, $selected_id, $all_option);
1129 //-----------------------------------------------------------------------------------------------
1131 function bank_accounts_list($name, $selected_id, $submit_on_change=false)
1133 $sql = "SELECT ".TB_PREF."bank_accounts.account_code, bank_account_name, bank_curr_code
1134 FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master
1135 WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1137 return combo_input($name, $selected_id, $sql, 'account_code', 'bank_account_name',
1139 'format' => '_format_add_curr',
1140 'select_submit'=> $submit_on_change,
1145 function bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change=false)
1148 echo "<td>$label</td>\n";
1150 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1155 function bank_accounts_list_row($label, $name, $selected_id, $submit_on_change=false)
1158 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1163 //-----------------------------------------------------------------------------------------------
1165 function class_list($name, $selected_id, $submit_on_change=false)
1167 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1169 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1171 'select_submit'=> $submit_on_change,
1177 function class_list_cells($label, $name, $selected_id, $submit_on_change=false)
1180 echo "<td>$label</td>\n";
1182 $str = class_list($name, $selected_id, $submit_on_change);
1187 function class_list_row($label, $name, $selected_id, $submit_on_change=false)
1190 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1195 //-----------------------------------------------------------------------------------------------
1197 function stock_categories_list($name, $selected_id)
1199 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1200 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1201 array('order'=>'category_id'));
1204 function stock_categories_list_cells($label, $name, $selected_id)
1207 echo "<td>$label</td>\n";
1209 stock_categories_list($name, $selected_id);
1213 function stock_categories_list_row($label, $name, $selected_id)
1216 stock_categories_list_cells($label, $name, $selected_id);
1220 //-----------------------------------------------------------------------------------------------
1222 function gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric)
1226 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1228 combo_input($name, $selected_id, $sql, 'id', 'name',
1231 'spec_option' =>$all_option,
1232 'spec_id' => $all_option_numeric ? 0 : $all_items
1236 function gl_account_types_list_cells($label, $name, $selected_id, $all_option=false,
1237 $all_option_numeric=false)
1240 echo "<td>$label</td>\n";
1242 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1246 function gl_account_types_list_row($label, $name, $selected_id, $all_option=false,
1247 $all_option_numeric=false)
1250 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1251 $all_option_numeric);
1255 //-----------------------------------------------------------------------------------------------
1256 function gl_all_accounts_list($name, $selected_id, $skip_bank_accounts=false,
1257 $show_group=false, $cells=false)
1259 if ($skip_bank_accounts)
1260 $sql = "SELECT chart.account_code, chart.account_name, type.name
1261 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1262 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1263 ."ON chart.account_code=acc.account_code
1264 WHERE acc.account_code IS NULL
1265 AND chart.account_type=type.id";
1267 $sql = "SELECT chart.account_code, chart.account_name, type.name
1268 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1269 WHERE chart.account_type=type.id";
1271 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1273 'format' => '_format_account' . ($show_group ? '2' : ''),
1274 'order' => 'account_code',
1275 'search_box' => $cells,
1276 'search_submit' => false,
1284 function _format_account($row)
1286 return $row[0] . " " . $row[1];
1289 function _format_account2($row)
1291 return $row[0] . " " . $row[2] . " " . $row[1];
1294 function gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts=false,
1295 $show_group=false, $cells=false)
1298 echo "<td>$label</td>\n";
1300 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells);
1304 function gl_all_accounts_list_row($label, $name, $selected_id, $skip_bank_accounts=false,
1305 $show_group=false, $cells=false)
1308 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1309 $show_group, $cells);
1313 function yesno_list($name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1315 default_focus($name);
1316 if ($submit_on_change == true)
1317 echo "<select name='$name' onchange='this.form.submit();'>"; // FIX ajax
1319 echo "<select name='$name'>";
1321 if (strlen($name_yes) == 0)
1325 if (strlen($name_no) == 0)
1330 if ($selected_id == null)
1331 $selected_id = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1332 if ($selected_id == 0)
1333 echo "<option value=1>";
1335 echo "<option selected value=1>";
1336 if (!isset($name_yes))
1337 echo _("Yes") . "</option>\n";
1339 echo $name_yes . "</option>\n";
1340 if ($selected_id == 0)
1341 echo "<option selected value=0>";
1343 echo "<option value=0>";
1344 if (!isset($name_no))
1345 echo _("No") . "</option>\n";
1347 echo $name_no . "</option>\n";
1351 function yesno_list_cells($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1354 echo "<td>$label</td>\n";
1356 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1361 function yesno_list_row($label, $name, $selected_id, $name_yes="", $name_no="", $submit_on_change=false)
1364 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1369 //------------------------------------------------------------------------------------------------
1371 function languages_list($name, $selected_id)
1373 global $installed_languages;
1375 default_focus($name);
1376 echo "<select name='$name'>";
1378 if ($selected_id == null)
1379 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1380 foreach ($installed_languages as $lang)
1383 if ($selected_id == $lang['code'])
1385 echo "value='" . $lang['code'] . "'>" . $lang['name'] . "</option>\n";
1389 function languages_list_cells($label, $name, $selected_id)
1392 echo "<td>$label</td>\n";
1394 languages_list($name, $selected_id);
1398 function languages_list_row($label, $name, $selected_id)
1401 languages_list_cells($label, $name, $selected_id);
1405 //------------------------------------------------------------------------------------------------
1407 function bank_account_types_list($name, $selected_id)
1409 $bank_account_types = bank_account_types::get_all();
1411 default_focus($name);
1412 echo "<select name='$name'>";
1414 if ($selected_id == null)
1415 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1416 foreach ($bank_account_types as $type)
1419 if ($selected_id == "" || $selected_id == $type['id'])
1421 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1425 function bank_account_types_list_cells($label, $name, $selected_id)
1428 echo "<td>$label</td>\n";
1430 bank_account_types_list($name, $selected_id);
1434 function bank_account_types_list_row($label, $name, $selected_id)
1437 bank_account_types_list_cells($label, $name, $selected_id);
1441 //------------------------------------------------------------------------------------------------
1443 function payment_person_types_list($name, $selected_id, $related=null)
1445 $types = payment_person_types::get_all();
1447 default_focus($name);
1448 echo "<select name='$name'";
1449 if ($related) // FIX ajax
1450 echo " onchange='this.form.$related.value=\"\"; this.form.submit();' ";
1453 if ($selected_id == null)
1454 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1455 foreach ($types as $type)
1457 if (payment_person_types::has_items($type['id']))
1459 if ($selected_id == "")
1460 $_POST[$name] = $selected_id = $type['id'];
1462 if ($selected_id == $type['id'])
1464 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1469 function payment_person_types_list_cells($label, $name, $selected_id, $related=null)
1472 echo "<td>$label</td>\n";
1474 $str = payment_person_types_list($name, $selected_id, $related);
1479 function payment_person_types_list_row($label, $name, $selected_id, $related=null)
1482 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1487 //------------------------------------------------------------------------------------------------
1489 function wo_types_list($name, $selected_id)
1491 $types = wo_types::get_all();
1493 default_focus($name); // FIX ajax
1494 echo "<select name='$name' onchange='this.form.submit();'>";
1496 if ($selected_id == null)
1497 $selected_id = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1498 foreach ($types as $type)
1501 if ($selected_id == $type['id'])
1503 echo "value='" . $type['id'] . "'>" . $type['name'] . "</option>\n";
1508 function wo_types_list_row($label, $name, $selected_id)
1510 echo "<tr><td>$label</td><td>\n";
1511 $str = wo_types_list($name, $selected_id);
1512 echo "</td></tr>\n";
1516 //------------------------------------------------------------------------------------------------
1518 function dateformats_list_row($label, $name, $value)
1520 global $dateformats;
1522 default_focus($name);
1523 echo "<tr><td>$label</td>\n";
1524 echo "<td><select name='$name'>";
1527 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1529 foreach ($dateformats as $df)
1532 if ($value==$counter)
1534 echo "<option selected value='$counter'>$df</option>\n";
1538 echo "<option value='$counter'>$df</option>\n";
1542 echo "</select></td></tr>\n";
1545 function dateseps_list_row($label, $name, $value)
1549 default_focus($name);
1550 echo "<tr><td>$label</td>\n";
1551 echo "<td><select name='$name'>";
1554 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1556 foreach ($dateseps as $ds)
1559 if ($value==$counter)
1561 echo "<option selected value='$counter'>$ds</option>\n";
1565 echo "<option value='$counter'>$ds</option>\n";
1569 echo "</select></td></tr>\n";
1572 function thoseps_list_row($label, $name, $value)
1576 default_focus($name);
1577 echo "<tr><td>$label</td>\n";
1578 echo "<td><select name='$name'>";
1581 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1583 foreach ($thoseps as $ts)
1586 if ($value==$counter)
1588 echo "<option selected value='$counter'>$ts</option>\n";
1592 echo "<option value='$counter'>$ts</option>\n";
1596 echo "</select></td></tr>\n";
1599 function decseps_list_row($label, $name, $value)
1603 default_focus($name);
1604 echo "<tr><td>$label</td>\n";
1605 echo "<td><select name='$name'>";
1608 $value = (!isset($_POST[$name]) ? 0 : $_POST[$name]);
1610 foreach ($decseps as $ds)
1613 if ($value==$counter)
1615 echo "<option selected value='$counter'>$ds</option>\n";
1619 echo "<option value='$counter'>$ds</option>\n";
1623 echo "</select></td></tr>\n";
1626 function themes_list_row($label, $name, $value)
1628 global $path_to_root;
1630 default_focus($name);
1631 $path = $path_to_root.'/themes/';
1633 $themedir = opendir($path);
1634 while(false !== ($fname = readdir($themedir)))
1636 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1642 echo "<tr><td>$label</td>\n";
1643 echo "<td><select name='$name'>";
1646 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1647 foreach ($themes as $th)
1652 echo "<option selected value='$th'>$th</option>\n";
1656 echo "<option value='$th'>$th</option>\n";
1659 echo "</select></td></tr>\n";
1662 function pagesizes_list_row($label, $name, $value)
1666 default_focus($name);
1667 echo "<tr><td>$label</td>\n";
1668 echo "<td><select name='$name'>";
1671 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1672 foreach ($pagesizes as $pz)
1677 echo "<option selected value='$pz'>$pz</option>\n";
1681 echo "<option value='$pz'>$pz</option>\n";
1684 echo "</select></td></tr>\n";
1687 function security_headings_list_row($label, $name, $value)
1689 global $security_headings;
1691 default_focus($name);
1692 echo "<tr><td>$label</td>\n";
1693 echo "<td><select name='$name'>";
1696 $value = (!isset($_POST[$name]) ? 0 : (int)$_POST[$name]);
1698 foreach ($security_headings as $sh)
1701 if ($value==$counter)
1703 echo "<option selected value='$counter'>$sh</option>\n";
1707 echo "<option value='$counter'>$sh</option>\n";
1711 echo "</select></td></tr>\n";
1714 function systypes_list_cells($label, $name, $value, $submit_on_change=false)
1716 global $systypes_array;
1718 default_focus($name);
1720 echo "<td>$label</td>\n";
1721 echo "<td><select name='$name'";
1722 if ($submit_on_change)
1723 echo " onchange='this.form.submit();'>"; // FIX ajax
1727 $value = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1728 foreach ($systypes_array as $key=>$type)
1733 echo "<option selected value='$key'>".$type['name']."</option>\n";
1737 echo "<option value='$key'>".$type['name']."</option>\n";
1740 echo "</select></td>\n";
1743 function systypes_list_row($label, $name, $value, $submit_on_change=false)
1746 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1751 function cust_allocations_list_cells($label, $name, $selected)
1754 default_focus($name);
1757 if ($selected == null)
1758 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1759 echo "<td><select name='$name'>";
1760 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1761 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Sales Invoices"). "</option>\n";
1762 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1763 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1764 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1765 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Delivery Notes"). "</option>\n";
1766 echo "</select></td>\n";
1769 function supp_allocations_list_cells($name, $selected)
1773 default_focus($name);
1774 if ($selected == null)
1775 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1776 echo "<td><select name='$name'>";
1777 echo "<option " . ($selected == $all_items ? " selected " : "") . " value='$all_items'>" . _("All Types"). "</option>\n";
1778 echo "<option " . ($selected == '1'?" selected ":"") . " value='1'>" . _("Invoices"). "</option>\n";
1779 echo "<option " . ($selected == '2'?" selected ":"") . " value='2'>" . _("Overdue Invoices"). "</option>\n";
1780 echo "<option " . ($selected == '3'?" selected ":"") . " value='3'>" . _("Payments"). "</option>\n";
1781 echo "<option " . ($selected == '4'?" selected ":"") . " value='4'>" . _("Credit Notes"). "</option>\n";
1782 echo "<option " . ($selected == '5'?" selected ":"") . " value='5'>" . _("Overdue Credit Notes"). "</option>\n";
1783 echo "</select></td>\n";
1786 function policy_list_cells($label, $name, $selected)
1788 default_focus($name);
1789 if ($selected == null)
1791 $selected = (!isset($_POST[$name]) ? "" : $_POST[$name]);
1792 if ($selected == "")
1793 $_POST[$name] = $selected;
1797 echo "<td><select name='$name'>";
1798 echo "<option " . ($selected == ''?" selected ":"") . " value=''>" . _("Automatically put balance on back order"). "</option>\n";
1799 echo "<option " . ($selected == 'CAN'?" selected ":"") . " value='CAN'>" . _("Cancel any quantites not delivered"). "</option>\n";
1800 echo "</select></td>\n";
1803 function policy_list_row($label, $name, $selected)
1806 policy_list_cells($label, $name, $selected);
1810 function credit_type_list_cells($label, $name, $selected, $submit_on_change=false)
1812 default_focus($name);
1813 if ($selected == null)
1815 $selected = (!isset($_POST[$name]) ? "Return" : $_POST[$name]);
1816 if ($selected == "Return")
1817 $_POST[$name] = $selected;
1821 echo "<td><select name='$name'";
1822 if ($submit_on_change)
1823 echo " onchange='this.form.submit();'>"; // FIX ajax
1826 echo "<option " . ($selected == 'Return'?" selected ":"") . " value='Return'>" . _("Items Returned to Inventory Location"). "</option>\n";
1827 echo "<option " . ($selected == 'WriteOff'?" selected ":"") . " value='WriteOff'>" . _("Items Written Off"). "</option>\n";
1828 echo "</select></td>\n";
1831 function credit_type_list_row($label, $name, $selected, $submit_on_change=false)
1834 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1839 function number_list($name, $selected, $from, $to, $firstlabel="")
1841 default_focus($name);
1842 if ($selected == null)
1844 $selected = (!isset($_POST[$name]) ? $from : $_POST[$name]);
1845 if ($selected == $from)
1846 $_POST[$name] = $selected;
1848 echo "<select name='$name'>";
1849 for ($i = $from; $i <= $to; $i++)
1851 if ($i == 0 && $firstlabel != "")
1852 $label = $firstlabel;
1855 if ($selected == $i)
1857 echo "<option selected value='$i'>$label</option>\n";
1861 echo "<option value='$i'>$label</option>\n";
1867 function number_list_cells($label, $name, $selected, $from, $to)
1872 number_list($name, $selected, $from, $to);
1876 function number_list_row($label, $name, $selected, $from, $to)
1879 number_list_cells($label, $name, $selected, $from, $to);