X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=manufacturing%2Fincludes%2Fdb%2Fwork_order_costing_db.inc;fp=manufacturing%2Fincludes%2Fdb%2Fwork_order_costing_db.inc;h=e6d1e123c33a9229d62e441341d2a2b4dd9b0cfd;hb=53d942f2a0d20cce5e9c409c6485867ce0869e4d;hp=bf4493c33d467731959dc457e113531203d41e9d;hpb=6a4d8e6c1e92ff1b8fc5abb3fae76fb1c1968550;p=fa-stable.git diff --git a/manufacturing/includes/db/work_order_costing_db.inc b/manufacturing/includes/db/work_order_costing_db.inc index bf4493c3..e6d1e123 100644 --- a/manufacturing/includes/db/work_order_costing_db.inc +++ b/manufacturing/includes/db/work_order_costing_db.inc @@ -35,10 +35,9 @@ function delete_wo_costing($trans_type, $trans_no) db_query($sql, "could not delete work order costing"); } - //-------------------------------------------------------------------------------------- -function add_material_cost($stock_id, $qty, $date_) +function add_material_cost($stock_id, $qty, $date_, $advanced=false) { $m_cost = 0; $result = get_bom($stock_id); @@ -47,29 +46,41 @@ function add_material_cost($stock_id, $qty, $date_) $standard_cost = get_standard_cost($bom_item['component']); $m_cost += ($bom_item['quantity'] * $standard_cost); } - //$dec = user_price_dec(); - //price_decimal_format($m_cost, $dec); - $sql = "SELECT material_cost FROM ".TB_PREF."stock_master WHERE stock_id = " + $bom_cost = $m_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']; - //$qoh = get_qoh_on_date($stock_id, null, $date_); + + 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) + { + 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); - $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=$material_cost - WHERE stock_id=".db_escape($stock_id); + + 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"); } -function add_overhead_cost($stock_id, $qty, $date_, $costs) +function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { - //$dec = user_price_dec(); - //price_decimal_format($costs, $dec); if ($qty != 0) $costs /= $qty; $sql = "SELECT overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = " @@ -77,22 +88,52 @@ function add_overhead_cost($stock_id, $qty, $date_, $costs) $result = db_query($sql); $myrow = db_fetch($result); $overhead_cost = $myrow['overhead_cost']; - //$qoh = get_qoh_on_date($stock_id, null, $date_); $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($qoh + $qty != 0) - $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) / ($qoh + $qty); - //$overhead_cost = round2($overhead_cost, $dec); + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $overhead_cost = ($qoh * $overhead_cost + $costs) / $qoh; + else // Journal Entry 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); + } $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"); } -function add_labour_cost($stock_id, $qty, $date_, $costs) +function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { - //$dec = user_price_dec(); - //price_decimal_format($costs, $dec); if ($qty != 0) $costs /= $qty; $sql = "SELECT labour_cost FROM ".TB_PREF."stock_master WHERE stock_id = " @@ -100,19 +141,51 @@ function add_labour_cost($stock_id, $qty, $date_, $costs) $result = db_query($sql); $myrow = db_fetch($result); $labour_cost = $myrow['labour_cost']; - //$qoh = get_qoh_on_date($stock_id, null, $date_); $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($qoh + $qty != 0) - $labour_cost = ($qoh * $labour_cost + $qty * $costs) / ($qoh + $qty); - //$labour_cost = round2($labour_cost, $dec); + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $labour_cost = ($qoh * $labour_cost + $costs) / $qoh; + else // Journal Entry 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); + } $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"); } -function add_issue_cost($stock_id, $qty, $date_, $costs) +function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false) { if ($qty != 0) $costs /= $qty; @@ -121,15 +194,45 @@ function add_issue_cost($stock_id, $qty, $date_, $costs) $result = db_query($sql); $myrow = db_fetch($result); $material_cost = $myrow['material_cost']; - //$dec = user_price_dec(); - //price_decimal_format($material_cost, $dec); - //$qoh = get_qoh_on_date($stock_id, null, $date_); $qoh = get_qoh_on_date($stock_id); if ($qoh < 0) $qoh = 0; - if ($qoh + $qty != 0) - $material_cost = ($qty * $costs) / ($qoh + $qty); - //$material_cost = round2($material_cost, $dec); + if ($adj_only) + { + if ($qty != 0) + $costs = $qty * $costs; + if ($qoh>0) + $material_cost = $costs / $qoh; + else // Journal Entry 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); + } $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=material_cost+" .db_escape($material_cost) ." WHERE stock_id=".db_escape($stock_id);