0003871: [Fixed Assets] new patch fix for: 0003866, 0003869
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 17 May 2017 21:47:26 +0000 (23:47 +0200)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 17 May 2017 21:47:26 +0000 (23:47 +0200)
fixed_assets/includes/fixed_assets_db.inc
fixed_assets/inquiry/stock_inquiry.php
includes/db_pager.inc
includes/ui/db_pager_view.inc
reporting/rep451.php

index 911cdddff438ca11f56250ef35b832cc4253df9e..11c9c027d50662f5d85d8fbf5c87174f9ca21750 100644 (file)
@@ -85,7 +85,9 @@ function get_fixed_asset_disposal($stock_id) {
 
   $sql = "SELECT * FROM ".TB_PREF."stock_moves 
        WHERE stock_id=".db_escape($stock_id)."
-               AND (type=".ST_INVADJUST." OR type=".ST_CUSTDELIVERY.")";
+               AND (type=".ST_INVADJUST." OR type=".ST_CUSTDELIVERY.")
+        ORDER BY tran_date DESC
+        LIMIT 1";
 
   $result = db_query($sql, "cannot retrieve fixed asset move");
 
@@ -96,23 +98,25 @@ function get_fixed_asset_disposal($stock_id) {
   return $row;
 }
 
-function get_fixed_asset_purchase($stock_id) {
-
-  $sql = "SELECT * 
-       FROM ".TB_PREF."stock_master m, "
-               .TB_PREF."supp_invoice_items i, "
-               .TB_PREF."supp_trans t
-    WHERE m.stock_id=".db_escape($stock_id)."
-           AND i.supp_trans_no=t.trans_no
-       AND m.stock_id=i.stock_id";
-
-  $result = db_query($sql, "cannot retrieve fixed asset move");
-
-  if (db_num_rows($result) == 0)
-    return false;
-
-  $row = db_fetch_assoc($result);
-  return $row;
+function get_fixed_asset_purchase($stock_id) 
+{
+       $sql = "SELECT * 
+               FROM ".TB_PREF."stock_master m, "
+                       .TB_PREF."supp_invoice_items i, "
+                       .TB_PREF."supp_trans t
+       WHERE m.stock_id=".db_escape($stock_id)."
+                   AND i.supp_trans_no=t.trans_no
+               AND m.stock_id=i.stock_id
+       ORDER BY t.tran_date DESC
+       LIMIT 1";
+
+       $result = db_query($sql, "cannot retrieve fixed asset move");
+
+       if (db_num_rows($result) == 0)
+       return false;
+
+       $row = db_fetch_assoc($result);
+       return $row;
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -130,17 +134,17 @@ function get_fixed_asset_class($id)
 
 function get_sql_for_fixed_assets($show_inactive = false)
 {
-  $sql = "SELECT s.stock_id, c.description, s.units, s.description as name,
-    s.depreciation_rate, s.depreciation_method, s.inactive, rcv.tran_date as purchase_date, rcv.trans_no as purchase_no,
-    adj.tran_date as disposal_date, adj.type as disposal_type, adj.trans_no as disposal_no, s.material_cost, s.purchase_cost, s.depreciation_factor
+       $sql = "SELECT s.stock_id, c.description, s.units, s.description as name,
+        s.depreciation_rate, s.depreciation_method, s.inactive, 
+        s.material_cost, s.purchase_cost, s.depreciation_factor
     FROM ".TB_PREF."stock_master s"
-       ." LEFT JOIN ".TB_PREF."stock_moves rcv ON rcv.stock_id=s.stock_id AND rcv.type=".ST_SUPPRECEIVE
-       ." LEFT JOIN ".TB_PREF."stock_moves adj ON adj.stock_id=s.stock_id AND adj.type IN(".ST_INVADJUST.",".ST_CUSTDELIVERY.")"
        ." LEFT JOIN ".TB_PREF."stock_fa_class c ON s.fa_class_id=c.fa_class_id"
        ." WHERE s.mb_flag='F'";
 
-  if (!$show_inactive)
-    $sql .= " AND !s.inactive AND !ISNULL(rcv.tran_date) AND ISNULL(adj.tran_date)";
+       if (!$show_inactive)
+       $sql .= " AND !s.inactive ";
+
+       $sql .= " ORDER BY c.description ";
 
        return $sql;
 }
index c456d792823c86c248a316db7eaf6540d2095785..424c97038f492eade656a6ffbb22652bf6afcb2b 100644 (file)
@@ -52,25 +52,46 @@ if(get_post('RefreshInquiry'))
 
 function gl_view($row)
 {
-  $row = get_fixed_asset_move($row['stock_id'], ST_JOURNAL);
+       $row = get_fixed_asset_move($row['stock_id'], ST_JOURNAL);
 
-  //if ($row === false)
-    //return "";
-
-  //return get_journal_trans_view_str(ST_JOURNAL, $row["trans_no"], sql2date($row["tran_date"]));
        return get_gl_view_str(ST_JOURNAL, $row["trans_no"]);
 }
 
+function fa_prepare_row($row) {
+       $purchase = get_fixed_asset_purchase($row['stock_id']);
+       if ($purchase !== false) {
+       $row['purchase_date'] = $purchase['tran_date'];
+       $row['purchase_no'] = $purchase['trans_no'];
+       }
+       else {
+       $row['purchase_date'] = NULL;
+       $row['purchase_no'] = NULL;
+       }
+
+       $disposal = get_fixed_asset_disposal($row['stock_id']);
+       if ($disposal !== false) {
+       $row['disposal_date'] = $disposal['tran_date'];
+       $row['disposal_no'] = $disposal['trans_no'];
+       $row['disposal_type'] = $disposal['type'];
+       }
+       else {
+       $row['disposal_date'] = NULL;
+       $row['disposal_no'] = NULL;
+       $row['disposal_type'] = NULL;
+       }       
+       return $row;
+}
+
 function fa_link($row)
 {
-  $url = "inventory/manage/items.php?FixedAsset=1&stock_id=".$row['stock_id'];
+       $url = "inventory/manage/items.php?FixedAsset=1&stock_id=".$row['stock_id'];
 
-       return viewer_link($row['stock_id'], $url);
+       return viewer_link($row['stock_id'], $url);
 }
 
 function depr_method_title($row) {
-  global $depreciation_methods;
-  return $depreciation_methods[$row['depreciation_method']];
+       global $depreciation_methods;
+       return $depreciation_methods[$row['depreciation_method']];
 }
 
 function depr_par($row) {
@@ -85,7 +106,7 @@ function depr_par($row) {
 
 function status_title($row) {
 
-       if ($row['inactive'] || ($row['disposal_date'] !== NULL))
+       if ($row['inactive'] || ($row['disposal_date'] !== NULL))
                return _("Disposed"); // disposed or saled
        elseif ($row['purchase_date'] === NULL)
                return _("Purchasable"); // not yet purchased
@@ -97,22 +118,25 @@ function status_title($row) {
 function purchase_link($row)
 {
 
-  if ($row['purchase_date'] === null)
-    return "";
+       if ($row['purchase_date'] === NULL)
+       return "";
 
-  return get_supplier_trans_view_str(ST_SUPPRECEIVE, $row["purchase_no"], sql2date($row["purchase_date"]));
+       return get_supplier_trans_view_str(ST_SUPPRECEIVE, $row["purchase_no"], sql2date($row["purchase_date"]));
 }
 
 function disposal_link($row)
 {
-  switch ($row['disposal_type']) {
-    case ST_INVADJUST:
-      return get_inventory_trans_view_str(ST_INVADJUST, $row["disposal_no"], sql2date($row["disposal_date"]));
-    case ST_CUSTDELIVERY:
-           return get_customer_trans_view_str(ST_CUSTDELIVERY, $row["disposal_no"], sql2date($row["disposal_date"]));
-    default:
-      return "";
-  }
+       if ($row['disposal_date'] === NULL)
+       return "";
+
+       switch ($row['disposal_type']) {
+       case ST_INVADJUST:
+               return get_inventory_trans_view_str(ST_INVADJUST, $row["disposal_no"], sql2date($row["disposal_date"]));
+       case ST_CUSTDELIVERY:
+               return get_customer_trans_view_str(ST_CUSTDELIVERY, $row["disposal_no"], sql2date($row["disposal_date"]));
+       default:
+               return "";
+       }
 }
 
 function amount_link($row)
@@ -162,6 +186,7 @@ $cols = array(
 $table =& new_db_pager('fixed_assets_tbl', $sql, $cols);
 
 $table->width = "85%";
+$table->row_fun = "fa_prepare_row";
 
 display_db_pager($table);
 
index ff31c1df97ab4960b8945fa460ea58eedb9a5d15..416773acb85dd6989aa74a94d4593804b73bbafa 100644 (file)
@@ -29,6 +29,7 @@ class db_pager {
        var $width;                     // table width (default '95%')
        var $header_fun;        // additional row between title and body
        var $header_class;
+    var $row_fun;       // Function for row preprocessing
        var $footer_fun;
        var $footer_class;
        var $data = array();
index 28c2b38d4a0ef6b3412a463350b525b5ca461ad8..8245d77b4cc2eb0df5fcc7c500def48b60bec68f 100644 (file)
@@ -83,6 +83,13 @@ function display_db_pager(&$pager) {
        $cc = 0; //row colour counter
        foreach($pager->data as $line_no => $row) {     
 
+        if ($pager->row_fun) {
+            if (function_exists($pager->row_fun)) {
+                $fn = $pager->row_fun;
+                $row = $fn($row);
+            }
+        }
+
                $marker = $pager->marker;
            if ($marker && $marker($row)) 
                start_row("class='$pager->marker_class'");
index da0f06d4688eaae75b7efcd6811e6cf682151a00..2a9d3cb05e3787d620a6f4063274c4491d96842d 100644 (file)
@@ -91,7 +91,8 @@ function print_fixed_assets_valuation_report()
        $catt = '';
        while ($trans=db_fetch($res))
        {
-               $d = sql2date($trans['purchase_date']);
+               $purchase = get_fixed_asset_purchase($trans['stock_id']);
+               $d = sql2date($purchase['tran_date']);
                if (date1_greater_date2($d, $date))
                        continue;
                if ($class != 0 && $cln != $trans['description'])