+/**********************************************************************
+ Copyright (C) FrontAccounting, LLC.
+ Released under the terms of the GNU General Public License, GPL,
+ as published by the Free Software Foundation, either version 3
+ of the License, or (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+//------------------- update average material cost ------------------------------------------ Joe Hunt Mar-03-2008
+
+function update_average_material_cost($supplier, $stock_id, $price, $qty, $date, $adj_only=false)
+{
+ if ($supplier != null)
+ $currency = get_supplier_currency($supplier);
+ else
+ $currency = null;
+ $dec = user_price_dec();
+ $price = price_decimal_format($price, $dec);
+ if ($currency != null)
+ {
+ $ex_rate = get_exchange_rate_to_home_currency($currency, $date);
+ $price_in_home_currency = $price / $ex_rate;
+ //$price_in_home_currency = to_home_currency($price, $currency, $date);
+ }
+ else
+ $price_in_home_currency = $price;
+ $sql = "SELECT material_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'];
+ if ($price > -0.0001 && $price < 0.0001)
+ return $material_cost;
+ if ($adj_only)
+ $exclude = ST_CUSTDELIVERY;
+ else
+ $exclude = 0;
+ $qoh = get_qoh_on_date($stock_id, null, $date, $exclude);
+ if ($adj_only)
+ {
+ if ($qoh <= 0)
+ $material_cost = 0;
+ else
+ $material_cost = ($qoh * $material_cost + $qty * $price_in_home_currency) / $qoh;
+ }
+ elseif ($qoh + $qty <= 0)
+ $material_cost = 0;
+ else
+ {
+ if ($qoh < 0)
+ $qoh = 0;
+ $material_cost = ($qoh * $material_cost + $qty * $price_in_home_currency) / ($qoh + $qty);
+ }
+ $material_cost = round2($material_cost, $dec);
+
+ $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 $material_cost;
+}