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 %s type='submit' class='combo_submit' style='border:0;background:url($path_to_root/themes/"
9 ."%s/images/locate.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Set filter")."'> ";
11 $_select_button = "<input %s type='submit' class='combo_select' style='border:0;background:url($path_to_root/themes/"
12 ."%s/images/button_ok.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Select")."'> ";
14 $all_items = reserved_words::get_all();
16 //----------------------------------------------------------------------------
17 // Universal sql 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 'default' => '', // default value when $_POST is not set
34 'select_submit' => false, //submit on select: true/false
35 'edit_submit' => false, // call editor on F4
36 'async' => true, // select update via ajax (true) vs _page_body reload
37 // search box parameters
39 'search_box' => false, // name or true/false
40 'type' => 0, // type of extended selector:
41 // 0 - with (optional) visible search box, search by id
42 // 1 - with hidden search box, search by option text
43 // 2 - TODO reverse: box with hidden selector available via enter; this
44 // would be convenient for optional ad hoc adding of new item
45 'search_submit' => true, //search submit button: true/false
46 'size' => 8, // size and max of box tag
48 'cells' => false, // combo displayed as 2 <td></td> cells
49 'search' => array(), // sql field names to search
50 'format' => null, // format functions for regular options
52 'box_hint' => null // box/selectors hints; null = std see below
54 // ------ merge options with defaults ----------
56 $opts = array_merge($opts, $options);
57 if (!is_array($opts['where'])) $opts['where'] = array($opts['where']);
59 $search_box = $opts['search_box']===true ? '_'.$name.'_edit' : $opts['search_box'];
60 $search_submit = $opts['search_submit']===true ? '_'.$name.'_button' : $opts['search_submit'];
61 $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit'];
62 $spec_id = $opts['spec_id'];
63 $spec_option = $opts['spec_option'];
64 $by_id = ($opts['type'] == 0);
65 $class = $by_id ? 'combo':'combo2';
66 $disabled = $opts['disabled'] ? "disabled" : '';
68 if(!count($opts['search'])) {
69 $opts['search'] = array($by_id ? $valfield : $namefield);
71 if ($opts['sel_hint'] === null)
72 $opts['sel_hint'] = $by_id || $search_box==false ?
73 '' : _('Press Space tab for search pattern entry');
75 if ($opts['box_hint'] === null)
76 $opts['box_hint'] = $search_box && $search_submit != false ?
77 ($by_id ? _('Enter code fragment to search or * for all')
78 : _('Enter description fragment to search or * for all')) :'';
80 if ($selected_id == null) {
81 $selected_id = get_post($name, $opts['default']);
83 $txt = get_post($search_box);
87 if (isset($_POST[$select_submit])) {
88 if ($by_id) $txt = $_POST[$name];
91 $Ajax->activate('_page_body');
93 $Ajax->activate($name);
96 // search related sql modifications
98 $rel = "rel='$search_box'"; // set relation to list
99 if ($opts['search_submit']) {
100 if (isset($_POST[$search_submit])) {
101 $selected_id = ''; // ignore selected_id while search
103 $Ajax->activate('_page_body');
105 $Ajax->activate($name);
108 if ($spec_option === false && $selected_id==null)
111 $opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
116 foreach($opts['search'] as $i=> $s)
117 $opts['search'][$i] = $s . " LIKE '%{$txt}%'";
118 $opts['where'][] = '('. implode($opts['search'], ' OR ') . ')';
123 if (count($opts['where'])) {
124 $where = strpos($sql, 'WHERE')==false ? ' WHERE ':' AND ';
125 $where .= '('. implode($opts['where'], ' AND ') . ')';
126 $group_pos = strpos($sql, 'GROUP BY');
128 $group = substr($sql, $group_pos);
129 $sql = substr($sql, 0, $group_pos) . $where.' '.$group;
134 if ($opts['order'] != false) {
135 $sql .= ' ORDER BY '.$opts['order'];
139 // ------ make selector ----------
140 $selector = $first_opt = '';
143 //if($name=='stock_id') display_error($sql);
144 if($result = db_query($sql)) {
145 while ($contact_row = db_fetch($result)) {
146 $value = $contact_row[0];
147 $descr = $opts['format']==null ? $contact_row[1] :
148 call_user_func($opts['format'], $contact_row);
150 if (get_post($search_submit) && ($txt === $value)) {
151 $selected_id = $value;
153 if ((string)($selected_id) === $value) {
157 if ($first_id === false) {
161 $selector .= "<option $sel value='$value'>$descr</option>\n";
163 db_free_result($result);
166 // Prepend special option.
167 if ($spec_option !== false) { // if special option used - add it
168 $first_id = $spec_id;
169 $first_opt = $spec_option;
170 $sel = $found===false ? 'selected' : '';
171 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
175 if ($found === false) {
176 $selected_id = $first_id;
178 $_POST[$name] = $selected_id;
180 if ($by_id && $search_box != false) {
182 $Ajax->addUpdate($name, $search_box, $txt ? $txt : '');
184 $aspect = $opts['edit_submit'] ? " aspect='editable'" : '';
185 $selector = "<select $disabled name='$name' class='$class' title='"
186 . $opts['sel_hint']."'$aspect $rel>".$selector."</select>\n";
188 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
190 // because of bug which M$ cannot fix since IE 5.0
191 // we must embed whole selector in span tags to enable proper ajax update
192 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
194 if ($select_submit != false) { // if submit on change is used - add select button
195 global $_select_button;
196 // button class selects form reload/ajax selector update
197 $selector .= sprintf($_select_button, $disabled, user_theme(),
198 (fallback_mode() ? '' : 'display:none;'),
199 $select_submit)."\n";
201 // ------ make combo ----------
204 if ($search_box != false) {
205 $edit_entry = "<input $disabled type='text' name='$search_box' id='$search_box' size='".
206 $opts['size']."' maxlength='".$opts['max'].
207 "' value='$txt' class='$class' rel='$name' autocomplete='off' title='"
208 .$opts['box_hint']."'"
209 .(!fallback_mode() && !$by_id ? " style=display:none;":'')
211 if ($search_submit != false) {
212 global $_search_button;
213 $edit_entry .= sprintf($_search_button, $disabled, user_theme(),
214 (fallback_mode() ? '' : 'display:none;'),
215 $search_submit)."\n";
218 default_focus($name);
220 if ($search_box && $opts['cells'])
221 echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
223 echo $edit_entry.$selector;
230 Returns true if selector $name is subject to update.
232 function list_updated($name)
234 return isset($_POST['_'.$name.'_update']) || isset($_POST['_'.$name.'_button']);
236 //----------------------------------------------------------------------------------------------
237 // Universal array combo generator
238 // $items is array of options 'value' => 'description'
239 // Options is reduced set of combo_selector options and is merged with defaults.
241 function array_selector($name, $selected_id, $items, $options=null)
245 $opts = array( // default options
246 'spec_option'=>false, // option text or false
247 'spec_id' => 0, // option id
248 'select_submit' => false, //submit on select: true/false
249 'edit_submit' => false, // call editor on F4
250 'async' => true, // select update via ajax (true) vs _page_body reload
251 'default' => '', // default value when $_POST is not set
252 // search box parameters
256 // ------ merge options with defaults ----------
258 $opts = array_merge($opts, $options);
259 $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit'];
260 $spec_id = $opts['spec_id'];
261 $spec_option = $opts['spec_option'];
262 $disabled = $opts['disabled'] ? "disabled" : '';
264 if ($selected_id == null) {
265 $selected_id = get_post($name, $opts['default']);
268 if (isset($_POST[$select_submit])) {
270 $Ajax->activate('_page_body');
272 $Ajax->activate($name);
275 // ------ make selector ----------
276 $selector = $first_opt = '';
279 //if($name=='SelectStockFromList') display_error($sql);
280 foreach($items as $value=>$descr) {
282 if ($selected_id == $value) {
286 if ($first_id === false) {
290 $selector .= "<option $sel value='$value'>$descr</option>\n";
293 // Prepend special option.
294 if ($spec_option !== false) { // if special option used - add it
295 $first_id = $spec_id;
296 $first_opt = $spec_option;
297 $sel = $found===false ? 'selected' : '';
298 $selector = "<option $sel value='$spec_id'>$spec_option</option>\n"
302 if ($found === false) {
303 $_POST[$name] = $first_id;
306 $aspect = $opts['edit_submit'] ? " aspect='editable'" : '';
307 $selector = "<select $disabled name='$name' class='combo' title='"
308 . $opts['sel_hint']."'$aspect >".$selector."</select>\n";
310 $Ajax->addUpdate($name, "_{$name}_sel", $selector);
312 $selector = "<span id='_{$name}_sel'>".$selector."</span>\n";
314 if ($select_submit != false) { // if submit on change is used - add select button
315 global $_select_button;
316 $selector .= sprintf($_select_button, $disabled, user_theme(),
317 (fallback_mode() ? '' : 'display:none;'),
318 $select_submit)."\n";
320 default_focus($name);
325 //----------------------------------------------------------------------------------------------
327 function _format_add_curr($row)
329 static $company_currency;
331 if ($company_currency == null)
333 $company_currency = get_company_currency();
335 return $row[1] . ($row[2] == $company_currency ?
336 '' : (" - " . $row[2]));
339 function supplier_list($name, $selected_id=null, $spec_option=false, $submit_on_change=false)
343 $sql = "SELECT supplier_id, supp_name, curr_code FROM ".TB_PREF."suppliers ";
345 $mode = get_company_pref('no_supplier_list');
347 return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
349 'format' => '_format_add_curr',
350 'search_box' => $mode!=0,
351 'edit_submit' => true,
353 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
354 'spec_id' => $all_items,
355 'select_submit'=> $submit_on_change,
357 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') :
362 function supplier_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
365 echo "<td>$label</td><td>\n";
366 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change);
371 function supplier_list_row($label, $name, $selected_id=null, $all_option = false, $submit_on_change=false)
373 echo "<tr><td>$label</td><td>";
374 $str = supplier_list($name, $selected_id, $all_option, $submit_on_change );
378 //----------------------------------------------------------------------------------------------
380 function customer_list($name, $selected_id=null, $spec_option=false, $submit_on_change=false)
384 $sql = "SELECT debtor_no, name, curr_code FROM ".TB_PREF."debtors_master ";
386 $mode = get_company_pref('no_customer_list');
388 return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
390 'format' => '_format_add_curr',
391 'search_box' => $mode!=0,
394 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option,
395 'spec_id' => $all_items,
396 'select_submit'=> $submit_on_change,
397 'edit_submit' => true, // call editor on F4
399 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment; F4 - entry new customer') :
404 function customer_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
407 echo "<td>$label</td>\n";
409 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
414 function customer_list_row($label, $name, $selected_id=null, $all_option = false, $submit_on_change=false)
416 echo "<tr><td>$label</td><td nowrap>";
417 $str = customer_list($name, $selected_id, $all_option, $submit_on_change);
418 echo "</td>\n</tr>\n";
422 //------------------------------------------------------------------------------------------------
424 function customer_branches_list($customer_id, $name, $selected_id=null,
425 $spec_option = true, $enabled=true, $submit_on_change=false)
429 $sql = "SELECT branch_code, br_name FROM ".TB_PREF."cust_branch
430 WHERE debtor_no='" . $customer_id . "' ";
432 $where = $enabled ? array("disable_trans = 0") : array();
433 return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
436 'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
437 'spec_id' => $all_items,
438 'select_submit'=> $submit_on_change,
439 'sel_hint' => _('Select customer branch')
442 //------------------------------------------------------------------------------------------------
444 function customer_branches_list_cells($label,$customer_id, $name, $selected_id=null, $all_option = true, $enabled=true, $submit_on_change=false)
447 echo "<td>$label</td>\n";
449 $ret = customer_branches_list($customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
454 function customer_branches_list_row($label,$customer_id, $name, $selected_id=null, $all_option = true, $enabled=true, $submit_on_change=false)
457 $ret = customer_branches_list_cells($label, $customer_id, $name, $selected_id, $all_option, $enabled, $submit_on_change);
462 //------------------------------------------------------------------------------------------------
464 function locations_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
468 $sql = "SELECT loc_code, location_name FROM ".TB_PREF."locations";
470 return combo_input($name, $selected_id, $sql, 'loc_code', 'location_name',
472 'spec_option' => $all_option === true ? _("All Locations") : $all_option,
473 'spec_id' => $all_items,
474 'select_submit'=> $submit_on_change
478 function locations_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
481 echo "<td>$label</td>\n";
483 $str = locations_list($name, $selected_id, $all_option, $submit_on_change);
488 function locations_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
491 $str = locations_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
496 //-----------------------------------------------------------------------------------------------
498 function currencies_list($name, $selected_id=null, $submit_on_change=false)
500 $sql = "SELECT curr_abrev, currency FROM ".TB_PREF."currencies";
502 // default to the company currency
504 return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency',
506 'select_submit'=> $submit_on_change,
507 'default' => get_company_currency(),
512 function currencies_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
515 echo "<td>$label</td>\n";
517 $str = currencies_list($name, $selected_id, $submit_on_change);
522 function currencies_list_row($label, $name, $selected_id=null, $submit_on_change=false)
525 $str = currencies_list_cells($label, $name, $selected_id, $submit_on_change);
530 //---------------------------------------------------------------------------------------------------
532 function fiscalyears_list($name, $selected_id=null, $submit_on_change=false)
535 $sql = "SELECT * FROM ".TB_PREF."fiscal_year";
537 // default to the company current fiscal year
539 return combo_input($name, $selected_id, $sql, 'id', '',
542 'default' => get_company_pref('f_year'),
543 'format' => '_format_fiscalyears',
544 'select_submit'=> $submit_on_change,
549 function _format_fiscalyears($row)
551 return sql2date($row[1]) . " - " . sql2date($row[2])
552 . " " . ($row[3] ? _('Closed') : _('Active')) . "</option>\n";
555 function fiscalyears_list_cells($label, $name, $selected_id=null)
558 echo "<td>$label</td>\n";
560 $str = fiscalyears_list($name, $selected_id);
565 function fiscalyears_list_row($label, $name, $selected_id=null)
568 $str = fiscalyears_list_cells($label, $name, $selected_id);
572 //------------------------------------------------------------------------------------
574 function dimensions_list($name, $selected_id=null, $no_option=false, $showname=' ',
575 $submit_on_change=false, $showclosed=false, $showtype=1)
577 $sql = "SELECT id, CONCAT(reference,' ',name) as ref FROM ".TB_PREF."dimensions";
580 'order' => 'reference',
581 'spec_option'=>$no_option ? $showname : false,
583 'select_submit'=> $submit_on_change,
588 $options['where'][] = "closed=0";
590 $options['where'][] = "type_=$showtype";
592 return combo_input($name, $selected_id, $sql, 'id', 'ref', $options);
595 function dimensions_list_cells($label, $name, $selected_id=null, $no_option=false, $showname=null,
596 $showclosed=false, $showtype=0, $submit_on_change=false)
599 echo "<td>$label</td>\n";
601 $str = dimensions_list($name, $selected_id, $no_option, $showname, $submit_on_change, $showclosed, $showtype);
606 function dimensions_list_row($label, $name, $selected_id=null, $no_option=false, $showname=null,
607 $showclosed=false, $showtype=0, $submit_on_change=false)
610 $str = dimensions_list_cells($label, $name, $selected_id, $no_option, $showname,
611 $showclosed, $showtype, $submit_on_change);
616 //---------------------------------------------------------------------------------------------------
618 function stock_items_list($name, $selected_id=null, $all_option=false, $submit_on_change=false, $opts=array())
622 $sql = "SELECT stock_id, s.description, c.description
623 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE s.category_id=c.category_id";
625 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
628 'format' => '_format_stock_items',
629 'spec_option' => $all_option===true ? _("All Items") : $all_option,
630 'spec_id' => $all_items,
631 'search_box' => true,
632 'search' => array("stock_id", "c.description","s.description"),
633 'search_submit' => get_company_pref('no_item_list')!=0,
635 'select_submit'=> $submit_on_change
639 function _format_stock_items($row)
641 return (user_show_codes() ? ($row[0] . " - ") : "")
642 . $row[2] . " - " . $row[1];
645 function stock_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
648 echo "<td>$label</td>\n";
649 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
650 array('cells'=>true));
654 function stock_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
657 $str = stock_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
662 //---------------------------------------------------------------------------------------------------
664 // Select item via foreign code.
666 function sales_items_list($name, $selected_id=null, $all_option=false,
667 $submit_on_change=false, $type='', $opts=array())
671 $sql = "SELECT i.item_code, i.description, c.description, count(*)>1 as kit
673 ".TB_PREF."item_codes i
675 ".TB_PREF."stock_category c
676 ON i.category_id=c.category_id";
678 if ($type == 'local') { // exclude foreign codes
679 $sql .= " WHERE NOT i.is_foreign";
680 } elseif ($type == 'kits') { // sales kits
681 $sql .= " WHERE NOT i.is_foreign
682 AND NOT i.item_code=i.stock_id";
685 $sql .= " GROUP BY i.item_code";
687 return combo_input($name, $selected_id, $sql, 'i.item_code', 'c.description',
690 'format' => '_format_stock_items',
691 'spec_option' => $all_option===true ? _("All Items") : $all_option,
692 'spec_id' => $all_items,
693 'search_box' => true,
694 'search' => array("i.item_code", "c.description"),
695 'search_submit' => get_company_pref('no_item_list')!=0,
697 'select_submit'=> $submit_on_change,
698 'order' => 'i.item_code'
702 function sales_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
705 echo "<td>$label</td>\n";
706 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
707 '', array('cells'=>true));
711 function sales_kits_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
713 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
714 'kits', array('cells'=>false));
718 function sales_local_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
722 echo "<td>$label</td>\n";
724 $str = sales_items_list($name, $selected_id, $all_option, $submit_on_change,
725 'local', array('cells'=>false));
729 //------------------------------------------------------------------------------------
731 function base_stock_items_list($where, $name, $selected_id=null,
732 $all_option=false, $submit_on_change=false)
736 $sql = "SELECT stock_id, s.description, c.description
737 FROM ".TB_PREF."stock_master s,".TB_PREF."stock_category c WHERE
738 s.category_id=c.category_id";
740 return combo_input($name, $selected_id, $sql, 'stock_id', 's.description',
742 'format' => '_format_stock_items',
743 'spec_option' => $all_option==true ? _("All Items") : $all_option,
744 'spec_id' => $all_items,
745 'select_submit'=> $submit_on_change,
749 //------------------------------------------------------------------------------------
751 function stock_bom_items_list($name, $selected_id=null, $all_option=false, $submit_on_change=false)
754 return base_stock_items_list("(s.mb_flag='M' OR s.mb_flag='K')",
755 $name, $selected_id, $all_option, $submit_on_change);
758 function stock_bom_items_list_cells($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
761 echo "<td>$label</td>\n";
763 $str = stock_bom_items_list($name, $selected_id, $all_option, $submit_on_change);
768 function stock_bom_items_list_row($label, $name, $selected_id=null, $all_option=false, $submit_on_change=false)
771 $str = stock_bom_items_list_cells($label, $name, $selected_id, $all_option, $submit_on_change);
776 //------------------------------------------------------------------------------------
778 function stock_manufactured_items_list($name, $selected_id=null,
779 $all_option=false, $submit_on_change=false)
781 return base_stock_items_list("s.mb_flag='M'",
782 $name, $selected_id, $all_option, $submit_on_change);
785 function stock_manufactured_items_list_cells($label, $name, $selected_id=null,
786 $all_option=false, $submit_on_change=false)
789 echo "<td>$label</td>\n";
791 $str = stock_manufactured_items_list($name, $selected_id, $all_option,
797 function stock_manufactured_items_list_row($label, $name, $selected_id=null,
798 $all_option=false, $submit_on_change=false)
801 $str = stock_manufactured_items_list_cells($label, $name, $selected_id,
802 $all_option, $submit_on_change);
806 //------------------------------------------------------------------------------------
808 function stock_component_items_list($name, $parent_stock_id, $selected_id=null,
809 $all_option=false, $submit_on_change=false)
811 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
812 array('where'=>array("stock_id != '$parent_stock_id'")));
816 function stock_component_items_list_cells($label, $name, $parent_stock_id,
817 $selected_id=null, $all_option=false, $submit_on_change=false)
820 echo "<td>$label</td>\n";
821 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
822 array('where'=>array("stock_id != '$parent_stock_id'"), 'cells'=>true));
825 //------------------------------------------------------------------------------------
827 function stock_costable_items_list($name, $selected_id=null,
828 $all_option=false, $submit_on_change=false)
830 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
831 array('where'=>array("mb_flag!='D'")));
835 function stock_costable_items_list_cells($label, $name, $selected_id=null,
836 $all_option=false, $submit_on_change=false)
839 echo "<td>$label</td>\n";
840 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
841 array('where'=>array("mb_flag!='D'"), 'cells'=>true));
845 //------------------------------------------------------------------------------------
846 function stock_purchasable_items_list($name, $selected_id=null,
847 $all_option=false, $submit_on_change=false)
849 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
850 array('where'=>array("mb_flag!= 'M'"),
851 'edit_submit' => true));
855 function stock_purchasable_items_list_cells($label, $name, $selected_id=null,
856 $all_option=false, $submit_on_change=false)
859 echo "<td>$label</td>\n";
860 $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change,
861 array('where'=>array("mb_flag!= 'M'"),
862 'edit_submit' => true,
867 function stock_purchasable_items_list_row($label, $name, $selected_id=null,
868 $all_option=false, $submit_on_change=false)
871 $ret = stock_purchasable_items_list_cells($label, $name, $selected_id=null,
872 $all_option, $submit_on_change);
877 //------------------------------------------------------------------------------------
879 function stock_item_types_list_row($label, $name, $selected_id=null, $enabled=true)
882 'M' => _("Manufactured"),
883 'B' => _("Purchased"),
889 echo "<td>$label</td>\n";
892 array_selector($name, $selected_id, $types,
894 'select_submit'=> true,
895 'disabled' => !$enabled) );
899 function stock_units_list_row($label, $name, $value=null, $enabled=true)
901 $result = get_all_item_units();
904 echo "<td>$label</td>\n";
907 while($unit = db_fetch($result))
908 $units[$unit['abbr']] = $unit['name'];
910 array_selector($name, $value, $units,
912 'select_submit'=> true,
913 'disabled' => !$enabled) );
918 //------------------------------------------------------------------------------------
920 function tax_types_list($name, $selected_id=null, $none_option=false, $submit_on_change=false)
922 $sql = "SELECT id, CONCAT(name, ' (',rate,'%)') as name FROM ".TB_PREF."tax_types";
924 return combo_input($name, $selected_id, $sql, 'id', 'name',
926 'spec_option' => $none_option,
927 'spec_id' => reserved_words::get_all_numeric(),
928 'select_submit'=> $submit_on_change,
933 function tax_types_list_cells($label, $name, $selected_id=null, $none_option=false,
934 $submit_on_change=false)
937 echo "<td>$label</td>\n";
939 $str = tax_types_list($name, $selected_id, $none_option, $submit_on_change);
944 function tax_types_list_row($label, $name, $selected_id=null, $none_option=false,
945 $submit_on_change=false)
948 $str = tax_types_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
953 //------------------------------------------------------------------------------------
955 function tax_groups_list($name, $selected_id=null,
956 $none_option=false, $submit_on_change=false)
958 $sql = "SELECT id, name FROM ".TB_PREF."tax_groups";
960 return combo_input($name, $selected_id, $sql, 'id', 'name',
963 'spec_option' => $none_option,
964 'spec_id' => reserved_words::get_all_numeric(),
965 'select_submit'=> $submit_on_change,
970 function tax_groups_list_cells($label, $name, $selected_id=null, $none_option=false, $submit_on_change=false)
973 echo "<td>$label</td>\n";
975 $str = tax_groups_list($name, $selected_id, $none_option, $submit_on_change);
980 function tax_groups_list_row($label, $name, $selected_id=null, $none_option=false, $submit_on_change=false)
983 $str = tax_groups_list_cells($label, $name, $selected_id, $none_option, $submit_on_change);
988 //------------------------------------------------------------------------------------
990 function item_tax_types_list($name, $selected_id=null)
992 $sql ="SELECT id, name FROM ".TB_PREF."item_tax_types";
993 combo_input($name, $selected_id, $sql, 'id', 'name', array('order' => 'id') );
996 function item_tax_types_list_cells($label, $name, $selected_id=null)
999 echo "<td>$label</td>\n";
1001 item_tax_types_list($name, $selected_id);
1005 function item_tax_types_list_row($label, $name, $selected_id=null)
1008 item_tax_types_list_cells($label, $name, $selected_id);
1012 //------------------------------------------------------------------------------------
1014 function shippers_list($name, $selected_id=null)
1016 $sql = "SELECT shipper_id, shipper_name FROM ".TB_PREF."shippers";
1017 combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
1020 function shippers_list_cells($label, $name, $selected_id=null)
1023 echo "<td>$label</td>\n";
1025 shippers_list($name, $selected_id);
1029 function shippers_list_row($label, $name, $selected_id=null)
1032 shippers_list_cells($label, $name, $selected_id);
1036 //-------------------------------------------------------------------------------------
1038 function sales_persons_list($name, $selected_id=null)
1040 $sql = "SELECT salesman_code, salesman_name FROM ".TB_PREF."salesman";
1041 combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
1044 function sales_persons_list_cells($label, $name, $selected_id=null)
1047 echo "<td>$label</td>\n";
1049 sales_persons_list($name, $selected_id);
1053 function sales_persons_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1056 sales_persons_list_cells($label, $name, $selected_id, $submit_on_change=false);
1060 //------------------------------------------------------------------------------------
1062 function sales_areas_list($name, $selected_id=null)
1064 $sql = "SELECT area_code, description FROM ".TB_PREF."areas";
1065 combo_input($name, $selected_id, $sql, 'area_code', 'description', array());
1068 function sales_areas_list_cells($label, $name, $selected_id=null)
1071 echo "<td>$label</td>\n";
1073 sales_areas_list($name, $selected_id);
1077 function sales_areas_list_row($label, $name, $selected_id=null)
1080 sales_areas_list_cells($label, $name, $selected_id);
1084 //------------------------------------------------------------------------------------
1086 function sales_groups_list($name, $selected_id=null, $special_option=false)
1088 $sql = "SELECT id, description FROM ".TB_PREF."groups";
1089 combo_input($name, $selected_id, $sql, 'id', 'description', array(
1090 'spec_option' => $special_option===true ? ' ' : $special_option,
1091 'order' => 'description', 'spec_id' => 0,
1095 function sales_groups_list_cells($label, $name, $selected_id=null, $special_option=false)
1098 echo "<td>$label</td>\n";
1100 sales_groups_list($name, $selected_id, $special_option);
1104 function sales_groups_list_row($label, $name, $selected_id=null, $special_option=false)
1107 sales_groups_list_cells($label, $name, $selected_id, $special_option);
1111 //------------------------------------------------------------------------------------
1113 function _format_template_items($row)
1115 return ($row[0] . " - " . _("Amount") . " ".$row[1]);
1118 function templates_list($name, $selected_id=null, $special_option=false)
1120 $sql = "SELECT sorder.order_no, Sum(line.unit_price*line.quantity*(1-line.discount_percent)) AS OrderValue
1121 FROM ".TB_PREF."sales_orders as sorder, ".TB_PREF."sales_order_details as line
1122 WHERE sorder.order_no = line.order_no AND sorder.type = 1 GROUP BY line.order_no";
1123 combo_input($name, $selected_id, $sql, 'order_no', 'OrderValue', array(
1124 'format' => '_format_template_items',
1125 'spec_option' => $special_option===true ? ' ' : $special_option,
1126 'order' => 'order_no', 'spec_id' => 0,
1130 function templates_list_cells($label, $name, $selected_id=null, $special_option=false)
1133 echo "<td>$label</td>\n";
1135 templates_list($name, $selected_id, $special_option);
1139 function templates_list_row($label, $name, $selected_id=null, $special_option=false)
1142 templates_list_cells($label, $name, $selected_id, $special_option);
1146 //------------------------------------------------------------------------------------
1148 function workorders_list($name, $selected_id=null)
1150 $sql = "SELECT id, wo_ref FROM ".TB_PREF."workorders WHERE closed=0";
1151 combo_input($name, $selected_id, $sql, 'id', 'wo_ref', array());
1154 function workorders_list_cells($label, $name, $selected_id=null)
1157 echo "<td>$label</td>\n";
1159 workorders_list($name, $selected_id);
1163 function workorders_list_row($label, $name, $selected_id=null)
1166 workorders_list_cells($label, $name, $selected_id);
1170 //------------------------------------------------------------------------------------
1172 function payment_terms_list($name, $selected_id=null)
1174 $sql = "SELECT terms_indicator, terms FROM ".TB_PREF."payment_terms";
1175 combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms', array());
1178 function payment_terms_list_cells($label, $name, $selected_id=null)
1181 echo "<td>$label</td>\n";
1183 payment_terms_list($name, $selected_id);
1187 function payment_terms_list_row($label, $name, $selected_id=null)
1190 payment_terms_list_cells($label, $name, $selected_id);
1194 //------------------------------------------------------------------------------------
1196 function credit_status_list($name, $selected_id=null)
1198 $sql ="SELECT id, reason_description FROM ".TB_PREF."credit_status";
1199 combo_input($name, $selected_id, $sql, 'id', 'reason_description', array());
1202 function credit_status_list_cells($label, $name, $selected_id=null)
1205 echo "<td>$label</td>\n";
1207 credit_status_list($name, $selected_id);
1211 function credit_status_list_row($label, $name, $selected_id=null)
1214 credit_status_list_cells($label, $name, $selected_id);
1218 //-----------------------------------------------------------------------------------------------
1220 function sales_types_list($name, $selected_id=null, $submit_on_change=false, $special_option=false)
1222 $sql = "SELECT id, sales_type FROM ".TB_PREF."sales_types";
1224 return combo_input($name, $selected_id, $sql, 'id', 'sales_type',
1226 'spec_option' => $special_option===true ? _("All Sales Types") : $special_option,
1228 'select_submit'=> $submit_on_change,
1229 // 'async' => false,
1233 function sales_types_list_cells($label, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
1236 echo "<td>$label</td>\n";
1238 $str = sales_types_list($name, $selected_id, $submit_on_change, $special_option);
1243 function sales_types_list_row($label, $name, $selected_id=null, $submit_on_change=false, $special_option=false)
1246 $str = sales_types_list_cells($label, $name, $selected_id, $submit_on_change, $special_option);
1251 //-----------------------------------------------------------------------------------------------
1253 function movement_types_list($name, $selected_id=null)
1255 $sql = "SELECT id, name FROM ".TB_PREF."movement_types";
1256 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1259 function movement_types_list_cells($label, $name, $selected_id=null)
1262 echo "<td>$label</td>\n";
1264 movement_types_list($name, $selected_id);
1268 function movement_types_list_row($label, $name, $selected_id=null)
1271 movement_types_list_cells($label, $name, $selected_id);
1275 //-----------------------------------------------------------------------------------------------
1277 function bank_trans_types_list($name, $selected_id=null)
1279 $sql = "SELECT id, name FROM ".TB_PREF."bank_trans_types";
1280 combo_input($name, $selected_id, $sql, 'id', 'name', array());
1283 function bank_trans_types_list_cells($label, $name, $selected_id=null)
1286 echo "<td>$label</td>\n";
1288 bank_trans_types_list($name, $selected_id);
1292 function bank_trans_types_list_row($label, $name, $selected_id=null)
1295 bank_trans_types_list_cells($label, $name, $selected_id);
1299 //-----------------------------------------------------------------------------------------------
1301 function workcenter_list($name, $selected_id=null, $all_option=false)
1305 $sql = "SELECT id, name FROM ".TB_PREF."workcentres";
1307 return combo_input($name, $selected_id, $sql, 'id', 'name',
1309 'spec_option' =>$all_option===true ? _("All Suppliers") : $all_option,
1310 'spec_id' => $all_items,
1314 function workcenter_list_cells($label, $name, $selected_id=null, $all_option=false)
1316 default_focus($name);
1318 echo "<td>$label</td>\n";
1320 workcenter_list($name, $selected_id, $all_option);
1324 function workcenter_list_row($label, $name, $selected_id=null, $all_option=false)
1327 workcenter_list_cells($label, $name, $selected_id, $all_option);
1331 //-----------------------------------------------------------------------------------------------
1333 function bank_accounts_list($name, $selected_id=null, $submit_on_change=false)
1335 $sql = "SELECT ".TB_PREF."bank_accounts.id, bank_account_name, bank_curr_code
1336 FROM ".TB_PREF."bank_accounts";
1337 // , ".TB_PREF."chart_master
1338 // WHERE ".TB_PREF."bank_accounts.account_code=".TB_PREF."chart_master.account_code";
1340 return combo_input($name, $selected_id, $sql, 'id', 'bank_account_name',
1342 'format' => '_format_add_curr',
1343 'select_submit'=> $submit_on_change,
1348 function bank_accounts_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1351 echo "<td>$label</td>\n";
1353 $str = bank_accounts_list($name, $selected_id, $submit_on_change);
1358 function bank_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1361 $str = bank_accounts_list_cells($label, $name, $selected_id, $submit_on_change);
1365 //-----------------------------------------------------------------------------------------------
1367 function cash_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1369 $sql = "SELECT ".TB_PREF."bank_accounts.id, bank_account_name, bank_curr_code
1370 FROM ".TB_PREF."bank_accounts
1371 WHERE ".TB_PREF."bank_accounts.account_type=3";
1374 echo "<tr><td>$label</td>\n";
1376 $str = combo_input($name, $selected_id, $sql, 'id', 'bank_account_name',
1378 'format' => '_format_add_curr',
1379 'select_submit'=> $submit_on_change,
1382 echo "</td></tr>\n";
1385 //-----------------------------------------------------------------------------------------------
1387 function pos_list_row($label, $name, $selected_id=null, $spec_option=false, $submit_on_change=false)
1389 $sql = "SELECT id, pos_name FROM ".TB_PREF."sales_pos";
1391 default_focus($name);
1394 echo "<td>$label</td>\n";
1397 $str = combo_input($name, $selected_id, $sql, 'id', 'pos_name',
1399 'select_submit'=> $submit_on_change,
1401 'spec_option' =>$spec_option,
1404 echo "</td></tr>\n";
1408 //-----------------------------------------------------------------------------------------------
1410 function sale_payment_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1413 echo "<td>$label</td>\n";
1415 $str = yesno_list($name, $selected_id, _('Cash'), _('Delayed'), $submit_on_change);
1419 //-----------------------------------------------------------------------------------------------
1421 function class_list($name, $selected_id=null, $submit_on_change=false)
1423 $sql = "SELECT cid, class_name FROM ".TB_PREF."chart_class";
1425 return combo_input($name, $selected_id, $sql, 'cid', 'class_name',
1427 'select_submit'=> $submit_on_change,
1433 function class_list_cells($label, $name, $selected_id=null, $submit_on_change=false)
1436 echo "<td>$label</td>\n";
1438 $str = class_list($name, $selected_id, $submit_on_change);
1443 function class_list_row($label, $name, $selected_id=null, $submit_on_change=false)
1446 $str = class_list_cells($label, $name, $selected_id, $submit_on_change);
1451 //-----------------------------------------------------------------------------------------------
1453 function stock_categories_list($name, $selected_id=null)
1455 $sql = "SELECT category_id, description FROM ".TB_PREF."stock_category";
1456 combo_input($name, $selected_id, $sql, 'category_id', 'description',
1457 array('order'=>'category_id'));
1460 function stock_categories_list_cells($label, $name, $selected_id=null)
1463 echo "<td>$label</td>\n";
1465 stock_categories_list($name, $selected_id);
1469 function stock_categories_list_row($label, $name, $selected_id=null)
1472 stock_categories_list_cells($label, $name, $selected_id);
1476 //-----------------------------------------------------------------------------------------------
1478 function gl_account_types_list($name, $selected_id=null, $all_option, $all_option_numeric)
1482 $sql = "SELECT id, name FROM ".TB_PREF."chart_types";
1484 combo_input($name, $selected_id, $sql, 'id', 'name',
1487 'spec_option' =>$all_option,
1488 'spec_id' => $all_option_numeric ? 0 : $all_items
1492 function gl_account_types_list_cells($label, $name, $selected_id=null, $all_option=false,
1493 $all_option_numeric=false)
1496 echo "<td>$label</td>\n";
1498 gl_account_types_list($name, $selected_id, $all_option, $all_option_numeric);
1502 function gl_account_types_list_row($label, $name, $selected_id=null, $all_option=false,
1503 $all_option_numeric=false)
1506 gl_account_types_list_cells($label, $name, $selected_id, $all_option,
1507 $all_option_numeric);
1511 //-----------------------------------------------------------------------------------------------
1512 function gl_all_accounts_list($name, $selected_id=null, $skip_bank_accounts=false,
1513 $show_group=false, $cells=false, $all_option=false, $submit_on_change=false)
1515 if ($skip_bank_accounts)
1516 $sql = "SELECT chart.account_code, chart.account_name, type.name
1517 FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
1518 ."LEFT JOIN ".TB_PREF."bank_accounts acc "
1519 ."ON chart.account_code=acc.account_code
1520 WHERE acc.account_code IS NULL
1521 AND chart.account_type=type.id";
1523 $sql = "SELECT chart.account_code, chart.account_name, type.name
1524 FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
1525 WHERE chart.account_type=type.id";
1527 combo_input($name, $selected_id, $sql, 'chart.account_code', 'chart.account_name',
1529 'format' => '_format_account' . ($show_group ? '2' : ''),
1530 'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
1532 'order' => 'account_code',
1533 'search_box' => $cells,
1534 'search_submit' => false,
1538 'select_submit'=> $submit_on_change,
1544 function _format_account($row)
1546 return $row[0] . " " . $row[1];
1549 function _format_account2($row)
1551 return $row[0] . " " . $row[2] . " " . $row[1];
1554 function gl_all_accounts_list_cells($label, $name, $selected_id=null, $skip_bank_accounts=false,
1555 $show_group=false, $cells=false, $all_option=false)
1558 echo "<td>$label</td>\n";
1560 gl_all_accounts_list($name, $selected_id, $skip_bank_accounts, $show_group, $cells, $all_option);
1564 function gl_all_accounts_list_row($label, $name, $selected_id=null, $skip_bank_accounts=false,
1565 $show_group=false, $cells=false, $all_option=false)
1568 gl_all_accounts_list_cells($label, $name, $selected_id, $skip_bank_accounts,
1569 $show_group, $cells, $all_option);
1573 function yesno_list($name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1576 $items['1'] = strlen($name_yes) ? $name_yes : _("Yes");
1577 $items['0'] = strlen($name_no) ? $name_no : _("No");
1579 return array_selector($name, $selected_id, $items,
1581 'select_submit'=> $submit_on_change,
1582 'async' => false ) ); // FIX?
1585 function yesno_list_cells($label, $name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1588 echo "<td>$label</td>\n";
1590 $str = yesno_list($name, $selected_id, $name_yes, $name_no, $submit_on_change);
1595 function yesno_list_row($label, $name, $selected_id=null, $name_yes="", $name_no="", $submit_on_change=false)
1598 $str = yesno_list_cells($label, $name, $selected_id, $name_yes, $name_no, $submit_on_change);
1603 //------------------------------------------------------------------------------------------------
1605 function languages_list($name, $selected_id=null)
1607 global $installed_languages;
1610 foreach ($installed_languages as $lang)
1611 $items[$lang['code']] = $lang['name'];
1613 return array_selector($name, $selected_id, $items );
1616 function languages_list_cells($label, $name, $selected_id=null)
1619 echo "<td>$label</td>\n";
1621 languages_list($name, $selected_id);
1625 function languages_list_row($label, $name, $selected_id=null)
1628 languages_list_cells($label, $name, $selected_id);
1632 //------------------------------------------------------------------------------------------------
1634 function bank_account_types_list($name, $selected_id=null)
1636 $types = bank_account_types::get_all();
1639 foreach ($types as $type)
1641 $items[$type['id']] = $type['name'];
1644 return array_selector($name, $selected_id, $items );
1647 function bank_account_types_list_cells($label, $name, $selected_id=null)
1650 echo "<td>$label</td>\n";
1652 bank_account_types_list($name, $selected_id);
1656 function bank_account_types_list_row($label, $name, $selected_id=null)
1659 bank_account_types_list_cells($label, $name, $selected_id);
1663 //------------------------------------------------------------------------------------------------
1664 function payment_person_types_list($name, $selected_id=null, $submit_on_change=false)
1666 $types = payment_person_types::get_all();
1669 foreach ($types as $type)
1671 if (payment_person_types::has_items($type['id']))
1673 $items[$type['id']] = $type['name'];
1677 return array_selector($name, $selected_id, $items,
1678 array( 'select_submit'=> $submit_on_change ) );
1681 function payment_person_types_list_cells($label, $name, $selected_id=null, $related=null)
1684 echo "<td>$label</td>\n";
1686 $str = payment_person_types_list($name, $selected_id, $related);
1691 function payment_person_types_list_row($label, $name, $selected_id=null, $related=null)
1694 $str = payment_person_types_list_cells($label, $name, $selected_id, $related);
1699 //------------------------------------------------------------------------------------------------
1701 function quick_entries_list($name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1704 $sql = "SELECT id, description FROM ".TB_PREF."quick_entries";
1707 $sql .= " WHERE deposit=$expense";
1710 if ($bank_only != -1)
1713 $sql .= " AND bank_only=$bank_only";
1715 $sql .= " WHERE bank_only=$bank_only";
1717 combo_input($name, $selected_id, $sql, 'id', 'description',
1720 'order' => 'description',
1721 'select_submit'=> $submit_on_change,
1727 function quick_entries_list_cells($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1729 echo "<td>$label</td><td>\n";
1730 quick_entries_list($name, $selected_id, $expense, $bank_only, $submit_on_change);
1734 function quick_entries_list_row($label, $name, $selected_id=null, $expense=-1, $bank_only=-1, $submit_on_change=false)
1737 quick_entries_list_cells($label, $name, $selected_id, $expense, $bank_only, $submit_on_change);
1742 //------------------------------------------------------------------------------------------------
1744 function wo_types_list($name, $selected_id=null)
1746 $types = wo_types::get_all();
1749 foreach ($types as $type)
1750 $items[$type['id']] = $type['name'];
1752 return array_selector($name, $selected_id, $items,
1753 array( 'select_submit'=> true, 'async' => true ) );
1756 function wo_types_list_row($label, $name, $selected_id=null)
1758 echo "<tr><td>$label</td><td>\n";
1759 $str = wo_types_list($name, $selected_id);
1760 echo "</td></tr>\n";
1764 //------------------------------------------------------------------------------------------------
1766 function dateformats_list_row($label, $name, $value=null)
1768 global $dateformats;
1770 echo "<tr><td>$label</td>\n<td>";
1771 array_selector( $name, $value, $dateformats );
1772 echo "</td></tr>\n";
1775 function dateseps_list_row($label, $name, $value=null)
1779 echo "<tr><td>$label</td>\n<td>";
1780 array_selector( $name, $value, $dateseps );
1781 echo "</td></tr>\n";
1784 function thoseps_list_row($label, $name, $value=null)
1788 echo "<tr><td>$label</td>\n<td>";
1789 array_selector( $name, $value, $thoseps );
1790 echo "</td></tr>\n";
1793 function decseps_list_row($label, $name, $value=null)
1797 echo "<tr><td>$label</td>\n<td>";
1798 array_selector( $name, $value, $decseps );
1799 echo "</td></tr>\n";
1802 function themes_list_row($label, $name, $value=null)
1804 global $path_to_root;
1806 $path = $path_to_root.'/themes/';
1808 $themedir = opendir($path);
1809 while(false !== ($fname = readdir($themedir)))
1811 if($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path.$fname))
1813 $themes[$fname] = $fname;
1818 echo "<tr><td>$label</td>\n<td>";
1819 array_selector( $name, $value, $themes );
1820 echo "</td></tr>\n";
1823 function pagesizes_list_row($label, $name, $value=null)
1828 foreach ($pagesizes as $pz)
1831 echo "<tr><td>$label</td>\n<td>";
1832 array_selector( $name, $value, $items );
1833 echo "</td></tr>\n";
1836 function security_headings_list_row($label, $name, $value=null)
1838 global $security_headings;
1840 echo "<tr><td>$label</td>\n<td>";
1841 array_selector( $name, $value, $security_headings );
1842 echo "</td></tr>\n";
1845 function systypes_list_cells($label, $name, $value=null, $submit_on_change=false)
1847 global $systypes_array;
1850 echo "<td>$label</td>\n";
1854 foreach ($systypes_array as $key=>$type)
1855 $items[$key] = $type['name'];
1857 $str = array_selector($name, $value, $items,
1859 'select_submit'=> $submit_on_change,
1867 function systypes_list_row($label, $name, $value=null, $submit_on_change=false)
1870 $str = systypes_list_cells($label, $name, $value, $submit_on_change);
1875 function cust_allocations_list_cells($label, $name, $selected=null)
1883 $all_items=>_("All Types"),
1884 '1'=> _("Sales Invoices"),
1885 '2'=> _("Overdue Invoices"),
1886 '3' => _("Payments"),
1887 '4' => _("Credit Notes"),
1888 '5' => _("Delivery Notes")
1890 $str = array_selector($name, $selected, $allocs);
1895 function supp_allocations_list_cell($name, $selected=null)
1901 $all_items=>_("All Types"),
1902 '1'=> _("Invoices"),
1903 '2'=> _("Overdue Invoices"),
1904 '3' => _("Payments"),
1905 '4' => _("Credit Notes"),
1906 '5' => _("Overdue Credit Notes")
1908 $str = array_selector($name, $selected, $allocs);
1913 function policy_list_cells($label, $name, $selected=null)
1918 $str = array_selector($name, $selected,
1919 array( '' => _("Automatically put balance on back order"),
1920 'CAN' => _("Cancel any quantites not delivered")) );
1925 function policy_list_row($label, $name, $selected=null)
1928 policy_list_cells($label, $name, $selected);
1932 function credit_type_list_cells($label, $name, $selected=null, $submit_on_change=false)
1937 $str = array_selector($name, $selected,
1938 array( 'Return' => _("Items Returned to Inventory Location"),
1939 'WriteOff' => _("Items Written Off")),
1940 array( 'select_submit'=> $submit_on_change ) );
1945 function credit_type_list_row($label, $name, $selected=null, $submit_on_change=false)
1948 $str = credit_type_list_cells($label, $name, $selected, $submit_on_change);
1953 function number_list($name, $selected, $from, $to, $no_option=false)
1956 for ($i = $from; $i <= $to; $i++)
1959 return array_selector($name, $selected, $items,
1960 array( 'spec_option' => $no_option,
1961 'spec_id' => reserved_words::get_all_numeric()) );
1964 function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
1969 number_list($name, $selected, $from, $to, $no_option);
1973 function number_list_row($label, $name, $selected, $from, $to, $no_option=false)
1976 number_list_cells($label, $name, $selected, $from, $to, $no_option);
1980 function print_profiles_list_row($label, $name, $selected_id=null, $spec_opt=false,
1981 $submit_on_change=true)
1983 $sql = "SELECT profile FROM ".TB_PREF."print_profiles"
1984 ." GROUP BY profile";
1985 $result = db_query($sql, 'cannot get all profile names');
1986 $profiles = array();
1987 while($myrow=db_fetch($result)) {
1988 $profiles[$myrow['profile']] = $myrow['profile'];
1993 echo "<td>$label</td>\n";
1996 array_selector($name, $selected_id, $profiles,
1997 array( 'select_submit'=> $submit_on_change,
1998 'spec_option'=>$spec_opt,
2002 echo "</td></tr>\n";
2005 function printers_list($name, $selected_id=null, $spec_opt=false, $submit_on_change=false)
2007 static $printers; // query only once for page display
2010 $sql = "SELECT id, name, description FROM ".TB_PREF."printers";
2011 $result = db_query($sql, 'cannot get all printers');
2012 $printers = array();
2013 while($myrow=db_fetch($result)) {
2014 $printers[$myrow['id']] = $myrow['name'].' - '.$myrow['description'];
2017 array_selector($name, $selected_id, $printers,
2018 array( 'select_submit'=> $submit_on_change,
2019 'spec_option'=>$spec_opt,