1<?php
2/**********************************************************************
3    Copyright (C) FrontAccounting, LLC.
4	Released under the terms of the GNU General Public License, GPL,
5	as published by the Free Software Foundation, either version 3
6	of the License, or (at your option) any later version.
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11***********************************************************************/
12$page_security = 'SA_MANUFTRANSVIEW';
13$path_to_root = "..";
14include($path_to_root . "/includes/db_pager.inc");
15include_once($path_to_root . "/includes/session.inc");
16
17include_once($path_to_root . "/includes/date_functions.inc");
18include_once($path_to_root . "/manufacturing/includes/manufacturing_ui.inc");
19$js = "";
20if ($use_popup_windows)
21	$js .= get_js_open_window(800, 500);
22if (isset($_GET['outstanding_only']) && ($_GET['outstanding_only'] == true))
23{
24// curently outstanding simply means not closed
25	$outstanding_only = 1;
26	page(_($help_context = "Search Outstanding Work Orders"), false, false, "", $js);
27}
28else
29{
30	$outstanding_only = 0;
31	page(_($help_context = "Search Work Orders"), false, false, "", $js);
32}
33//-----------------------------------------------------------------------------------
34// Ajax updates
35//
36if (get_post('SearchOrders'))
37{
38	$Ajax->activate('orders_tbl');
39} elseif (get_post('_OrderNumber_changed'))
40{
41	$disable = get_post('OrderNumber') !== '';
42
43	$Ajax->addDisable(true, 'StockLocation', $disable);
44	$Ajax->addDisable(true, 'OverdueOnly', $disable);
45	$Ajax->addDisable(true, 'OpenOnly', $disable);
46	$Ajax->addDisable(true, 'SelectedStockItem', $disable);
47
48	if ($disable) {
49		set_focus('OrderNumber');
50	} else
51		set_focus('StockLocation');
52
53	$Ajax->activate('orders_tbl');
54}
55
56//--------------------------------------------------------------------------------------
57
58if (isset($_GET["stock_id"]))
59	$_POST['SelectedStockItem'] = $_GET["stock_id"];
60
61//--------------------------------------------------------------------------------------
62
63start_form(false, false, $_SERVER['PHP_SELF'] ."?outstanding_only=$outstanding_only");
64
65start_table(TABLESTYLE_NOBORDER);
66start_row();
67ref_cells(_("#:"), 'OrderId', '',null, '', true);
68ref_cells(_("Reference:"), 'OrderNumber', '',null, '', true);
69
70locations_list_cells(_("at Location:"), 'StockLocation', null, true);
71
72end_row();
73end_table();
74start_table(TABLESTYLE_NOBORDER);
75start_row();
76
77check_cells( _("Only Overdue:"), 'OverdueOnly', null);
78
79if ($outstanding_only==0)
80	check_cells( _("Only Open:"), 'OpenOnly', null);
81
82stock_manufactured_items_list_cells(_("for item:"), 'SelectedStockItem', null, true);
83
84submit_cells('SearchOrders', _("Search"),'',_('Select documents'),  'default');
85end_row();
86end_table();
87
88//-----------------------------------------------------------------------------
89function check_overdue($row)
90{
91	return (!$row["closed"]
92		&& date_diff2(Today(), sql2date($row["required_by"]), "d") > 0);
93}
94
95function view_link($dummy, $order_no)
96{
97	return get_trans_view_str(ST_WORKORDER, $order_no);
98}
99
100function view_stock($row)
101{
102	return view_stock_status($row["stock_id"], $row["description"], false);
103}
104
105function wo_type_name($dummy, $type)
106{
107	global $wo_types_array;
108
109	return $wo_types_array[$type];
110}
111
112function edit_link($row)
113{
114	return  $row['closed'] ? '<i>'._('Closed').'</i>' :
115		pager_link(_("Edit"),
116			"/manufacturing/work_order_entry.php?trans_no=" . $row["id"], ICON_EDIT);
117}
118
119function release_link($row)
120{
121	return $row["closed"] ? '' :
122		($row["released"]==0 ?
123		pager_link(_('Release'),
124			"/manufacturing/work_order_release.php?trans_no=" . $row["id"])
125		:
126		pager_link(_('Issue'),
127			"/manufacturing/work_order_issue.php?trans_no=" .$row["id"]));
128}
129
130function produce_link($row)
131{
132	return $row["closed"] || !$row["released"] ? '' :
133		pager_link(_('Produce'),
134			"/manufacturing/work_order_add_finished.php?trans_no=" .$row["id"]);
135}
136
137function costs_link($row)
138{
139/*
140	return $row["closed"] || !$row["released"] ? '' :
141		pager_link(_('Costs'),
142			"/gl/gl_bank.php?NewPayment=1&PayType="
143			.PT_WORKORDER. "&PayPerson=" .$row["id"]);
144*/
145	return $row["closed"] || !$row["released"] ? '' :
146		pager_link(_('Costs'),
147			"/manufacturing/work_order_costs.php?trans_no=" .$row["id"]);
148}
149
150function view_gl_link($row)
151{
152	//if ($row['closed'] == 0)
153	//	return '';
154	return get_gl_view_str(ST_WORKORDER, $row['id']);
155}
156
157function dec_amount($row, $amount)
158{
159	return number_format2($amount, $row['decimals']);
160}
161
162$sql = get_sql_for_work_orders($outstanding_only, $all_items);
163
164$cols = array(
165	_("#") => array('fun'=>'view_link', 'ord'=>''),
166	_("Reference"), // viewlink 2 ?
167	_("Type") => array('fun'=>'wo_type_name'),
168	_("Location"),
169	_("Item") => array('fun'=>'view_stock', 'ord'=>''),
170	_("Required") => array('fun'=>'dec_amount', 'align'=>'right'),
171	_("Manufactured") => array('fun'=>'dec_amount', 'align'=>'right'),
172	_("Date") => array('name'=>'date_', 'type'=>'date', 'ord'=>'desc'),
173	_("Required By") => array('type'=>'date', 'ord'=>''),
174	array('insert'=>true, 'fun'=> 'edit_link'),
175	array('insert'=>true, 'fun'=> 'release_link'),
176	array('insert'=>true, 'fun'=> 'produce_link'),
177	array('insert'=>true, 'fun'=> 'costs_link'),
178	array('insert'=>true, 'fun'=> 'view_gl_link')
179);
180
181$table =& new_db_pager('orders_tbl', $sql, $cols);
182$table->set_marker('check_overdue', _("Marked orders are overdue."));
183
184$table->width = "90%";
185
186display_db_pager($table);
187
188end_form();
189end_page();
190?>
191