Old ineffective sql_trail superseded by new improved db_trail logging only calls...
[fa-stable.git] / taxes / db / tax_types_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 function add_tax_type($name, $sales_gl_code, $purchasing_gl_code, $rate)
13 {
14         begin_transaction(__FUNCTION__, func_get_args());
15         $sql = "INSERT INTO ".TB_PREF."tax_types (name, sales_gl_code, purchasing_gl_code, rate)
16                 VALUES (".db_escape($name).", ".db_escape($sales_gl_code)
17                 .", ".db_escape($purchasing_gl_code).", $rate)";
18
19         db_query($sql, "could not add tax type");
20         commit_transaction();
21 }
22
23 function update_tax_type($type_id, $name, $sales_gl_code, $purchasing_gl_code, $rate)
24 {
25         begin_transaction(__FUNCTION__, func_get_args());
26         $sql = "UPDATE ".TB_PREF."tax_types SET name=".db_escape($name).",
27                 sales_gl_code=".db_escape($sales_gl_code).",
28                 purchasing_gl_code=".db_escape($purchasing_gl_code).",
29                 rate=$rate
30                 WHERE id=".db_escape($type_id);
31
32         db_query($sql, "could not update tax type");
33         commit_transaction();
34 }
35
36 function get_all_tax_types($all=false)
37 {
38         $sql = "SELECT tax_type.*,
39                                 Chart1.account_name AS SalesAccountName,
40                                 Chart2.account_name AS PurchasingAccountName
41                         FROM ".TB_PREF."tax_types tax_type,"
42                                 .TB_PREF."chart_master AS Chart1,"
43                                 .TB_PREF."chart_master AS Chart2
44                         WHERE tax_type.sales_gl_code = Chart1.account_code
45                                 AND tax_type.purchasing_gl_code = Chart2.account_code";
46
47         if (!$all) $sql .= " AND !tax_type.inactive";
48         return db_query($sql, "could not get all tax types");
49 }
50
51 function get_all_tax_types_simple()
52 {
53         $sql = "SELECT * FROM ".TB_PREF."tax_types WHERE !inactive";
54
55         return db_query($sql, "could not get all tax types");
56 }
57
58 function get_tax_type($type_id)
59 {
60         $sql = "SELECT tax_type.*,
61                                 Chart1.account_name AS SalesAccountName,
62                                 Chart2.account_name AS PurchasingAccountName
63                         FROM ".TB_PREF."tax_types tax_type,"
64                                 .TB_PREF."chart_master AS Chart1,"
65                                 .TB_PREF."chart_master AS Chart2
66                         WHERE tax_type.sales_gl_code = Chart1.account_code
67                 AND tax_type.purchasing_gl_code = Chart2.account_code AND id=".db_escape($type_id);
68
69         $result = db_query($sql, "could not get tax type");
70         return db_fetch($result);
71 }
72
73 function get_tax_type_rate($type_id)
74 {
75         $sql = "SELECT rate FROM ".TB_PREF."tax_types WHERE id=".db_escape($type_id);
76
77         $result = db_query($sql, "could not get tax type rate");
78
79         $row = db_fetch_row($result);
80         return $row[0];
81 }
82
83 function delete_tax_type($type_id)
84 {
85         begin_transaction(__FUNCTION__, func_get_args());
86
87         $sql = "DELETE FROM ".TB_PREF."tax_types WHERE id=".db_escape($type_id);
88
89         db_query($sql, "could not delete tax type");
90
91         // also delete any item tax exemptions associated with this type
92         $sql = "DELETE FROM ".TB_PREF."item_tax_type_exemptions WHERE tax_type_id=".db_escape($type_id);
93
94         db_query($sql, "could not delete item tax type exemptions");
95
96         commit_transaction();
97 }
98
99 /*
100         Check if gl_code is used by more than 2 tax types,
101         or check if the two gl codes are not used by any other 
102         than selected tax type.
103         Necessary for pre-2.2 installations.
104 */
105 function is_tax_gl_unique($gl_code, $gl_code2=-1, $selected_id=-1) {
106
107         $purch_code = $gl_code2== -1 ? $gl_code : $gl_code2;
108
109         $sql = "SELECT count(*) FROM "
110                         .TB_PREF."tax_types     
111                 WHERE (sales_gl_code=" .db_escape($gl_code)
112                         ." OR purchasing_gl_code=" .db_escape($purch_code). ")";
113
114         if ($selected_id != -1)
115                 $sql .= " AND id!=".db_escape($selected_id);
116
117         $res = db_query($sql, "could not query gl account uniqueness");
118         $row = db_fetch($res);
119
120         return $gl_code2 == -1 ? ($row[0] <= 1) : ($row[0] == 0);
121 }
122
123 function is_tax_account($account_code)
124 {
125         $sql= "SELECT id FROM ".TB_PREF."tax_types WHERE 
126                 sales_gl_code=".db_escape($account_code)." OR purchasing_gl_code=".db_escape($account_code);
127         $result = db_query($sql, "checking account is tax account");
128         if (db_num_rows($result) > 0) {
129                 $acct = db_fetch($result);
130                 return $acct['id'];
131         } else
132                 return false;
133 }
134
135