Incorrect Journal Balance (sales invoice) when many decimals in tax and price.
[fa-stable.git] / reporting / rep308.php
index 84f43a79a04bf745d0ace6f436800134d22d3ade..ffd880ebc804b86c2b34c04cc5f2c21f3df83793 100644 (file)
@@ -32,17 +32,23 @@ inventory_movements();
 
 function get_domestic_price($myrow, $stock_id)
 {
-       $price = $myrow['price'];
-       if ($myrow['person_id'] > 0)
-       {
-               // Do we have foreign currency?
-               $supp = get_supplier($myrow['person_id']);
-               $currency = $supp['curr_code'];
-               $ex_rate = get_exchange_rate_to_home_currency($currency, sql2date($myrow['tran_date']));
-               $price /= $ex_rate;
-       }       
-       return $price;
-}      
+    if ($myrow['type'] == ST_SUPPRECEIVE || $myrow['type'] == ST_SUPPCREDIT)
+     {
+        $price = $myrow['price'];
+        if ($myrow['person_id'] > 0)
+        {
+            // Do we have foreign currency?
+            $supp = get_supplier($myrow['person_id']);
+            $currency = $supp['curr_code'];
+            $ex_rate = $myrow['ex_rate'];
+            $price *= $ex_rate;
+        }
+    }
+    else
+        $price = $myrow['standard_cost']; //pick standard_cost for sales deliveries
+
+    return $price;
+}
 
 function fetch_items($category=0)
 {
@@ -58,7 +64,7 @@ function fetch_items($category=0)
     return db_query($sql,"No transactions were returned");
 }
 
-function trans_qty($stock_id, $location=null, $from_date, $to_date, $inward = true)
+function trans_qty($stock_id, $location, $from_date, $to_date, $inward = true)
 {
        if ($from_date == null)
                $from_date = Today();
@@ -91,14 +97,14 @@ function trans_qty($stock_id, $location=null, $from_date, $to_date, $inward = tr
 
 }
 
-function avg_unit_cost($stock_id, $location=null, $to_date)
+function avg_unit_cost($stock_id, $location, $to_date)
 {
        if ($to_date == null)
                $to_date = Today();
 
        $to_date = date2sql($to_date);
 
-       $sql = "SELECT move.*, IF(ISNULL(supplier.supplier_id), debtor.debtor_no, supplier.supplier_id) person_id
+       $sql = "SELECT move.*, supplier.supplier_id person_id, IF(ISNULL(grn.rate), credit.rate, grn.rate) ex_rate
                FROM ".TB_PREF."stock_moves move
                                LEFT JOIN ".TB_PREF."supp_trans credit ON credit.trans_no=move.trans_no AND credit.type=move.type
                                LEFT JOIN ".TB_PREF."grn_batch grn ON grn.id=move.trans_no AND 25=move.type
@@ -133,7 +139,7 @@ function avg_unit_cost($stock_id, $location=null, $to_date)
 
 //----------------------------------------------------------------------------------------------------
 
-function trans_qty_unit_cost($stock_id, $location=null, $from_date, $to_date, $inward = true)
+function trans_qty_unit_cost($stock_id, $location, $from_date, $to_date, $inward = true)
 {
        if ($from_date == null)
                $from_date = Today();
@@ -145,7 +151,7 @@ function trans_qty_unit_cost($stock_id, $location=null, $from_date, $to_date, $i
 
        $to_date = date2sql($to_date);
 
-       $sql = "SELECT move.*, IF(ISNULL(supplier.supplier_id), debtor.debtor_no, supplier.supplier_id) person_id
+       $sql = "SELECT move.*, supplier.supplier_id person_id, IF(ISNULL(grn.rate), credit.rate, grn.rate) ex_rate
                FROM ".TB_PREF."stock_moves move
                                LEFT JOIN ".TB_PREF."supp_trans credit ON credit.trans_no=move.trans_no AND credit.type=move.type
                                LEFT JOIN ".TB_PREF."grn_batch grn ON grn.id=move.trans_no AND 25=move.type