Merging changes form main trunk 2.2.5-2.2.6
[fa-stable.git] / purchasing / includes / db / grn_db.inc
index 54134532d0c134afb54455d79ff4174321e7a09c..0b5c0eda85cf87bb60d83faccb9b3e8ad68084fc 100644 (file)
@@ -18,7 +18,8 @@ function update_average_material_cost($supplier, $stock_id, $price, $qty, $date,
        else
                $currency = null;
        $dec = user_price_dec();
-       $price = price_decimal_format($price, $dec);
+       price_decimal_format($price, $dec);
+       $price = round2($price, $dec);
        if ($currency != null)
        {
                $ex_rate = get_exchange_rate_to_home_currency($currency, $date);
@@ -37,24 +38,35 @@ function update_average_material_cost($supplier, $stock_id, $price, $qty, $date,
                $exclude = ST_CUSTDELIVERY;
        else
                $exclude = 0;
+       $cost_adjust = false;
        $qoh = get_qoh_on_date($stock_id, null, $date, $exclude);
        if ($adj_only)
        {
+               if ($qoh > 0)
+               /*
                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)
+               {
+                       if ($qoh + $qty > 0)
+                               $cost_adjust = true;
                        $qoh = 0;
+               }       
                $material_cost = ($qoh * $material_cost + $qty * $price_in_home_currency) /     ($qoh + $qty);
        }       
        $material_cost = round2($material_cost, $dec);
-
+       if ($cost_adjust) // new 2010-02-10
+               adjust_deliveries($stock_id, $material_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");