From a756adaebf1b5f9bd6265e6f2388a7f2f180f585 Mon Sep 17 00:00:00 2001 From: Joe Hunt Date: Sat, 17 Oct 2015 14:42:42 +0200 Subject: [PATCH] Fixed wrong calculaiton of standard cost during Advanced Manufacturing. Petros. --- .../db/work_order_produce_items_db.inc | 4 ++-- manufacturing/includes/db/work_orders_db.inc | 22 ++++++++++++++----- .../includes/db/work_orders_quick_db.inc | 2 +- manufacturing/work_order_costs.php | 5 ++--- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/manufacturing/includes/db/work_order_produce_items_db.inc b/manufacturing/includes/db/work_order_produce_items_db.inc index 21dfc3e3..ac9171e7 100644 --- a/manufacturing/includes/db/work_order_produce_items_db.inc +++ b/manufacturing/includes/db/work_order_produce_items_db.inc @@ -70,8 +70,8 @@ function work_order_produce($woid, $ref, $quantity, $date_, $memo_, $close_wo) $m_cost += ($issue['qty_issued'] * $standard_cost); } } - $m_cost += get_gl_wo_cost($woid, WO_LABOUR); - $m_cost += get_gl_wo_cost($woid, WO_OVERHEAD); + $m_cost += (get_gl_wo_cost($woid, WO_LABOUR) / $quantity); + $m_cost += (get_gl_wo_cost($woid, WO_OVERHEAD) / $quantity); // insert a +ve stock move for the item being manufactured // negative means "unproduce" or unassemble diff --git a/manufacturing/includes/db/work_orders_db.inc b/manufacturing/includes/db/work_orders_db.inc index 431743a9..9f14876e 100644 --- a/manufacturing/includes/db/work_orders_db.inc +++ b/manufacturing/includes/db/work_orders_db.inc @@ -11,7 +11,7 @@ ***********************************************************************/ //-------------------------------------------------------------------------------------- -function add_material_cost($stock_id, $qty, $date_, $advanced=false) +function add_material_cost($stock_id, $qty, $date_, $advanced=false, $woid=0) { $m_cost = 0; $result = get_bom($stock_id); @@ -21,19 +21,29 @@ function add_material_cost($stock_id, $qty, $date_, $advanced=false) $m_cost += ($bom_item['quantity'] * $standard_cost); } $bom_cost = $m_cost; - + // new Joe Hunt 2015.10.15 + // additilnal costs. + if ($woid != 0 && work_order_has_issues($woid)) + { + $res = get_additional_issues($woid); + while ($issue = db_fetch($res)) + { + $standard_cost = get_standard_cost($issue['stock_id']); + $m_cost += ($issue['qty_issued'] * $standard_cost); + } + } $sql = "SELECT material_cost, labour_cost, overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = " .db_escape($stock_id); $result = db_query($sql); $myrow = db_fetch($result); $material_cost = $myrow['material_cost']; - + /* no, why will we do that?? Joe Hunt 2015.10.17 if ($advanced) { //reduce overhead_cost and labour_cost from price as those will remain as is $m_cost = $m_cost - $myrow['labour_cost'] - $myrow['overhead_cost']; } - + */ $qoh = get_qoh_on_date($stock_id); $cost_adjust = false; if ($qoh < 0) @@ -107,7 +117,7 @@ function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false) if ($qoh + $qty != 0) $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) / ($qoh + $qty); } - $sql = "UPDATE ".TB_PREF."stock_master SET overhead_cost=".db_escape($overhead_cost)." + $sql = "UPDATE ".TB_PREF."stock_master SET overhead_cost=overhead_cost+".db_escape($overhead_cost)." WHERE stock_id=".db_escape($stock_id); db_query($sql,"The cost details for the inventory item could not be updated"); } @@ -162,7 +172,7 @@ function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false) if ($qoh + $qty != 0) $labour_cost = ($qoh * $labour_cost + $qty * $costs) / ($qoh + $qty); } - $sql = "UPDATE ".TB_PREF."stock_master SET labour_cost=".db_escape($labour_cost)." + $sql = "UPDATE ".TB_PREF."stock_master SET labour_cost=labour_cost+".db_escape($labour_cost)." WHERE stock_id=".db_escape($stock_id); db_query($sql,"The cost details for the inventory item could not be updated"); } diff --git a/manufacturing/includes/db/work_orders_quick_db.inc b/manufacturing/includes/db/work_orders_quick_db.inc index 72b5c8df..e28ee7f0 100644 --- a/manufacturing/includes/db/work_orders_quick_db.inc +++ b/manufacturing/includes/db/work_orders_quick_db.inc @@ -153,7 +153,7 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced if ($advanced) { //Chaitanya: Material cost added at time of production as per BOM at the time and in adjustment mode. - add_material_cost($stock_id, $units_reqd, $date_, true); + add_material_cost($stock_id, $units_reqd, $date_, true, $woid); // $wo = get_work_order($woid); // also take the additional issues diff --git a/manufacturing/work_order_costs.php b/manufacturing/work_order_costs.php index e7e0fb07..2228a8cb 100644 --- a/manufacturing/work_order_costs.php +++ b/manufacturing/work_order_costs.php @@ -123,12 +123,11 @@ if (isset($_POST['process']) && can_process() == true) //Chaitanya : Apply the costs to manfuctured stock item as adjustement $wo = get_work_order($_POST['selected_id']); if ($_POST['PaymentType'] == 0) - add_labour_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true); + add_labour_cost($wo['stock_id'], $wo['units_reqd'], $_POST['date_'], input_num('costs'), true); else - add_overhead_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true); + add_overhead_cost($wo['stock_id'], $wo['units_reqd'], $_POST['date_'], input_num('costs'), true); commit_transaction(); - meta_forward($_SERVER['PHP_SELF'], "AddedID=".$_POST['selected_id']); } -- 2.30.2