+function get_purchase_value($stock_id)
+{
+
+ $sql = "SELECT purchase_cost FROM
+ ".TB_PREF."stock_master WHERE stock_id = ".db_escape($stock_id);
+
+ $result = db_query($sql,"retreive stock purchase price");
+ $row = db_fetch_row($result);
+ return $row[0];
+}
+
+function update_purchase_value($stock_id, $price)
+{
+ $price = round2($price, user_price_dec());
+ $sql = "UPDATE ".TB_PREF."stock_master SET purchase_cost=".db_escape($price)
+ ." WHERE stock_id=".db_escape($stock_id);
+ db_query($sql, "The stock master purchase_cost cannot be updated");
+}
+//-----------------------------------------------------------------------------------------
+
+function handle_negative_inventory($stock_id, $quantity, $standard_cost, $date_)
+{
+ //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, null, $date_);
+ $diff = round($qoh*get_unit_cost($stock_id) + $quantity*$standard_cost, user_price_dec());
+
+ if ($diff != 0)
+ {
+ begin_transaction();
+ add_journal(ST_JOURNAL, $id, $diff, $date_, get_company_currency(), $ref);
+ $Refs->save(ST_JOURNAL, $id, $ref);
+
+ $stock_gl_code = get_stock_gl_code($stock_id);
+ $memo = _("Zero/negative inventory handling");
+ //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,
+ -$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,
+ $diff);
+
+ add_audit_trail(ST_JOURNAL, $id, $date_);
+ add_comments(ST_JOURNAL, $id, $date_, $memo);
+ $Refs->save(ST_JOURNAL, $id, $ref);
+ commit_transaction();
+ }
+ }
+}
+