webERP Forum

Full Version: Items Other than those in BOM are not listed in Status of Work Order even if issued
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

Say a work order is created for a Manufactured item M made of A + B + C as per BOM.

Now if an extra item D is also issued for this WO, and we check the status, it does not show the extra item D that is issued. Though this is accounted for and shown in the costing screen. It will be good if all the issued items are shown in the status screen / issue screen and not only those that are in the BOM of that manufactured item.

May be this issue is discussed earlier, but I searched and could not find previous posts and hence this post.

Yes, this looks like a bug. I agree it ought to show.

(03-18-2014, 10:41 PM)Forums3 Wrote: [ -> ]Yes, this looks like a bug. I agree it ought to show.


There is almost certainly a better way of doing it but if you remove lines 113 to 132 of WorkOrderStatus.php and replace them with:

$IssuedAlreadyResult = DB_query("SELECT stockid,
SUM(-qty) AS total
FROM stockmoves
WHERE stockmoves.type=28
AND reference='" . $SelectedWO . "'
GROUP BY stockid", $db);

while ($IssuedRow = DB_fetch_array($IssuedAlreadyResult)) {
$IssuedAlreadyRow[$IssuedRow['stockid']] = $IssuedRow['total'];

while ($RequirementsRow = DB_fetch_array($RequirmentsResult)) {
if ($RequirementsRow['autoissue'] == 0) {
echo '<tr>
<td>' . _('Manual Issue') . '</td>
<td>' . $RequirementsRow['stockid'] . ' - ' . $RequirementsRow['description'] . '</td>';
} else {
echo '<tr>
<td class="notavailable">' . _('Auto Issue') . '</td>
<td class="notavailable">' . $RequirementsRow['stockid'] . ' - ' . $RequirementsRow['description'] . '</td>';
if (isset($IssuedAlreadyRow[$RequirementsRow['stockid']])) {
$Issued = $IssuedAlreadyRow[$RequirementsRow['stockid']];
} else {
$Issued= 0;
echo '<td class="number">' . locale_number_format($WORow['qtyreqd'] * $RequirementsRow['qtypu'], $RequirementsRow['decimalplaces']) . '</td>
<td class="number">' . locale_number_format($Issued, $RequirementsRow['decimalplaces']) . '</td></tr>';

/* Now do any additional issues of items not in the BOM */
foreach ($IssuedAlreadyRow as $StockID=>$Issued) {
$RequirementsSQL = "SELECT stockmaster.description,
FROM stockmaster
WHERE stockid='" . $StockID . "'";
$RequirmentsResult = DB_query($RequirementsSQL, $db);
$RequirementsRow = DB_fetch_array($RequirmentsResult);
echo '<tr>
<td>' . _('Additional Issue') . '</td>
<td>' . $StockID . ' - ' . $RequirementsRow['description'] . '</td>';
echo '<td class="number">0</td>
<td class="number">' . locale_number_format($Issued, $RequirementsRow['decimalplaces']) . '</td>

it should work. Let me know if it works for you.

Thanks Tim
Hi, newuser990 and Tim,

Thank you very much for your report and patch. I've commit it to trunk.

Best regards!

Dear Tim and Exsonqu_qu

Thanks for the commit. Its working Great. Smile

I was thinking a similar change is required to WorkOrderIssue.php since it is important to display all that is already issued while issuing the materials.


Hi, newuser990,

Thank you for your report. Now the problem also fixed in WorkOrderIssue.php in the trunk.

Best regards!

Hi Exson,

Apologies for the delay, I have only just got around to reviewing this commit. There are a couple of errors in the WorkOrderissue.php script. In the sql statement at line 658 you have descrption, which should be description.

On line 629 you have

$IssuedMaterials[$myrow['stockid']]['description'] = $myrow['description'];

but the sql that $myrow refers to only has two fields "SELECT stockid, SUM(-qty) as total FROM stockmoves WHERE stockmoves.type=28AND reference='" . $_POST['WO'] . "' GROUP BY stockid" so no reference to description field.

If you refer to the way I did WorkOrderStatus.php you can see what I mean.

Errors like these can be found more easily if you set error_reporting to be -1 at development time.

Hi, Tim,

Thank you for your review.

It's fixed now.

Best regards!

Conceptually I would think that if we issue something to a W/O that is not in the worequirements table then we should create the worequirements record with qtypu = 0 so that everything required and or issued is in 1 table.
Is there a reason doing this would not be warranted? It would simplify many queries and reports downstream is a company often uses substitute items in their processes.