1<?php
2
3
4include('includes/session.php');
5$Title = _('Search Work Orders');
6include('includes/header.php');
7
8echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/magnifier.png" title="' . _('Search') . '" alt="" />' . ' ' . $Title . '</p>
9	<form action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '" method="post">
10	<div>
11		<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />';
12
13
14if (isset($_GET['WO'])) {
15	$SelectedWO = $_GET['WO'];
16} elseif (isset($_POST['WO'])){
17	$SelectedWO = $_POST['WO'];
18} else {
19	unset($SelectedWO);
20}
21
22if (isset($_GET['SelectedStockItem'])) {
23	$SelectedStockItem = $_GET['SelectedStockItem'];
24} elseif (isset($_POST['SelectedStockItem'])){
25	$SelectedStockItem = $_POST['SelectedStockItem'];
26} else {
27	unset($SelectedStockItem);
28}
29
30
31if (isset($_POST['ResetPart'])){
32	 unset($SelectedStockItem);
33}
34
35if (isset($SelectedWO) AND $SelectedWO!='') {
36	$SelectedWO = trim($SelectedWO);
37	if (!is_numeric($SelectedWO)){
38		  prnMsg(_('The work order number entered MUST be numeric'),'warn');
39		  unset ($SelectedWO);
40		  include('includes/footer.php');
41		  exit;
42	} else {
43		echo _('Work Order Number') . ' - ' . $SelectedWO;
44	}
45}
46
47if (isset($_POST['SearchParts'])){
48
49	if ($_POST['Keywords'] AND $_POST['StockCode']) {
50		echo _('Stock description keywords have been used in preference to the Stock code extract entered');
51	}
52	if ($_POST['Keywords']) {
53		//insert wildcard characters in spaces
54		$SearchString = '%' . str_replace(' ', '%', $_POST['Keywords']) . '%';
55
56		$SQL = "SELECT stockmaster.stockid,
57						stockmaster.description,
58						stockmaster.decimalplaces,
59						SUM(locstock.quantity) AS qoh,
60						stockmaster.units
61					FROM stockmaster,
62						locstock
63					WHERE stockmaster.stockid=locstock.stockid
64					AND stockmaster.description " . LIKE . " '" . $SearchString . "'
65					AND stockmaster.categoryid='" . $_POST['StockCat']. "'
66					AND stockmaster.mbflag='M'
67					GROUP BY stockmaster.stockid,
68						stockmaster.description,
69						stockmaster.decimalplaces,
70						stockmaster.units
71					ORDER BY stockmaster.stockid";
72
73	 } elseif (isset($_POST['StockCode'])){
74		$SQL = "SELECT stockmaster.stockid,
75						stockmaster.description,
76						stockmaster.decimalplaces,
77						sum(locstock.quantity) as qoh,
78						stockmaster.units
79					FROM stockmaster,
80						locstock
81					WHERE stockmaster.stockid=locstock.stockid
82					AND stockmaster.stockid " . LIKE . " '%" . $_POST['StockCode'] . "%'
83					AND stockmaster.categoryid='" . $_POST['StockCat'] . "'
84					AND stockmaster.mbflag='M'
85					GROUP BY stockmaster.stockid,
86						stockmaster.description,
87						stockmaster.decimalplaces,
88						stockmaster.units
89					ORDER BY stockmaster.stockid";
90
91	 } elseif (!isset($_POST['StockCode']) AND !isset($_POST['Keywords'])) {
92		$SQL = "SELECT stockmaster.stockid,
93						stockmaster.description,
94						stockmaster.decimalplaces,
95						sum(locstock.quantity) as qoh,
96						stockmaster.units
97					FROM stockmaster,
98						locstock
99					WHERE stockmaster.stockid=locstock.stockid
100					AND stockmaster.categoryid='" . $_POST['StockCat'] ."'
101					AND stockmaster.mbflag='M'
102					GROUP BY stockmaster.stockid,
103						stockmaster.description,
104						stockmaster.decimalplaces,
105						stockmaster.units
106					ORDER BY stockmaster.stockid";
107	 }
108
109	$ErrMsg =  _('No items were returned by the SQL because');
110	$DbgMsg = _('The SQL used to retrieve the searched parts was');
111	$StockItemsResult = DB_query($SQL,$ErrMsg,$DbgMsg);
112}
113
114if (isset($_POST['StockID'])){
115	$StockID = trim(mb_strtoupper($_POST['StockID']));
116} elseif (isset($_GET['StockID'])){
117	$StockID = trim(mb_strtoupper($_GET['StockID']));
118}
119
120if (!isset($StockID)) {
121
122	 /* Not appropriate really to restrict search by date since may miss older
123	 ouststanding orders
124	$OrdersAfterDate = Date('d/m/Y',Mktime(0,0,0,Date('m')-2,Date('d'),Date('Y')));
125	 */
126
127	if (!isset($SelectedWO) or ($SelectedWO=='')){
128		echo '<table class="selection"><tr><td>';
129		if (isset($SelectedStockItem)) {
130			echo _('For the item') . ': ' . $SelectedStockItem . ' ' . _('and') . ' <input type="hidden" name="SelectedStockItem" value="' . $SelectedStockItem . '" />';
131		}
132		echo _('Work Order number') . ': <input type="text" name="WO" autofocus="autofocus" maxlength="8" size="9" />&nbsp; ' . _('Processing at') . ':<select name="StockLocation"> ';
133
134		$sql = "SELECT locations.loccode, locationname FROM locations
135				INNER JOIN locationusers
136					ON locationusers.loccode=locations.loccode
137					AND locationusers.userid='" .  $_SESSION['UserID'] . "'
138					AND locationusers.canview=1
139				WHERE locations.usedforwo = 1";
140
141		$resultStkLocs = DB_query($sql);
142
143		while ($myrow=DB_fetch_array($resultStkLocs)){
144			if (isset($_POST['StockLocation'])){
145				if ($myrow['loccode'] == $_POST['StockLocation']){
146					 echo '<option selected="selected" value="' . $myrow['loccode'] . '">' . $myrow['locationname'] . '</option>';
147				} else {
148					 echo '<option value="' . $myrow['loccode'] . '">' . $myrow['locationname'] . '</option>';
149				}
150			} elseif ($myrow['loccode']==$_SESSION['UserStockLocation']){
151				 echo '<option selected="selected" value="' . $myrow['loccode'] . '">' . $myrow['locationname'] . '</option>';
152			} else {
153				 echo '<option value="' . $myrow['loccode'] . '">' . $myrow['locationname'] . '</option>';
154			}
155		}
156
157		echo '</select> &nbsp;&nbsp;
158			<select name="ClosedOrOpen">';
159
160		if (isset($_GET['ClosedOrOpen']) AND $_GET['ClosedOrOpen']=='Closed_Only'){
161			$_POST['ClosedOrOpen']='Closed_Only';
162		}
163
164		if (isset($_POST['ClosedOrOpen']) AND $_POST['ClosedOrOpen']=='Closed_Only'){
165			echo '<option selected="selected" value="Closed_Only">' . _('Closed Work Orders Only') . '</option>';
166			echo '<option value="Open_Only">' . _('Open Work Orders Only')  . '</option>';
167		} else {
168			echo '<option value="Closed_Only">' . _('Closed Work Orders Only')  . '</option>';
169			echo '<option selected="selected" value="Open_Only">' . _('Open Work Orders Only')  . '</option>';
170		}
171
172		echo '</select> &nbsp;&nbsp;
173			<input type="submit" name="SearchOrders" value="' . _('Search') . '" />
174			&nbsp;&nbsp;<a href="' . $RootPath . '/WorkOrderEntry.php">' . _('New Work Order') . '</a></td>
175			</tr>
176			</table>
177			<br />';
178	}
179
180	$SQL="SELECT categoryid,
181			categorydescription
182			FROM stockcategory
183			ORDER BY categorydescription";
184
185	$result1 = DB_query($SQL);
186
187	echo '<table class="selection">
188			<tr>
189				<th colspan="6"><h3>' . _('To search for work orders for a specific item use the item selection facilities below') . '</h3></th>
190			</tr>
191			<tr>
192				<td>' . _('Select a stock category') . ':
193	  			<select name="StockCat">';
194
195	while ($myrow1 = DB_fetch_array($result1)) {
196		echo '<option value="'. $myrow1['categoryid'] . '">' . $myrow1['categorydescription'] . '</option>';
197	}
198
199	  echo '</select></td>
200	  		<td>' . _('Enter text extract(s) in the description') . ':</td>
201	  		<td><input type="text" name="Keywords" size="20" maxlength="25" /></td>
202		</tr>
203	  	<tr>
204			<td></td>
205	  		<td><b>' . _('OR') . ' </b>' . _('Enter extract of the Stock Code') . ':</td>
206	  		<td><input type="text" name="StockCode" size="15" maxlength="18" /></td>
207	  	</tr>
208	  </table><br />';
209	echo '<div class="centre"><input type="submit" name="SearchParts" value="' . _('Search Items Now') . '" />
210        <input type="submit" name="ResetPart" value="' . _('Show All') . '" /></div>';
211
212	if (isset($StockItemsResult)) {
213
214		echo '<br />
215			<table cellpadding="2" class="selection">
216			<thead>
217			<tr>
218				<th class="ascending">' . _('Code') . '</th>
219				<th class="ascending">' . _('Description') . '</th>
220				<th class="ascending">' . _('On Hand') . '</th>
221				<th>' . _('Units') . '</th>
222				</tr>
223			</thead>
224			<tbody>';
225
226		while ($myrow=DB_fetch_array($StockItemsResult)) {
227
228			printf('<tr class="striped_row">
229					<td><input type="submit" name="SelectedStockItem" value="%s" /></td>
230					<td>%s</td>
231					<td class="number">%s</td>
232					<td>%s</td>
233					</tr>',
234					$myrow['stockid'],
235					$myrow['description'],
236					locale_number_format($myrow['qoh'],$myrow['decimalplaces']),
237					$myrow['units']);
238
239		}//end of while loop
240		echo '</tbody></table>';
241	}
242	//end if stock search results to show
243	  else {
244
245	  	if (!isset($_POST['StockLocation'])) {
246	  		$_POST['StockLocation'] = '';
247	  	}
248
249		//figure out the SQL required from the inputs available
250		if (isset($_POST['ClosedOrOpen']) and $_POST['ClosedOrOpen']=='Open_Only'){
251			$ClosedOrOpen = 0;
252		} else {
253			$ClosedOrOpen = 1;
254		}
255		if (isset($SelectedWO) AND $SelectedWO !='') {
256				$SQL = "SELECT workorders.wo,
257								woitems.stockid,
258								stockmaster.description,
259								stockmaster.decimalplaces,
260								woitems.qtyreqd,
261								woitems.qtyrecd,
262								workorders.requiredby,
263								workorders.startdate,
264								workorders.reference,
265								workorders.loccode
266						FROM workorders
267						INNER JOIN woitems ON workorders.wo=woitems.wo
268						INNER JOIN stockmaster ON woitems.stockid=stockmaster.stockid
269						INNER JOIN locationusers ON locationusers.loccode=workorders.loccode AND locationusers.userid='" .  $_SESSION['UserID'] . "' AND locationusers.canview=1
270						WHERE workorders.closed='" . $ClosedOrOpen . "'
271						AND workorders.wo='". $SelectedWO ."'
272						ORDER BY workorders.wo,
273								woitems.stockid";
274		} else {
275			  /* $DateAfterCriteria = FormatDateforSQL($OrdersAfterDate); */
276
277				if (isset($SelectedStockItem)) {
278					$SQL = "SELECT workorders.wo,
279									woitems.stockid,
280									stockmaster.description,
281									stockmaster.decimalplaces,
282									woitems.qtyreqd,
283									woitems.qtyrecd,
284									workorders.requiredby,
285									workorders.startdate,
286									workorders.reference,
287									workorders.loccode
288							FROM workorders
289							INNER JOIN woitems ON workorders.wo=woitems.wo
290							INNER JOIN stockmaster ON woitems.stockid=stockmaster.stockid
291							INNER JOIN locationusers ON locationusers.loccode=workorders.loccode AND locationusers.userid='" .  $_SESSION['UserID'] . "' AND locationusers.canview=1
292							WHERE workorders.closed='" . $ClosedOrOpen . "'
293							AND woitems.stockid='". $SelectedStockItem ."'
294							AND workorders.loccode='" . $_POST['StockLocation'] . "'
295							ORDER BY workorders.wo,
296								 woitems.stockid";
297				} else {
298					$SQL = "SELECT workorders.wo,
299									woitems.stockid,
300									stockmaster.description,
301									stockmaster.decimalplaces,
302									woitems.qtyreqd,
303									woitems.qtyrecd,
304									workorders.requiredby,
305									workorders.startdate,
306									workorders.reference,
307									workorders.loccode
308							FROM workorders
309							INNER JOIN woitems ON workorders.wo=woitems.wo
310							INNER JOIN locationusers ON locationusers.loccode=workorders.loccode AND locationusers.userid='" .  $_SESSION['UserID'] . "' AND locationusers.canview=1
311							INNER JOIN stockmaster ON woitems.stockid=stockmaster.stockid
312							WHERE workorders.closed='" . $ClosedOrOpen . "'
313							AND workorders.loccode='" . $_POST['StockLocation'] . "'
314							ORDER BY workorders.wo,
315									 woitems.stockid";
316				}
317		} //end not order number selected
318
319		$ErrMsg = _('No works orders were returned by the SQL because');
320		$WorkOrdersResult = DB_query($SQL,$ErrMsg);
321
322		/*show a table of the orders returned by the SQL */
323		if (DB_num_rows($WorkOrdersResult)>0) {
324			echo '<br />
325				<table cellpadding="2" width="95%" class="selection">
326				<thead>
327				<tr>
328					<th>' . _('Modify') . '</th>
329					<th class="ascending">' . _('Status') . '</th>
330					<th>' . _('Issue To') . '</th>
331					<th>' . _('Receive') . '</th>
332					<th>' . _('Costing') . '</th>
333					<th>' . _('Paperwork') . '</th>
334					<th>' . _('Location') . '</th>
335					<th class="ascending">' . _('Item') . '</th>
336					<th class="ascending">' . _('Quantity Required') . '</th>
337					<th class="ascending">' . _('Quantity Received') . '</th>
338					<th class="ascending">' . _('Quantity Outstanding') . '</th>
339					<th class="ascending">' . _('Start Date')  . '</th>
340					<th class="ascending">' . _('Required Date') . '</th>
341					</tr>
342				</thead>
343				<tbody>';
344
345		while ($myrow=DB_fetch_array($WorkOrdersResult)) {
346
347			$ModifyPage = $RootPath . '/WorkOrderEntry.php?WO=' . $myrow['wo'];
348			$Status_WO = $RootPath . '/WorkOrderStatus.php?WO=' .$myrow['wo'] . '&amp;StockID=' . urlencode($myrow['stockid']);
349			$Receive_WO = $RootPath . '/WorkOrderReceive.php?WO=' .$myrow['wo'] . '&amp;StockID=' . urlencode($myrow['stockid']);
350			$Issue_WO = $RootPath . '/WorkOrderIssue.php?WO=' .$myrow['wo'] . '&amp;StockID=' . urlencode($myrow['stockid']);
351			$Costing_WO =$RootPath . '/WorkOrderCosting.php?WO=' .$myrow['wo'];
352			$Printing_WO =$RootPath . '/PDFWOPrint.php?WO=' .$myrow['wo'] . '&amp;StockID=' . urlencode($myrow['stockid']);
353
354			$FormatedRequiredByDate = ConvertSQLDate($myrow['requiredby']);
355			$FormatedStartDate = ConvertSQLDate($myrow['startdate']);
356
357
358			printf('<tr class="striped_row">
359					<td><a href="%s">%s</a></td>
360					<td><a href="%s">' . _('Status') . '</a></td>
361					<td><a href="%s">' . _('Issue To') . '</a></td>
362					<td><a href="%s">' . _('Receive') . '</a></td>
363					<td><a href="%s">' . _('Costing') . '</a></td>
364					<td><a href="%s">' . _('Print W/O') . '</a></td>
365					<td>%s</td>
366					<td>%s - %s</td>
367					<td class="number">%s</td>
368					<td class="number">%s</td>
369					<td class="number">%s</td>
370					<td>%s</td>
371					<td>%s</td>
372					</tr>',
373					$ModifyPage,
374					$myrow['wo'].'['.$myrow['reference'] . ']',
375					$Status_WO,
376					$Issue_WO,
377					$Receive_WO,
378					$Costing_WO,
379					$Printing_WO,
380					$myrow['loccode'],
381					urlencode($myrow['stockid']),
382					$myrow['description'],
383					locale_number_format($myrow['qtyreqd'],$myrow['decimalplaces']),
384					locale_number_format($myrow['qtyrecd'],$myrow['decimalplaces']),
385					locale_number_format($myrow['qtyreqd']-$myrow['qtyrecd'],$myrow['decimalplaces']),
386					$FormatedStartDate,
387					$FormatedRequiredByDate);
388		}
389		//end of while loop
390
391			echo '</tbody></table>';
392      }
393	}
394
395	echo '</div>
396          </form>';
397}
398
399include('includes/footer.php');
400?>
401