Global fixes in SQL queries aimed to make them more readible and easier for maintence.
[fa-stable.git] / inventory / includes / db / items_trans_db.inc
1 <?php
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 ***********************************************************************/
12 //-------------------------------------------------------------------------------------------------------------
13
14 function stock_cost_update($stock_id, $material_cost, $labour_cost, $overhead_cost,
15         $last_cost)
16 {
17         $mb_flag = get_mb_flag($stock_id);
18
19         $update_no = -1;
20
21     if (is_service($mb_flag))
22     {
23         //display_db_error("Cannot do cost update for Service item : $stock_id", "");   
24
25                 //Chaitanya
26                 $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)."
27                 WHERE stock_id=".db_escape($stock_id);
28
29                 db_query($sql,"The cost details for the inventory item could not be updated");
30
31                 return $update_no;
32     }
33
34         begin_transaction();
35
36         $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost).", 
37                 labour_cost=".db_escape($labour_cost).", 
38                 overhead_cost=".db_escape($overhead_cost).", 
39                 last_cost=".db_escape($last_cost)." 
40                 WHERE stock_id=".db_escape($stock_id);
41         db_query($sql,"The cost details for the inventory item could not be updated");
42
43         $qoh = get_qoh_on_date($stock_id);
44
45         $date_ = Today();
46         if (!is_date_in_fiscalyear($date_))
47                 $date_ = end_fiscalyear();
48
49         if ($qoh > 0)
50         {
51                 $new_cost = $material_cost + $labour_cost + $overhead_cost;
52
53                 $value_of_change = round2($qoh * ($new_cost - $last_cost), user_price_dec());
54
55                 if ($value_of_change != 0)
56                 {
57                         $stock_gl_code = get_stock_gl_code($stock_id);
58
59                         $cart = new items_cart(ST_COSTUPDATE);
60                         $cart->tran_date = $cart->doc_date = $cart->event_date = $date_;
61                         if (!is_date_in_fiscalyear($cart->tran_date))
62                                 $cart->tran_date = end_fiscalyear();
63                         $cart->reference = $Refs->get_next(ST_COSTUPDATE, null, $cart->tran_date, $date_);
64
65                         $cart->memo_ = sprintf(_("Cost was %s changed to %s x quantity on hand of %s"),
66                                 number_format2($last_cost, 2), number_format2($new_cost), $qoh);
67
68                         $cart->add_gl_item($stock_gl_code["adjustment_account"],
69                                 $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"], -$value_of_change);
70                         $cart->add_gl_item($stock_gl_code["inventory_account"], 0, 0, $value_of_change);
71
72                         write_journal_entries($cart);
73                         change_stock_moves_std_cost($stock_id, $date_, $new_cost - $last_cost); 
74                 }
75         }
76
77         if ($update_no != -1)
78                 add_audit_trail(ST_COSTUPDATE, $update_no, $date_);
79         commit_transaction();
80
81         return $update_no;
82 }
83
84 //-------------------------------------------------------------------------------------------------------------
85
86 function change_stock_moves_std_cost($stock_id, $date, $diff_cost)
87 {
88         $date = date2sql($date);
89         $sql = "UPDATE ".TB_PREF."stock_moves SET standard_cost = standard_cost + ".db_escape($diff_cost). " WHERE stock_id = "
90         .       db_escape($stock_id)." AND tran_date <= '$date' AND qty <> 0 AND standard_cost > 0.001 AND type <> ".ST_LOCTRANSFER;
91         db_query($sql,"The stock moves cost details for the inventory item could not be updated");
92 }