[0004735] Search Outstanding Work Orders: voided work orders excluded.
[fa-stable.git] / manufacturing / includes / db / work_order_requirements_db.inc
index 71f9e50a1854664ede79edb45aadae50af7a3a46..090c8c548abc3a0dc0089833631ef132b2641691 100644 (file)
 ***********************************************************************/
 function get_wo_requirements($woid)
 {
-       $sql = "SELECT ".TB_PREF."wo_requirements.*, ".TB_PREF."stock_master.description,
-               ".TB_PREF."stock_master.mb_flag, 
-               ".TB_PREF."locations.location_name, 
-               ".TB_PREF."workcentres.name AS WorkCentreDescription FROM 
-               (".TB_PREF."wo_requirements, ".TB_PREF."locations, ".TB_PREF."workcentres) INNER JOIN ".TB_PREF."stock_master ON 
-               ".TB_PREF."wo_requirements.stock_id = ".TB_PREF."stock_master.stock_id 
-               WHERE workorder_id=$woid
-               AND ".TB_PREF."locations.loc_code = ".TB_PREF."wo_requirements.loc_code
-               AND ".TB_PREF."workcentres.id=workcentre";
+       $sql = "SELECT req.*, item.description, item.mb_flag, loc.location_name, 
+                       center.name AS WorkCentreDescription,
+                       item.material_cost as ComponentCost,
+                       item.inventory_account,
+                       item.cogs_account
+               FROM (".TB_PREF."wo_requirements req,"
+                       .TB_PREF."locations loc,"
+                       .TB_PREF."workcentres center)
+                       INNER JOIN ".TB_PREF."stock_master item ON req.stock_id=item.stock_id 
+               WHERE workorder_id=".db_escape($woid)."
+               AND loc.loc_code = req.loc_code
+               AND center.id=workcentre";
 
        return db_query($sql, "The work order requirements could not be retrieved");    
 }
 
+function get_requirements_costs($woid)
+{
+       $sql = "SELECT SUM(units_req*unit_cost) cost
+               FROM ".TB_PREF."wo_requirements
+               WHERE workorder_id=".db_escape($woid);
+
+       $result = db_query($sql, "The work order requirements costs could not be retrieved");
+       $costs = db_fetch($result);
+
+       return $costs['cost'] ? $costs['cost'] : 0;
+}
+
 //--------------------------------------------------------------------------------------
 
 function create_wo_requirements($woid, $stock_id)
 {
-       // create Work Order Requirements based on the bom
-       $result = get_bom($stock_id);   
-       
-       while ($myrow = db_fetch($result)) 
-       {
-               
-               $sql = "INSERT INTO ".TB_PREF."wo_requirements (workorder_id, stock_id, workcentre, units_req, loc_code)
-                       VALUES ($woid, '" .
-                       $myrow["component"] . "', '"    .
-                       $myrow["workcentre_added"] . "', '"     .
-                       $myrow["quantity"] . "', '"     .
-                       $myrow["loc_code"] . "')";
-                       
-        db_query($sql, "The work order requirements could not be added");
-       }               
+       $sql = "INSERT INTO ".TB_PREF."wo_requirements (workorder_id, stock_id, workcentre, units_req, loc_code)
+               SELECT ".db_escape($woid).", component, workcentre_added, quantity, loc_code
+               FROM ".TB_PREF."bom WHERE parent=".db_escape($stock_id);
+
+    db_query($sql, "The work order requirements could not be added");
 }
 
 //--------------------------------------------------------------------------------------
 
 function delete_wo_requirements($woid)
 {
-       $sql="DELETE FROM ".TB_PREF."wo_requirements WHERE workorder_id=$woid";
+       $sql="DELETE FROM ".TB_PREF."wo_requirements WHERE workorder_id=".db_escape($woid);
        db_query($sql,"The work order requirements could not be deleted");      
 }
 
 
 //--------------------------------------------------------------------------------------
-
-function update_wo_requirement_issued($woReqID, $quantity)
+/*
+       Update total component units issued and average component cost
+*/
+function update_wo_requirement_issued($id, $quantity, $cost)
 {
-       $sql = "UPDATE ".TB_PREF."wo_requirements SET units_issued = units_issued + $quantity
-               WHERE id = '$woReqID'";
-                               
+       $sql = "UPDATE ".TB_PREF."wo_requirements SET 
+                               unit_cost = (units_issued*unit_cost+".$quantity*$cost.")/(units_issued+".$quantity."),
+                               units_issued = units_issued + ".db_escape($quantity)."
+                       WHERE id = ".db_escape($id);
+
        db_query($sql, "The work requirements issued quantity couldn't be updated");
 }
 
@@ -68,11 +77,9 @@ function update_wo_requirement_issued($woReqID, $quantity)
 
 function void_wo_requirements($woid)
 {
-       $sql = "UPDATE ".TB_PREF."wo_requirements SET units_issued = 0 WHERE workorder_id = $woid";
-                               
+       $sql = "UPDATE ".TB_PREF."wo_requirements SET units_issued = 0
+               WHERE workorder_id = ".db_escape($woid);
+
        db_query($sql, "The work requirements issued quantity couldn't be voided");     
 }
 
-//--------------------------------------------------------------------------------------
-
-?>
\ No newline at end of file