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" /> ' . _('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> 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> 173 <input type="submit" name="SearchOrders" value="' . _('Search') . '" /> 174 <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'] . '&StockID=' . urlencode($myrow['stockid']); 349 $Receive_WO = $RootPath . '/WorkOrderReceive.php?WO=' .$myrow['wo'] . '&StockID=' . urlencode($myrow['stockid']); 350 $Issue_WO = $RootPath . '/WorkOrderIssue.php?WO=' .$myrow['wo'] . '&StockID=' . urlencode($myrow['stockid']); 351 $Costing_WO =$RootPath . '/WorkOrderCosting.php?WO=' .$myrow['wo']; 352 $Printing_WO =$RootPath . '/PDFWOPrint.php?WO=' .$myrow['wo'] . '&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