From 6d65fde699a327a6fee0d8d46abf8d2b37e53947 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Sat, 26 Mar 2011 11:54:30 +0100 Subject: [PATCH 1/1] EOL cleanup. --- inventory/cost_update.php | 6 +- inventory/includes/db/items_adjust_db.inc | 68 +-- inventory/includes/db/items_trans_db.inc | 40 +- inventory/manage/item_codes.php | 6 +- inventory/purchasing_data.php | 6 +- .../includes/db/work_order_issues_db.inc | 126 +++--- .../db/work_order_produce_items_db.inc | 104 ++--- manufacturing/includes/db/work_orders_db.inc | 396 +++++++++--------- .../includes/db/work_orders_quick_db.inc | 86 ++-- manufacturing/work_order_costs.php | 18 +- reporting/rep305.php | 142 +++---- 11 files changed, 499 insertions(+), 499 deletions(-) diff --git a/inventory/cost_update.php b/inventory/cost_update.php index 0d872191..7268d797 100644 --- a/inventory/cost_update.php +++ b/inventory/cost_update.php @@ -83,14 +83,14 @@ if (!isset($_POST['stock_id'])) $_POST['stock_id'] = get_global_stock_item(); echo "
" . _("Item:"). " "; -//echo stock_costable_items_list('stock_id', $_POST['stock_id'], false, true); -echo stock_items_list('stock_id', $_POST['stock_id'], false, true); +//echo stock_costable_items_list('stock_id', $_POST['stock_id'], false, true); +echo stock_items_list('stock_id', $_POST['stock_id'], false, true); echo "

"; set_global_stock_item($_POST['stock_id']); $myrow = get_item($_POST['stock_id']); - + div_start('cost_table'); hidden("OldMaterialCost", $myrow["material_cost"]); hidden("OldLabourCost", $myrow["labour_cost"]); diff --git a/inventory/includes/db/items_adjust_db.inc b/inventory/includes/db/items_adjust_db.inc index 77d5b02e..7be0f9bb 100644 --- a/inventory/includes/db/items_adjust_db.inc +++ b/inventory/includes/db/items_adjust_db.inc @@ -51,7 +51,7 @@ function add_stock_adjustment($items, $location, $date_, $type, $increase, $refe function void_stock_adjustment($type_no) { hook_db_prevoid(ST_INVADJUST, $type_no); - void_gl_trans(ST_INVADJUST, $type_no); + void_gl_trans(ST_INVADJUST, $type_no); void_stock_move(ST_INVADJUST, $type_no); } @@ -81,39 +81,39 @@ function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $type, display_db_error("Cannot do inventory adjustment for Service item : $stock_id", ""); } - /* Logic shifted to function update_average_material_cost - //Chaitanya : If negative adjustment result in negative or zero inventory - //then difference should be adjusted - $qoh = get_qoh_on_date($stock_id); - if ($qoh + $quantity <= 0 && $qoh > 0) //Positive inventory turning zero/negative - { - global $Refs; - - $id = get_next_trans_no(ST_JOURNAL); - $ref = $Refs->get_next(ST_JOURNAL); - $diff = get_standard_cost($stock_id) - $standard_cost; - - if ($diff !=0) - { - $stock_gl_code = get_stock_gl_code($stock_id); - $memo = _("For zero inventory of ").$stock_id." INVADJ REF: ".$reference; - //Reverse the inventory effect if $qoh <=0 - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["inventory_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - -$qoh * $diff); - //GL Posting to inventory adjustment account - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["adjustment_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - $qoh * $diff); - - add_audit_trail(ST_JOURNAL, $id, $date_); - add_comments(ST_JOURNAL, $id, $date_, $memo); - $Refs->save(ST_JOURNAL, $id, $ref); - } - }*/ - + /* Logic shifted to function update_average_material_cost + //Chaitanya : If negative adjustment result in negative or zero inventory + //then difference should be adjusted + $qoh = get_qoh_on_date($stock_id); + if ($qoh + $quantity <= 0 && $qoh > 0) //Positive inventory turning zero/negative + { + global $Refs; + + $id = get_next_trans_no(ST_JOURNAL); + $ref = $Refs->get_next(ST_JOURNAL); + $diff = get_standard_cost($stock_id) - $standard_cost; + + if ($diff !=0) + { + $stock_gl_code = get_stock_gl_code($stock_id); + $memo = _("For zero inventory of ").$stock_id." INVADJ REF: ".$reference; + //Reverse the inventory effect if $qoh <=0 + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["inventory_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + -$qoh * $diff); + //GL Posting to inventory adjustment account + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["adjustment_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + $qoh * $diff); + + add_audit_trail(ST_JOURNAL, $id, $date_); + add_comments(ST_JOURNAL, $id, $date_, $memo); + $Refs->save(ST_JOURNAL, $id, $ref); + } + }*/ + update_average_material_cost(null, $stock_id, $standard_cost, $quantity, $date_); add_stock_move(ST_INVADJUST, $stock_id, $adj_id, $location, diff --git a/inventory/includes/db/items_trans_db.inc b/inventory/includes/db/items_trans_db.inc index 3d364a44..78930e81 100644 --- a/inventory/includes/db/items_trans_db.inc +++ b/inventory/includes/db/items_trans_db.inc @@ -16,20 +16,20 @@ function stock_cost_update($stock_id, $material_cost, $labour_cost, $overhead_co { $mb_flag = get_mb_flag($stock_id); - $update_no = -1; - + $update_no = -1; + if (is_service($mb_flag)) { - //display_db_error("Cannot do cost update for Service item : $stock_id", ""); - - //Chaitanya - $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)." - WHERE stock_id=".db_escape($stock_id); - - db_query($sql,"The cost details for the inventory item could not be updated"); - - return $update_no; - + //display_db_error("Cannot do cost update for Service item : $stock_id", ""); + + //Chaitanya + $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)." + WHERE stock_id=".db_escape($stock_id); + + db_query($sql,"The cost details for the inventory item could not be updated"); + + return $update_no; + } begin_transaction(); @@ -44,26 +44,26 @@ function stock_cost_update($stock_id, $material_cost, $labour_cost, $overhead_co $qoh = get_qoh_on_date($_POST['stock_id']); $date_ = Today(); - if (!is_date_in_fiscalyear($date_)) - $date_ = end_fiscalyear(); - + if (!is_date_in_fiscalyear($date_)) + $date_ = end_fiscalyear(); + if ($qoh > 0) { $new_cost = $material_cost + $labour_cost + $overhead_cost; $value_of_change = round2($qoh * ($new_cost - $last_cost), user_price_dec()); - + if ($value_of_change != 0) - { - $stock_gl_code = get_stock_gl_code($stock_id); - $update_no = get_next_trans_no(ST_COSTUPDATE); + { + $stock_gl_code = get_stock_gl_code($stock_id); + $update_no = get_next_trans_no(ST_COSTUPDATE); $memo_ = "Cost was " . $last_cost . " changed to " . $new_cost . " x quantity on hand of $qoh"; add_gl_trans_std_cost(ST_COSTUPDATE, $update_no, $date_, $stock_gl_code["adjustment_account"], $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"], $memo_, (-$value_of_change)); add_gl_trans_std_cost(ST_COSTUPDATE, $update_no, $date_, $stock_gl_code["inventory_account"], 0, 0, $memo_, $value_of_change); - } + } } add_audit_trail(ST_COSTUPDATE, $update_no, $date_); diff --git a/inventory/manage/item_codes.php b/inventory/manage/item_codes.php index 1b37162f..892c0a35 100644 --- a/inventory/manage/item_codes.php +++ b/inventory/manage/item_codes.php @@ -103,9 +103,9 @@ if (!isset($_POST['stock_id'])) $_POST['stock_id'] = get_global_stock_item(); echo "
" . _("Item:"). " "; -//Chaitanya : Manufcatured item visible -echo stock_items_list('stock_id', $_POST['stock_id'], false, true); -//echo stock_purchasable_items_list('stock_id', $_POST['stock_id'], false, true); +//Chaitanya : Manufcatured item visible +echo stock_items_list('stock_id', $_POST['stock_id'], false, true); +//echo stock_purchasable_items_list('stock_id', $_POST['stock_id'], false, true); echo "
"; diff --git a/inventory/purchasing_data.php b/inventory/purchasing_data.php index f85bc089..0a7a01c3 100644 --- a/inventory/purchasing_data.php +++ b/inventory/purchasing_data.php @@ -99,9 +99,9 @@ if (!isset($_POST['stock_id'])) $_POST['stock_id'] = get_global_stock_item(); echo "
" . _("Item:"). " "; -//Chaitanya : All items can be purchased -echo stock_items_list('stock_id', $_POST['stock_id'], false, true); -//echo stock_purchasable_items_list('stock_id', $_POST['stock_id'], false, true); +//Chaitanya : All items can be purchased +echo stock_items_list('stock_id', $_POST['stock_id'], false, true); +//echo stock_purchasable_items_list('stock_id', $_POST['stock_id'], false, true); echo "
"; diff --git a/manufacturing/includes/db/work_order_issues_db.inc b/manufacturing/includes/db/work_order_issues_db.inc index 7cc79f00..ca2f4a86 100644 --- a/manufacturing/includes/db/work_order_issues_db.inc +++ b/manufacturing/includes/db/work_order_issues_db.inc @@ -55,11 +55,11 @@ function add_work_order_issue($woid, $ref, $to_work_order, $items, $location, $w if ($to_work_order) $item->quantity = -$item->quantity; - //Chaitanya: Stamp the standard_cost - $standard_cost = get_standard_cost($item->stock_id); + //Chaitanya: Stamp the standard_cost + $standard_cost = get_standard_cost($item->stock_id); // insert a -ve stock move for each item add_stock_move(ST_MANUISSUE, $item->stock_id, $number, - $location, $date_, $memo_, -$item->quantity, $standard_cost); + $location, $date_, $memo_, -$item->quantity, $standard_cost); $sql = "INSERT INTO ".TB_PREF."wo_issue_items (issue_id, stock_id, qty_issued) VALUES (".db_escape($number).", ".db_escape($item->stock_id).", " @@ -70,20 +70,20 @@ function add_work_order_issue($woid, $ref, $to_work_order, $items, $location, $w $issue_cost = $standard_cost * $item->quantity; $issue = get_stock_gl_code($item->stock_id); $stockitem = get_item($item->stock_id); - - //Chaitanya : Compatibility for Service Items - if (!is_service($issue["mb_flag"])) - $ivaccount = $issue["inventory_account"]; - else - $ivaccount = $issue["cogs_account"]; - - $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, + + //Chaitanya : Compatibility for Service Items + if (!is_service($issue["mb_flag"])) + $ivaccount = $issue["inventory_account"]; + else + $ivaccount = $issue["cogs_account"]; + + $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, $date_.": "._("Issue of")." ".$stockitem["description"], -$issue_cost); $issue_total += $issue_cost; } if ($issue_total != 0) - //Chaitanya : Apply cost to QOH as adjustment only - add_issue_cost($details['stock_id'], $details['units_reqd'], $date_, $issue_total, true); + //Chaitanya : Apply cost to QOH as adjustment only + add_issue_cost($details['stock_id'], $details['units_reqd'], $date_, $issue_total, true); $issue = get_stock_gl_code($details['stock_id']); $stockitem = get_item($details['stock_id']); add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $issue["inventory_account"], @@ -166,63 +166,63 @@ function void_work_order_issue($type_no) { begin_transaction(); hook_db_prevoid(ST_MANUISSUE, $type_no); - - //Chaitanya : Skip processing already voided entry i.e. explicitly voided - $void_entry = get_voided_entry(ST_MANUISSUE, $type_no); - if ($void_entry) - return; + + //Chaitanya : Skip processing already voided entry i.e. explicitly voided + $void_entry = get_voided_entry(ST_MANUISSUE, $type_no); + if ($void_entry) + return; // void the actual issue items and their quantities $sql = "UPDATE ".TB_PREF."wo_issue_items Set qty_issued = 0 WHERE issue_id=" .db_escape($type_no); db_query($sql,"A work order issue item could not be voided"); - // void any related gl trans - //Chaitanya : Nothing happens due to next statement as all gl postings are done against WO - //void_gl_trans(ST_MANUISSUE, $type_no, true); - - //Chaitanya : Reverse the gl posting - $issue = get_work_order_issue($type_no); - $manf_stock_id = $issue["stock_id"]; - $date_ = sql2date($issue["issue_date"]); - $woid = $issue["workorder_id"]; - - $result = get_stock_moves(ST_MANUISSUE, $type_no); - $total_cost = 0; - $issue_total = 0; - while ($myrow = db_fetch($result)) - { - $issue_cost = $myrow["qty"]*$myrow["standard_cost"]; - $issue = get_stock_gl_code($myrow["stock_id"]); - $stockitem = get_item($myrow["stock_id"]); - - //Chaitanya : Compatibility for Service Items - if (!is_service($issue["mb_flag"])) - $ivaccount = $issue["inventory_account"]; - else - $ivaccount = $issue["cogs_account"]; - - if ($issue_cost != 0) - { - $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, - $date_.": "._("Reversed the issue of")." ".$stockitem["description"], - -$issue_cost); - $issue_total += $issue_cost; - } - } - if ($issue_total != 0) - //Chaitanya : Revese cost effect on manfactured stock item as adjustment only - add_issue_cost($manf_stock_id, 0, $date_, $issue_total, true); - $issue = get_stock_gl_code($manf_stock_id); - $stockitem = get_item($manf_stock_id); - if ($total_cost != 0) - add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $issue["inventory_account"], - 0, 0, $date_.": "._("Reversed the issue to")." ".$stockitem["description"], - -$total_cost); - - //Chaitanya : Shifted below void all related stock moves + // void any related gl trans + //Chaitanya : Nothing happens due to next statement as all gl postings are done against WO + //void_gl_trans(ST_MANUISSUE, $type_no, true); + + //Chaitanya : Reverse the gl posting + $issue = get_work_order_issue($type_no); + $manf_stock_id = $issue["stock_id"]; + $date_ = sql2date($issue["issue_date"]); + $woid = $issue["workorder_id"]; + + $result = get_stock_moves(ST_MANUISSUE, $type_no); + $total_cost = 0; + $issue_total = 0; + while ($myrow = db_fetch($result)) + { + $issue_cost = $myrow["qty"]*$myrow["standard_cost"]; + $issue = get_stock_gl_code($myrow["stock_id"]); + $stockitem = get_item($myrow["stock_id"]); + + //Chaitanya : Compatibility for Service Items + if (!is_service($issue["mb_flag"])) + $ivaccount = $issue["inventory_account"]; + else + $ivaccount = $issue["cogs_account"]; + + if ($issue_cost != 0) + { + $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, + $date_.": "._("Reversed the issue of")." ".$stockitem["description"], + -$issue_cost); + $issue_total += $issue_cost; + } + } + if ($issue_total != 0) + //Chaitanya : Revese cost effect on manfactured stock item as adjustment only + add_issue_cost($manf_stock_id, 0, $date_, $issue_total, true); + $issue = get_stock_gl_code($manf_stock_id); + $stockitem = get_item($manf_stock_id); + if ($total_cost != 0) + add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $issue["inventory_account"], + 0, 0, $date_.": "._("Reversed the issue to")." ".$stockitem["description"], + -$total_cost); + + //Chaitanya : Shifted below void all related stock moves void_stock_move(ST_MANUISSUE, $type_no); - + commit_transaction(); } diff --git a/manufacturing/includes/db/work_order_produce_items_db.inc b/manufacturing/includes/db/work_order_produce_items_db.inc index 1c72f94f..38af2add 100644 --- a/manufacturing/includes/db/work_order_produce_items_db.inc +++ b/manufacturing/includes/db/work_order_produce_items_db.inc @@ -44,26 +44,26 @@ function work_order_produce($woid, $ref, $quantity, $date_, $memo_, $close_wo) db_query($sql,"A work order manufacture could not be added"); $id = db_insert_id(); - - // ------------------------------------------------------------------------- + + // ------------------------------------------------------------------------- - work_order_quick_costs($woid, $details["stock_id"], $quantity, $date_, $id); - + work_order_quick_costs($woid, $details["stock_id"], $quantity, $date_, $id); + // ------------------------------------------------------------------------- - // Chaitanya: stamp BOM cost to finished item - $m_cost = 0; - $result = get_bom($details["stock_id"]); - while ($bom_item = db_fetch($result)) - { - $standard_cost = get_standard_cost($bom_item['component']); - $m_cost += ($bom_item['quantity'] * $standard_cost); - } + // Chaitanya: stamp BOM cost to finished item + $m_cost = 0; + $result = get_bom($details["stock_id"]); + while ($bom_item = db_fetch($result)) + { + $standard_cost = get_standard_cost($bom_item['component']); + $m_cost += ($bom_item['quantity'] * $standard_cost); + } // insert a +ve stock move for the item being manufactured // negative means "unproduce" or unassemble add_stock_move(ST_MANURECEIVE, $details["stock_id"], $id, - $details["loc_code"], $date_, $ref, $quantity, $m_cost); + $details["loc_code"], $date_, $ref, $quantity, $m_cost); // update wo quantity and close wo if requested work_order_update_finished_quantity($woid, $quantity, $close_wo); @@ -118,53 +118,53 @@ function void_work_order_produce($type_no) { begin_transaction(); hook_db_prevoid(ST_MANURECEIVE, $type_no); - - //Chaitanya : Skip processing already voided entry i.e. explicitly voided - $void_entry = get_voided_entry(ST_MANURECEIVE, $type_no); - if ($void_entry) - return; + + //Chaitanya : Skip processing already voided entry i.e. explicitly voided + $void_entry = get_voided_entry(ST_MANURECEIVE, $type_no); + if ($void_entry) + return; $row = get_work_order_produce($type_no); // deduct the quantity of this production from the parent work order work_order_update_finished_quantity($row["workorder_id"], -$row["quantity"]); - //Chaitanya : skipped this step as BOM may have got changed - //work_order_quick_costs($row['workorder_id'], $row['stock_id'], -$row['quantity'], sql2date($row['date_']), $type_no); - - // void any related gl trans - //Chaitanya : Nothing happens due to next statement as all gl postings are done against WO - //void_gl_trans(ST_MANURECEIVE, $type_no, true); - - $woid = $row["workorder_id"]; - $date_ = sql2date($row["date_"]); - - $result = get_stock_moves(ST_MANURECEIVE, $type_no); - while ($myrow = db_fetch($result)) - { - $issue_cost = $myrow["qty"]*$myrow["standard_cost"]; - $issue = get_stock_gl_code($myrow["stock_id"]); - $stockitem = get_item($myrow["stock_id"]); - - //Chaitanya : Compatibility for Service Items - if (!is_service($issue["mb_flag"])) - $ivaccount = $issue["inventory_account"]; - else - $ivaccount = $issue["cogs_account"]; - - if ($issue_cost != 0) - { - add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, - $date_.": "._("Reversed the production ")." ".$stockitem["description"], - -$issue_cost); - } - } - + //Chaitanya : skipped this step as BOM may have got changed + //work_order_quick_costs($row['workorder_id'], $row['stock_id'], -$row['quantity'], sql2date($row['date_']), $type_no); + + // void any related gl trans + //Chaitanya : Nothing happens due to next statement as all gl postings are done against WO + //void_gl_trans(ST_MANURECEIVE, $type_no, true); + + $woid = $row["workorder_id"]; + $date_ = sql2date($row["date_"]); + + $result = get_stock_moves(ST_MANURECEIVE, $type_no); + while ($myrow = db_fetch($result)) + { + $issue_cost = $myrow["qty"]*$myrow["standard_cost"]; + $issue = get_stock_gl_code($myrow["stock_id"]); + $stockitem = get_item($myrow["stock_id"]); + + //Chaitanya : Compatibility for Service Items + if (!is_service($issue["mb_flag"])) + $ivaccount = $issue["inventory_account"]; + else + $ivaccount = $issue["cogs_account"]; + + if ($issue_cost != 0) + { + add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, + $date_.": "._("Reversed the production ")." ".$stockitem["description"], + -$issue_cost); + } + } + // clear the production record $sql = "UPDATE ".TB_PREF."wo_manufacture SET quantity=0 WHERE id=".db_escape($type_no); - db_query($sql, "Cannot void a wo production"); - - //Chaitanya : Shifted below + db_query($sql, "Cannot void a wo production"); + + //Chaitanya : Shifted below // void all related stock moves void_stock_move(ST_MANURECEIVE, $type_no); diff --git a/manufacturing/includes/db/work_orders_db.inc b/manufacturing/includes/db/work_orders_db.inc index 8cee8bd9..981b0006 100644 --- a/manufacturing/includes/db/work_orders_db.inc +++ b/manufacturing/includes/db/work_orders_db.inc @@ -11,8 +11,8 @@ ***********************************************************************/ //-------------------------------------------------------------------------------------- -//Chaitanya : Added $advanced Parameter for Advanced Manufacturing -function add_material_cost($stock_id, $qty, $date_, $advanced=false) +//Chaitanya : Added $advanced Parameter for Advanced Manufacturing +function add_material_cost($stock_id, $qty, $date_, $advanced=false) { $m_cost = 0; $result = get_bom($stock_id); @@ -21,46 +21,46 @@ function add_material_cost($stock_id, $qty, $date_, $advanced=false) $standard_cost = get_standard_cost($bom_item['component']); $m_cost += ($bom_item['quantity'] * $standard_cost); } - $bom_cost = $m_cost; - + $bom_cost = $m_cost; + //$dec = user_price_dec(); //price_decimal_format($m_cost, $dec); - $sql = "SELECT material_cost, labour_cost, overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = " + $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']; - - //Chaitanya : Upating material cost without considering labour, overhead costs results in invalid costing - 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']; - } - + + //Chaitanya : Upating material cost without considering labour, overhead costs results in invalid costing + 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, null, $date_); $qoh = get_qoh_on_date($stock_id); - $cost_adjust = false; + $cost_adjust = false; if ($qoh < 0) - { - if ($qoh + $qty >= 0) - $cost_adjust = true; + { + if ($qoh + $qty >= 0) + $cost_adjust = true; $qoh = 0; - } + } if ($qoh + $qty != 0) $material_cost = ($qoh * $material_cost + $qty * $m_cost) / ($qoh + $qty); - //$material_cost = round2($material_cost, $dec); - - if ($advanced && $cost_adjust) // new 2010-02-10 - adjust_deliveries($stock_id, $bom_cost, $date_); - - $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)." - WHERE stock_id=".db_escape($stock_id); + //$material_cost = round2($material_cost, $dec); + + if ($advanced && $cost_adjust) // new 2010-02-10 + adjust_deliveries($stock_id, $bom_cost, $date_); + + $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)." + WHERE stock_id=".db_escape($stock_id); db_query($sql,"The cost details for the inventory item could not be updated"); } -//Chaitanya : Added Adjustement Only Parameter -function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false) +//Chaitanya : Added Adjustement Only Parameter +function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { //$dec = user_price_dec(); //price_decimal_format($costs, $dec); @@ -75,50 +75,50 @@ function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false) $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($adj_only) - { - if ($qty != 0) - $costs = $qty * $costs; - if ($qoh>0) - $overhead_cost = ($qoh * $overhead_cost + $costs) / $qoh; - else //Chaitanya : Pass JV if qoh is 0/negative - { - global $Refs; - - $id = get_next_trans_no(ST_JOURNAL); - $ref = $Refs->get_next(ST_JOURNAL); - - $stock_gl_code = get_stock_gl_code($stock_id); - $memo = "WO Overhead cost settlement JV for zero/negative respository of ".$stock_id; - //Reverse the inventory effect if $qoh <=0 - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["inventory_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - -$costs); - //GL Posting to inventory adjustment account - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["adjustment_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - $costs); - - add_audit_trail(ST_JOURNAL, $id, $date_); - add_comments(ST_JOURNAL, $id, $date_, $memo); - $Refs->save(ST_JOURNAL, $id, $ref); - } - } - else - { - if ($qoh + $qty != 0) - $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) / ($qoh + $qty); - } + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $overhead_cost = ($qoh * $overhead_cost + $costs) / $qoh; + else //Chaitanya : Pass JV if qoh is 0/negative + { + global $Refs; + + $id = get_next_trans_no(ST_JOURNAL); + $ref = $Refs->get_next(ST_JOURNAL); + + $stock_gl_code = get_stock_gl_code($stock_id); + $memo = "WO Overhead cost settlement JV for zero/negative respository of ".$stock_id; + //Reverse the inventory effect if $qoh <=0 + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["inventory_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + -$costs); + //GL Posting to inventory adjustment account + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["adjustment_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + $costs); + + add_audit_trail(ST_JOURNAL, $id, $date_); + add_comments(ST_JOURNAL, $id, $date_, $memo); + $Refs->save(ST_JOURNAL, $id, $ref); + } + } + else + { + if ($qoh + $qty != 0) + $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) / ($qoh + $qty); + } //$overhead_cost = round2($overhead_cost, $dec); $sql = "UPDATE ".TB_PREF."stock_master SET 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"); } -//Chaitanya : Added Adjustement Only Parameter -function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false) +//Chaitanya : Added Adjustement Only Parameter +function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { //$dec = user_price_dec(); //price_decimal_format($costs, $dec); @@ -133,50 +133,50 @@ function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false) $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($adj_only) - { - if ($qty != 0) - $costs = $qty * $costs; - if ($qoh>0) - $labour_cost = ($qoh * $labour_cost + $costs) / $qoh; - else //Chaitanya : Pass JV if qoh is 0/negative - { - global $Refs; - - $id = get_next_trans_no(ST_JOURNAL); - $ref = $Refs->get_next(ST_JOURNAL); - - $stock_gl_code = get_stock_gl_code($stock_id); - $memo = "WO labour cost settlement JV for zero/negative respository of ".$stock_id; - //Reverse the inventory effect if $qoh <=0 - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["inventory_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - -$costs); - //GL Posting to inventory adjustment account - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["adjustment_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - $costs); - - add_audit_trail(ST_JOURNAL, $id, $date_); - add_comments(ST_JOURNAL, $id, $date_, $memo); - $Refs->save(ST_JOURNAL, $id, $ref); - } - } - else - { - if ($qoh + $qty != 0) - $labour_cost = ($qoh * $labour_cost + $qty * $costs) / ($qoh + $qty); - } + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $labour_cost = ($qoh * $labour_cost + $costs) / $qoh; + else //Chaitanya : Pass JV if qoh is 0/negative + { + global $Refs; + + $id = get_next_trans_no(ST_JOURNAL); + $ref = $Refs->get_next(ST_JOURNAL); + + $stock_gl_code = get_stock_gl_code($stock_id); + $memo = "WO labour cost settlement JV for zero/negative respository of ".$stock_id; + //Reverse the inventory effect if $qoh <=0 + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["inventory_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + -$costs); + //GL Posting to inventory adjustment account + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["adjustment_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + $costs); + + add_audit_trail(ST_JOURNAL, $id, $date_); + add_comments(ST_JOURNAL, $id, $date_, $memo); + $Refs->save(ST_JOURNAL, $id, $ref); + } + } + else + { + if ($qoh + $qty != 0) + $labour_cost = ($qoh * $labour_cost + $qty * $costs) / ($qoh + $qty); + } //$labour_cost = round2($labour_cost, $dec); $sql = "UPDATE ".TB_PREF."stock_master SET 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"); } -//Chaitanya : Added Adjustement Only Parameter -function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false) +//Chaitanya : Added Adjustement Only Parameter +function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { if ($qty != 0) $costs /= $qty; @@ -191,42 +191,42 @@ function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false) $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($adj_only) - { - if ($qty != 0) - $costs = $qty * $costs; - if ($qoh>0) - $material_cost = $costs / $qoh; - else //Chaitanya : Pass JV if qoh is 0/negative - { - global $Refs; - - $id = get_next_trans_no(ST_JOURNAL); - $ref = $Refs->get_next(ST_JOURNAL); - - $stock_gl_code = get_stock_gl_code($stock_id); - $memo = "WO Issue settlement JV for zero/negative respository of ".$stock_id; - //Reverse the inventory effect if $qoh <=0 - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["inventory_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - -$costs); - //GL Posting to inventory adjustment account - add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, - $stock_gl_code["adjustment_account"], - $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, - $costs); - - add_audit_trail(ST_JOURNAL, $id, $date_); - add_comments(ST_JOURNAL, $id, $date_, $memo); - $Refs->save(ST_JOURNAL, $id, $ref); - } - } - else - { - if ($qoh + $qty != 0) - $material_cost = ($qty * $costs) / ($qoh + $qty); - } + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $material_cost = $costs / $qoh; + else //Chaitanya : Pass JV if qoh is 0/negative + { + global $Refs; + + $id = get_next_trans_no(ST_JOURNAL); + $ref = $Refs->get_next(ST_JOURNAL); + + $stock_gl_code = get_stock_gl_code($stock_id); + $memo = "WO Issue settlement JV for zero/negative respository of ".$stock_id; + //Reverse the inventory effect if $qoh <=0 + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["inventory_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + -$costs); + //GL Posting to inventory adjustment account + add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, + $stock_gl_code["adjustment_account"], + $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, + $costs); + + add_audit_trail(ST_JOURNAL, $id, $date_); + add_comments(ST_JOURNAL, $id, $date_, $memo); + $Refs->save(ST_JOURNAL, $id, $ref); + } + } + else + { + if ($qoh + $qty != 0) + $material_cost = ($qty * $costs) / ($qoh + $qty); + } //$material_cost = round2($material_cost, $dec); $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=material_cost+" .db_escape($material_cost) @@ -249,8 +249,8 @@ function add_work_order($wo_ref, $loc_code, $units_reqd, $stock_id, $args->woid = 0; hook_db_prewrite($args, ST_WORKORDER); - //Chaitanya : Material cost should be added at time of production as per BOM at the time. - //add_material_cost($stock_id, $units_reqd, $date_); + //Chaitanya : Material cost should be added at time of production as per BOM at the time. + //add_material_cost($stock_id, $units_reqd, $date_); $date = date2sql($date_); $required = date2sql($required_by); @@ -287,9 +287,9 @@ function update_work_order($woid, $loc_code, $units_reqd, $stock_id, 'date_', 'required_by', 'memo_'), $args); hook_db_prewrite($args, ST_WORKORDER); - //Chaitanya: Material Cost to be calculated at production - //add_material_cost($_POST['old_stk_id'], -$_POST['old_qty'], $date_); - //add_material_cost($stock_id, $units_reqd, $date_); + //Chaitanya: Material Cost to be calculated at production + //add_material_cost($_POST['old_stk_id'], -$_POST['old_qty'], $date_); + //add_material_cost($stock_id, $units_reqd, $date_); $date = date2sql($date_); $required = date2sql($required_by); @@ -314,8 +314,8 @@ function delete_work_order($woid) begin_transaction(); hook_db_prevoid(ST_WORKORDER, $woid); - //Chaitanya : Cost calculation are affected only at time of production - //add_material_cost($_POST['stock_id'], -$_POST['quantity'], $_POST['date_']); + //Chaitanya : Cost calculation are affected only at time of production + //add_material_cost($_POST['stock_id'], -$_POST['quantity'], $_POST['date_']); // delete the work order requirements delete_wo_requirements($woid); @@ -445,9 +445,9 @@ function void_work_order($woid) $work_order = get_work_order($woid); if (!($work_order["type"] == WO_ADVANCED)) { - //Chaitanya : Removed WO costing from here. Handled in void_stock_move - //Reason - if BOM is changed since WO was executed then add_material_cost will result in incorrect costing as it is based on current BOM for material cost. - /*$date = sql2date($work_order['date_']); + //Chaitanya : Removed WO costing from here. Handled in void_stock_move + //Reason - if BOM is changed since WO was executed then add_material_cost will result in incorrect costing as it is based on current BOM for material cost. + /*$date = sql2date($work_order['date_']); $qty = $work_order['units_reqd']; add_material_cost($work_order['stock_id'], -$qty, $date); // remove avg. cost for qty $cost = get_gl_wo_cost($woid, WO_LABOUR); // get the labour cost and reduce avg cost @@ -455,7 +455,7 @@ function void_work_order($woid) add_labour_cost($work_order['stock_id'], -$qty, $date, $cost); $cost = get_gl_wo_cost($woid, WO_OVERHEAD); // get the overhead cost and reduce avg cost if ($cost != 0) - add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost);*/ + add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost);*/ $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = " .db_escape($woid); @@ -474,52 +474,52 @@ function void_work_order($woid) { // void everything inside the work order : issues, productions, payments $date = sql2date($work_order['date_']); - - //Chaitanya : Removed WO costing from here. Handled in void_stock_move - //Reason - if BOM is changed since WO was executed then add_material_cost will result in incorrect costing as it is based on current BOM for material cost. - //add_material_cost($work_order['stock_id'], -$work_order['units_reqd'], $date); // remove avg. cost for qty - + + //Chaitanya : Removed WO costing from here. Handled in void_stock_move + //Reason - if BOM is changed since WO was executed then add_material_cost will result in incorrect costing as it is based on current BOM for material cost. + //add_material_cost($work_order['stock_id'], -$work_order['units_reqd'], $date); // remove avg. cost for qty + $result = get_work_order_productions($woid); // check the produced quantity $qty = 0; while ($row = db_fetch($result)) { - //Chaitanya : Use native function for voiding - void_work_order_produce($row['id']); - - //Post voided entry if not prevoided explicitly - $void_entry = get_voided_entry(ST_MANURECEIVE, $row['id']); - if ($void_entry) - continue; - $memo_ = _("Voiding Work Order Trans # ").$woid; - add_audit_trail(ST_MANURECEIVE, $row['id'], today(), _("Voided.")."\n".$memo_); - add_voided_entry(ST_MANURECEIVE, $row['id'], today(), $memo_); - - /*$qty += $row['quantity']; + //Chaitanya : Use native function for voiding + void_work_order_produce($row['id']); + + //Post voided entry if not prevoided explicitly + $void_entry = get_voided_entry(ST_MANURECEIVE, $row['id']); + if ($void_entry) + continue; + $memo_ = _("Voiding Work Order Trans # ").$woid; + add_audit_trail(ST_MANURECEIVE, $row['id'], today(), _("Voided.")."\n".$memo_); + add_voided_entry(ST_MANURECEIVE, $row['id'], today(), $memo_); + + /*$qty += $row['quantity']; // clear the production record - $sql = "UPDATE ".TB_PREF."wo_manufacture SET quantity=0 WHERE id=".$row['id']; + $sql = "UPDATE ".TB_PREF."wo_manufacture SET quantity=0 WHERE id=".$row['id']; db_query($sql, "Cannot void a wo production"); - void_stock_move(ST_MANURECEIVE, $row['id']); // and void the stock moves; */ + void_stock_move(ST_MANURECEIVE, $row['id']); // and void the stock moves; */ } - //Chaitanya : Get all work order issues - //$result = get_additional_issues($woid); // check the issued quantities - $result = get_work_order_issues($woid); + //Chaitanya : Get all work order issues + //$result = get_additional_issues($woid); // check the issued quantities + $result = get_work_order_issues($woid); $cost = 0; $issue_no = 0; while ($row = db_fetch($result)) { - //Chaitanya : Use native function for voiding - void_work_order_issue($row['issue_no']); - - //Post voided entry if not prevoided explicitly - $void_entry = get_voided_entry(ST_MANUISSUE, $row['issue_no']); - if ($void_entry) - continue; - $memo_ = _("Voiding Work Order Trans # ").$woid; - add_audit_trail(ST_MANUISSUE, $row['issue_no'], today(), _("Voided.")."\n".$memo_); - add_voided_entry(ST_MANUISSUE, $row['issue_no'], today(), $memo_); - - /*$std_cost = get_standard_cost($row['stock_id']); + //Chaitanya : Use native function for voiding + void_work_order_issue($row['issue_no']); + + //Post voided entry if not prevoided explicitly + $void_entry = get_voided_entry(ST_MANUISSUE, $row['issue_no']); + if ($void_entry) + continue; + $memo_ = _("Voiding Work Order Trans # ").$woid; + add_audit_trail(ST_MANUISSUE, $row['issue_no'], today(), _("Voided.")."\n".$memo_); + add_voided_entry(ST_MANUISSUE, $row['issue_no'], today(), $memo_); + + /*$std_cost = get_standard_cost($row['stock_id']); $icost = $std_cost * $row['qty_issued']; $cost += $icost; if ($issue_no == 0) @@ -527,24 +527,24 @@ function void_work_order($woid) // void the actual issue items and their quantities $sql = "UPDATE ".TB_PREF."wo_issue_items SET qty_issued = 0 WHERE issue_id=" .db_escape($row['id']); - db_query($sql,"A work order issue item could not be voided");*/ - } - - //Chaitaya : Voiding each issue handles the - //if ($issue_no != 0) - //void_stock_move(ST_MANUISSUE, $issue_no); // and void the stock moves - //if ($cost != 0) - //add_issue_cost($work_order['stock_id'], -$qty, $date, $cost); - - //Chaitanya : Reverse the cost effects on $work_order['stock_id'] as adjustement + db_query($sql,"A work order issue item could not be voided");*/ + } + + //Chaitaya : Voiding each issue handles the + //if ($issue_no != 0) + //void_stock_move(ST_MANUISSUE, $issue_no); // and void the stock moves + //if ($cost != 0) + //add_issue_cost($work_order['stock_id'], -$qty, $date, $cost); + + //Chaitanya : Reverse the cost effects on $work_order['stock_id'] as adjustement $cost = get_gl_wo_cost($woid, WO_LABOUR); // get the labour cost and reduce avg cost if ($cost != 0) - //add_labour_cost($work_order['stock_id'], -$qty, $date, $cost); - add_labour_cost($work_order['stock_id'], 1, $date, -$cost, true); + //add_labour_cost($work_order['stock_id'], -$qty, $date, $cost); + add_labour_cost($work_order['stock_id'], 1, $date, -$cost, true); $cost = get_gl_wo_cost($woid, WO_OVERHEAD); // get the overhead cost and reduce avg cost if ($cost != 0) - //add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost); - add_overhead_cost($work_order['stock_id'], 1, $date, -$cost, true); + //add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost); + add_overhead_cost($work_order['stock_id'], 1, $date, -$cost, true); $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = " .db_escape($woid); diff --git a/manufacturing/includes/db/work_orders_quick_db.inc b/manufacturing/includes/db/work_orders_quick_db.inc index 31fbadb8..e91797ba 100644 --- a/manufacturing/includes/db/work_orders_quick_db.inc +++ b/manufacturing/includes/db/work_orders_quick_db.inc @@ -66,21 +66,21 @@ function add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type, db_query($sql, "The work order requirements could not be added"); // insert a -ve stock move for each item - // Chaitanya: Updated to record price and cost as std_cost for work order issued item - $UnitCost = get_standard_cost($bom_item["component"]); + // Chaitanya: Updated to record price and cost as std_cost for work order issued item + $UnitCost = get_standard_cost($bom_item["component"]); add_stock_move(ST_WORKORDER, $bom_item["component"], $woid, - $bom_item["loc_code"], $date_, $wo_ref, -$item_quantity, $UnitCost, 0, 1, $UnitCost); + $bom_item["loc_code"], $date_, $wo_ref, -$item_quantity, $UnitCost, 0, 1, $UnitCost); + } + + // ------------------------------------------------------------------------- + //Negative Stock Handling + $qoh = get_qoh_on_date($stock_id); + $cost_adjust = false; + if ($qoh < 0) + { + if ($qoh + $units_reqd > 0) + $cost_adjust = true; } - - // ------------------------------------------------------------------------- - //Negative Stock Handling - $qoh = get_qoh_on_date($stock_id); - $cost_adjust = false; - if ($qoh < 0) - { - if ($qoh + $units_reqd > 0) - $cost_adjust = true; - } // ------------------------------------------------------------------------- @@ -93,12 +93,12 @@ function add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type, work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, 0, $costs, $cr_acc, $labour, $cr_lab_acc); // ------------------------------------------------------------------------- - - //Negative Stock Handling - if ($cost_adjust) - adjust_deliveries($stock_id, get_standard_cost($stock_id), $date_); - - //-------------------------------------------------------------------------- + + //Negative Stock Handling + if ($cost_adjust) + adjust_deliveries($stock_id, get_standard_cost($stock_id), $date_); + + //-------------------------------------------------------------------------- add_comments(ST_WORKORDER, $woid, $date_, $memo_); @@ -120,8 +120,8 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced // credit all the components $total_cost = 0; - //Chaitanya : capture the exact i.e. non-rounded cost to avoid rounding error amplification - $total_material_cost = 0; + //Chaitanya : capture the exact i.e. non-rounded cost to avoid rounding error amplification + $total_material_cost = 0; while ($bom_item = db_fetch($result)) { $bom_accounts = get_stock_gl_code($bom_item["component"]); @@ -134,26 +134,26 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced $memo = $date_.": ".$memo; update_wo_requirement_issued($woid, $bom_item['component'], $bom_item["quantity"] * $units_reqd); // insert a -ve stock move for each item - // Chaitanya: Updated to record price and cost as std_cost for work order issued item - $UnitCost = get_standard_cost($bom_item["component"]); + // Chaitanya: Updated to record price and cost as std_cost for work order issued item + $UnitCost = get_standard_cost($bom_item["component"]); add_stock_move(ST_MANURECEIVE, $bom_item["component"], $advanced, - $bom_item["loc_code"], $date_, "", -$bom_item["quantity"] * $units_reqd, $UnitCost, 0, 1, $UnitCost); + $bom_item["loc_code"], $date_, "", -$bom_item["quantity"] * $units_reqd, $UnitCost, 0, 1, $UnitCost); } - - //Chaitanya : Compatibility for Service Items - if (!is_service($bom_accounts["mb_flag"])) - $ivaccount = $bom_accounts["inventory_account"]; - else - $ivaccount = $bom_accounts["cogs_account"]; - $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, + + //Chaitanya : Compatibility for Service Items + if (!is_service($bom_accounts["mb_flag"])) + $ivaccount = $bom_accounts["inventory_account"]; + else + $ivaccount = $bom_accounts["cogs_account"]; + $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0, $memo, -$bom_cost); - $total_material_cost += $bom_cost; + $total_material_cost += $bom_cost; } 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); - + //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); + $wo = get_work_order($woid); // also take the additional issues // moved to work_order_issues_db.inc @@ -173,13 +173,13 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced if ($issue_total != 0) add_issue_cost($stock_id, $units_reqd, $date_, $issue_total); */ - - // Logic moved to work_order_costs.php - /* + + // Logic moved to work_order_costs.php + /* $lcost = get_gl_wo_cost($woid, WO_LABOUR); add_labour_cost($stock_id, $units_reqd, $date_, $lcost * $units_reqd / $wo['units_reqd']); $ocost = get_gl_wo_cost($woid, WO_OVERHEAD); - add_overhead_cost($stock_id, $units_reqd, $date_, $ocost * $units_reqd / $wo['units_reqd']); */ + add_overhead_cost($stock_id, $units_reqd, $date_, $ocost * $units_reqd / $wo['units_reqd']); */ } // credit additional costs $item_accounts = get_stock_gl_code($stock_id); @@ -222,10 +222,10 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced $memo = $date_.": ".$memo; add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $item_accounts["inventory_account"], 0, 0, $memo, -$total_cost); - - //Chaitanya : Update cost of the manufactured item in stock moves table - $UnitWOCost = ($total_material_cost + $costs + $labour)/$units_reqd; - update_stock_move(ST_WORKORDER, $woid, $stock_id, $UnitWOCost); + + //Chaitanya : Update cost of the manufactured item in stock moves table + $UnitWOCost = ($total_material_cost + $costs + $labour)/$units_reqd; + update_stock_move(ST_WORKORDER, $woid, $stock_id, $UnitWOCost); } //-------------------------------------------------------------------------------------- diff --git a/manufacturing/work_order_costs.php b/manufacturing/work_order_costs.php index 590b80c3..e7e0fb07 100644 --- a/manufacturing/work_order_costs.php +++ b/manufacturing/work_order_costs.php @@ -76,7 +76,7 @@ function can_process() display_error(_("The amount entered is not a valid number or less then zero.")); set_focus('costs'); return false; - } + } if (!is_date($_POST['date_'])) { @@ -119,14 +119,14 @@ if (isset($_POST['process']) && can_process() == true) add_gl_trans_std_cost(ST_WORKORDER, $_POST['selected_id'], $_POST['date_'], $_POST['db_acc'], $_POST['dim1'], $_POST['dim2'], $date.": ".$wo_cost_types[$_POST['PaymentType']], input_num('costs'), PT_WORKORDER, $_POST['PaymentType']); - - //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); - else - add_overhead_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), 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); + else + add_overhead_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true); + commit_transaction(); meta_forward($_SERVER['PHP_SELF'], "AddedID=".$_POST['selected_id']); diff --git a/reporting/rep305.php b/reporting/rep305.php index 879e70ea..1471ae66 100644 --- a/reporting/rep305.php +++ b/reporting/rep305.php @@ -34,22 +34,22 @@ function getTransactions($from, $to) $from = date2sql($from); $to = date2sql($to); - $sql = "SELECT ".TB_PREF."grn_batch.id batch_no, - ".TB_PREF."grn_batch.supplier_id, + $sql = "SELECT ".TB_PREF."grn_batch.id batch_no, + ".TB_PREF."grn_batch.supplier_id, ".TB_PREF."purch_order_details.*, - ".TB_PREF."stock_master.description, - ".TB_PREF."grn_items.qty_recd, - ".TB_PREF."grn_items.quantity_inv, - ".TB_PREF."grn_items.id grn_item_id + ".TB_PREF."stock_master.description, + ".TB_PREF."grn_items.qty_recd, + ".TB_PREF."grn_items.quantity_inv, + ".TB_PREF."grn_items.id grn_item_id FROM ".TB_PREF."stock_master, ".TB_PREF."purch_order_details, - ".TB_PREF."grn_batch, - ".TB_PREF."grn_items + ".TB_PREF."grn_batch, + ".TB_PREF."grn_items WHERE ".TB_PREF."stock_master.stock_id=".TB_PREF."purch_order_details.item_code AND ".TB_PREF."grn_batch.purch_order_no=".TB_PREF."purch_order_details.order_no - AND ".TB_PREF."grn_batch.id = ".TB_PREF."grn_items.grn_batch_id - AND ".TB_PREF."grn_items.po_detail_item = ".TB_PREF."purch_order_details.po_detail_item - AND ".TB_PREF."grn_items.qty_recd>0 + AND ".TB_PREF."grn_batch.id = ".TB_PREF."grn_items.grn_batch_id + AND ".TB_PREF."grn_items.po_detail_item = ".TB_PREF."purch_order_details.po_detail_item + AND ".TB_PREF."grn_items.qty_recd>0 AND ".TB_PREF."grn_batch.delivery_date>='$from' AND ".TB_PREF."grn_batch.delivery_date<='$to' ORDER BY ".TB_PREF."stock_master.stock_id, ".TB_PREF."grn_batch.delivery_date"; @@ -58,22 +58,22 @@ function getTransactions($from, $to) } -function getSuppInvDetails($grn_item_id) -{ - $sql = "SELECT - ".TB_PREF."supp_invoice_items.supp_trans_no inv_no, - ".TB_PREF."supp_invoice_items.quantity inv_qty, - ".TB_PREF."supp_invoice_items.unit_price inv_price - FROM ".TB_PREF."grn_items, ".TB_PREF."supp_invoice_items - WHERE ".TB_PREF."grn_items.id = ".TB_PREF."supp_invoice_items.grn_item_id - AND ".TB_PREF."grn_items.po_detail_item = ".TB_PREF."supp_invoice_items.po_detail_item_id - AND ".TB_PREF."grn_items.item_code = ".TB_PREF."supp_invoice_items.stock_id - AND ".TB_PREF."supp_invoice_items.grn_item_id = ".$grn_item_id." - ORDER BY ".TB_PREF."supp_invoice_items.id asc"; - - return db_query($sql,"No transactions were returned"); -} - +function getSuppInvDetails($grn_item_id) +{ + $sql = "SELECT + ".TB_PREF."supp_invoice_items.supp_trans_no inv_no, + ".TB_PREF."supp_invoice_items.quantity inv_qty, + ".TB_PREF."supp_invoice_items.unit_price inv_price + FROM ".TB_PREF."grn_items, ".TB_PREF."supp_invoice_items + WHERE ".TB_PREF."grn_items.id = ".TB_PREF."supp_invoice_items.grn_item_id + AND ".TB_PREF."grn_items.po_detail_item = ".TB_PREF."supp_invoice_items.po_detail_item_id + AND ".TB_PREF."grn_items.item_code = ".TB_PREF."supp_invoice_items.stock_id + AND ".TB_PREF."supp_invoice_items.grn_item_id = ".$grn_item_id." + ORDER BY ".TB_PREF."supp_invoice_items.id asc"; + + return db_query($sql,"No transactions were returned"); +} + //---------------------------------------------------------------------------------------------------- function print_grn_valuation() @@ -91,10 +91,10 @@ function print_grn_valuation() $dec = user_price_dec(); - $cols = array(0, 75, 225, 260, 295, 330, 370, 410, 455, 515); - $headers = array(_('Stock ID'), _('Description'), _('PO No'), _('GRN')."#", _('Inv')."#", _('Qty'), _('Inv Price'), _('PO Price'), _('Total')); + $cols = array(0, 75, 225, 260, 295, 330, 370, 410, 455, 515); + $headers = array(_('Stock ID'), _('Description'), _('PO No'), _('GRN')."#", _('Inv')."#", _('Qty'), _('Inv Price'), _('PO Price'), _('Total')); - $aligns = array('left', 'left', 'left', 'left', 'left', 'right', 'right', 'right', 'right'); + $aligns = array('left', 'left', 'left', 'left', 'left', 'right', 'right', 'right', 'right'); $params = array( 0 => $comments, 1 => array('text' => _('Period'),'from' => $from, 'to' => $to)); @@ -117,8 +117,8 @@ function print_grn_valuation() $rep->Line($rep->row - 4); $rep->NewLine(2); $rep->TextCol(0, 3, _('Total')); - $rep->AmountCol(5, 6, $qtotal, $qdec); - $rep->AmountCol(8, 9, $total, $dec); + $rep->AmountCol(5, 6, $qtotal, $qdec); + $rep->AmountCol(8, 9, $total, $dec); $rep->NewLine(); $total = $qtotal = 0; } @@ -131,55 +131,55 @@ function print_grn_valuation() $rep->NewLine(); $rep->TextCol(0, 1, $trans['item_code']); - $rep->TextCol(1, 2, $trans['description']); + $rep->TextCol(1, 2, $trans['description']); $rep->TextCol(2, 3, $trans['order_no']); $qdec = get_qty_dec($trans['item_code']); - $rep->TextCol(3, 4, $trans['batch_no']); - - if ($trans['quantity_inv']) - { - $suppinv = getSuppInvDetails($trans['grn_item_id']); - while ($inv=db_fetch($suppinv)) - { - $inv['inv_price'] *= $rate; - $rep->TextCol(4, 5, $inv['inv_no']); - $rep->AmountCol(5, 6, $inv['inv_qty'], $qdec); - $rep->AmountCol(6, 7, $inv['inv_price'], $dec); - $rep->AmountCol(7, 8, $trans['unit_price'], $dec); - $amt = round2($inv['inv_qty'] * $inv['inv_price'], $dec); - $rep->AmountCol(8, 9, $amt, $dec); - $rep->NewLine(); - $total += $amt; - $qtotal += $inv['inv_qty']; - $grandtotal += $amt; - } - } - - if ($trans['qty_recd'] - $trans['quantity_inv'] !=0 ) - { - $rep->TextCol(4, 5, "--"); - $rep->AmountCol(5, 6, $trans['qty_recd'] - $trans['quantity_inv'], $qdec); - $rep->AmountCol(7, 8, $trans['unit_price'], $dec); - $amt = round2(($trans['qty_recd'] - $trans['quantity_inv']) * $trans['unit_price'], $dec); - $rep->AmountCol(8, 9, $amt, $dec); - $total += $amt; - $qtotal += $trans['qty_recd'] - $trans['quantity_inv']; - $grandtotal += $amt; - } - else - $rep->NewLine(-1); + $rep->TextCol(3, 4, $trans['batch_no']); + + if ($trans['quantity_inv']) + { + $suppinv = getSuppInvDetails($trans['grn_item_id']); + while ($inv=db_fetch($suppinv)) + { + $inv['inv_price'] *= $rate; + $rep->TextCol(4, 5, $inv['inv_no']); + $rep->AmountCol(5, 6, $inv['inv_qty'], $qdec); + $rep->AmountCol(6, 7, $inv['inv_price'], $dec); + $rep->AmountCol(7, 8, $trans['unit_price'], $dec); + $amt = round2($inv['inv_qty'] * $inv['inv_price'], $dec); + $rep->AmountCol(8, 9, $amt, $dec); + $rep->NewLine(); + $total += $amt; + $qtotal += $inv['inv_qty']; + $grandtotal += $amt; + } + } + + if ($trans['qty_recd'] - $trans['quantity_inv'] !=0 ) + { + $rep->TextCol(4, 5, "--"); + $rep->AmountCol(5, 6, $trans['qty_recd'] - $trans['quantity_inv'], $qdec); + $rep->AmountCol(7, 8, $trans['unit_price'], $dec); + $amt = round2(($trans['qty_recd'] - $trans['quantity_inv']) * $trans['unit_price'], $dec); + $rep->AmountCol(8, 9, $amt, $dec); + $total += $amt; + $qtotal += $trans['qty_recd'] - $trans['quantity_inv']; + $grandtotal += $amt; + } + else + $rep->NewLine(-1); } if ($stock_id != '') { $rep->Line($rep->row - 4); $rep->NewLine(2); $rep->TextCol(0, 3, _('Total')); - $rep->AmountCol(5, 6, $qtotal, $qdec); - $rep->AmountCol(8, 9, $total, $dec); + $rep->AmountCol(5, 6, $qtotal, $qdec); + $rep->AmountCol(8, 9, $total, $dec); $rep->Line($rep->row - 4); $rep->NewLine(2); - $rep->TextCol(0, 7, _('Grand Total')); - $rep->AmountCol(8, 9, $grandtotal, $dec); + $rep->TextCol(0, 7, _('Grand Total')); + $rep->AmountCol(8, 9, $grandtotal, $dec); } $rep->Line($rep->row - 4); -- 2.30.2