2 /**********************************************************************
3 Copyright (C) FrontAccounting, LLC.
4 Released under the terms of the GNU General Public License, GPL,
5 as published by the Free Software Foundation, either version 3
6 of the License, or (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
13 function process_fixed_asset_depreciation($stock_id, $gl_rows, $refline, $memo_)
17 $row = get_item($stock_id);
18 $old_cost = $row['material_cost'];
23 if (!is_date_in_fiscalyear($date_))
24 $date_ = end_fiscalyear();
26 $stock_gl_code = get_stock_gl_code($stock_id);
28 $cart = new items_cart(ST_JOURNAL);
29 $cart->tran_date = $cart->doc_date = $cart->event_date = $date_;
30 $cart->tran_date = end_fiscalyear();
31 $cart->reference = $Refs->get_next(ST_JOURNAL, $refline, $cart->tran_date, $date_);
34 foreach ($gl_rows as $row) {
35 $value_of_change += round($row['value'], 2);
37 $cart->add_gl_item($stock_gl_code["adjustment_account"],
38 $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"], -$row['value'],
39 '', null, null, $row['date']);
40 $cart->add_gl_item($stock_gl_code["cogs_account"], 0, 0, $row['value'],
41 '', null, null, $row['date']);
44 $new_cost = $old_cost - $value_of_change;
47 $cart->memo_ = sprintf(_("Fixed asset has been deprecated by the value of %s"),
48 number_format2($value_of_change, user_price_dec()));
50 $cart->memo_ = $memo_;
52 $trans_no = write_journal_entries($cart);
54 $sql = "UPDATE ".TB_PREF."stock_master SET
55 depreciation_date='".date2sql($cart->tran_date)."',
56 material_cost=".db_escape($new_cost).",
57 last_cost=".db_escape($old_cost)."
58 WHERE stock_id=".db_escape($stock_id);
59 db_query($sql,"The depreciation start date could not be updated");
62 add_audit_trail(ST_JOURNAL, $update_no, $date_);
68 //--------------------------------------------------------------------------------------------------
70 function get_fixed_asset_move($stock_id, $tran_type) {
72 $sql = "SELECT * FROM ".TB_PREF."stock_moves
73 WHERE stock_id=".db_escape($stock_id)."
74 AND type=".db_escape($tran_type);
76 $result = db_query($sql, "cannot retrieve fixed asset move");
78 if (db_num_rows($result) == 0)
81 $row = db_fetch_assoc($result);
85 function get_fixed_asset_disposal($stock_id) {
87 $sql = "SELECT * FROM ".TB_PREF."stock_moves
88 WHERE stock_id=".db_escape($stock_id)."
89 AND (type=".ST_INVADJUST." OR type=".ST_CUSTDELIVERY.")";
91 $result = db_query($sql, "cannot retrieve fixed asset move");
93 if (db_num_rows($result) == 0)
96 $row = db_fetch_assoc($result);
100 function get_fixed_asset_purchase($stock_id) {
103 FROM ".TB_PREF."stock_master m, "
104 .TB_PREF."supp_invoice_items i, "
105 .TB_PREF."supp_trans t
106 WHERE m.stock_id=".db_escape($stock_id)."
107 AND i.supp_trans_no=t.trans_no
108 AND m.stock_id=i.stock_id";
110 $result = db_query($sql, "cannot retrieve fixed asset move");
112 if (db_num_rows($result) == 0)
115 $row = db_fetch_assoc($result);
119 //--------------------------------------------------------------------------------------------------
121 function get_fixed_asset_class($id)
123 $sql="SELECT * FROM ".TB_PREF."stock_fa_class WHERE fa_class_id=".db_escape($id);
125 $result = db_query($sql,"a fixed asset class could not be retrieved");
127 return db_fetch($result);
130 //--------------------------------------------------------------------------------------------------
132 function get_sql_for_fixed_assets($show_inactive = false)
134 $sql = "SELECT s.stock_id, c.description, s.units, s.description as name,
135 s.depreciation_rate, s.depreciation_method, s.inactive, rcv.tran_date as purchase_date, rcv.trans_no as purchase_no,
136 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
137 FROM ".TB_PREF."stock_master s"
138 ." LEFT JOIN ".TB_PREF."stock_moves rcv ON rcv.stock_id=s.stock_id AND rcv.type=".ST_SUPPRECEIVE
139 ." LEFT JOIN ".TB_PREF."stock_moves adj ON adj.stock_id=s.stock_id AND adj.type IN(".ST_INVADJUST.",".ST_CUSTDELIVERY.")"
140 ." LEFT JOIN ".TB_PREF."stock_fa_class c ON s.fa_class_id=c.fa_class_id"
141 ." WHERE s.mb_flag='F'";
144 $sql .= " AND !s.inactive AND !ISNULL(rcv.tran_date) AND ISNULL(adj.tran_date)";
149 //--------------------------------------------------------------------------------------------------
151 //function get_sql_for_fa_journal_inquiry($stock_id)
154 // $sql = "SELECT IF(ISNULL(a.gl_seq),0,a.gl_seq) as gl_seq,
156 // gl.type as trans_type,
157 // gl.type_no as trans_no,
158 // IFNULL(max(supp.supp_name), max(cust.name)) as name,
160 // SUM(IF(gl.amount>0, gl.amount,0)) as amount,
162 // IF(ISNULL(u.user_id),'',u.user_id) as user_id";
164 // $sql.= " FROM ".TB_PREF."gl_trans as gl
165 // LEFT JOIN ".TB_PREF."audit_trail as a ON
166 // (gl.type=a.type AND gl.type_no=a.trans_no)
167 // LEFT JOIN ".TB_PREF."comments as com ON
168 // (gl.type=com.type AND gl.type_no=com.id)
169 // LEFT JOIN ".TB_PREF."refs as refs ON
170 // (gl.type=refs.type AND gl.type_no=refs.id)
171 // LEFT JOIN ".TB_PREF."users as u ON
173 // LEFT JOIN ".TB_PREF."debtor_trans dt ON dt.type=gl.type AND gl.type_no=dt.trans_no
174 // LEFT JOIN ".TB_PREF."debtors_master cust ON gl.person_type_id=2 AND gl.person_id=cust.debtor_no
175 // LEFT JOIN ".TB_PREF."supp_trans st ON st.type=gl.type AND gl.type_no=st.trans_no
176 // LEFT JOIN ".TB_PREF."suppliers supp ON gl.person_type_id=3 AND gl.person_id=supp.supplier_id
177 // WHERE gl.amount!=0
178 // AND NOT ISNULL(a.gl_seq)";
180 //// if (!$alsoclosed) {
181 //// $sql .= " AND gl_seq=0";
184 //// $sql .= " AND NOT ISNULL(a.gl_seq)";
186 // $sql .= " GROUP BY tran_date, gl_seq, trans_type, trans_no";
191 //--------------------------------------------------------------------------------------------------