Mysqli errors: Trying to access array offset on value of type bool. Fixed. Please...
[fa-stable.git] / gl / includes / db / gl_db_account_types.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_account_type($id, $name, $class_id, $parent)
13 {
14         $sql = "INSERT INTO ".TB_PREF."chart_types (id, name, class_id, parent)
15                 VALUES (".db_escape($id).", ".db_escape($name).", ".db_escape($class_id).", ".db_escape($parent).")";
16
17         return db_query($sql);
18 }
19
20 function update_account_type($id, $name, $class_id, $parent, $old_id)
21 {
22         begin_transaction();
23         if ($old_id !== $id)
24         {
25                 $sql = "SELECT id 
26                         FROM ".TB_PREF."chart_types 
27                         WHERE parent = ".db_escape($old_id);
28
29                 $result = db_query($sql, "could not get account type");
30
31                 while ($myrow = db_fetch($result))
32                 {
33                 $sql = "UPDATE ".TB_PREF."chart_types SET parent=".db_escape($id)
34                                 ." WHERE id = '".$myrow['id']."'";
35                         db_query($sql, "could not update account type");
36                 }
37                 $sql = "SELECT account_code 
38                         FROM ".TB_PREF."chart_master 
39                         WHERE account_type = ".db_escape($old_id);
40
41                 $result = db_query($sql, "could not get account");
42
43                 while ($myrow = db_fetch($result))
44                 {
45                 $sql = "UPDATE ".TB_PREF."chart_master 
46                         SET account_type=".db_escape($id)
47                                 ." WHERE account_code = '".$myrow['account_code']."'";
48                         db_query($sql, "could not update account");
49                 }
50         }
51     $sql = "UPDATE ".TB_PREF."chart_types 
52                 SET id=".db_escape($id) .", name=".db_escape($name).",
53                         class_id=".db_escape($class_id).", parent=".db_escape($parent)
54                 ." WHERE id = ".db_escape($old_id);
55
56         $ret = db_query($sql, "could not update account type");
57         commit_transaction();
58         return $ret;
59 }
60
61 function get_account_types($all=false, $class_id=false, $parent=false)
62 {
63         $sql = "SELECT * FROM ".TB_PREF."chart_types";
64
65         $where = array();
66         
67         if (!$all)
68                 $where[] = "!inactive";
69
70         if ($class_id != false)  
71                 $where[] = "class_id=".db_escape($class_id);
72
73         if ($parent == -1) 
74                 $where[] ="(parent = '' OR parent = '-1')";
75         elseif ($parent !== false) 
76                 $where[] = "parent=".db_escape($parent);
77
78         if (count($where))
79                 $sql .= ' WHERE '.implode(' AND ', $where);
80         $sql .= " ORDER BY class_id, id, parent";
81
82         return db_query($sql, "could not get account types");
83 }
84
85 function get_account_type($id)
86 {
87         $sql = "SELECT * FROM ".TB_PREF."chart_types WHERE id = ".db_escape($id);
88
89         $result = db_query($sql, "could not get account type");
90
91         return db_fetch($result);
92 }
93
94 function get_account_type_name($id)
95 {
96         $sql = "SELECT name FROM ".TB_PREF."chart_types WHERE id = ".db_escape($id);
97
98         $result = db_query($sql, "could not get account type");
99
100         $row = db_fetch_row($result);
101         return is_array($row) ? $row[0] : false;
102 }
103
104 function delete_account_type($id)
105 {
106         $sql = "DELETE FROM ".TB_PREF."chart_types WHERE id = ".db_escape($id);
107
108         db_query($sql, "could not delete account type");
109 }
110
111 function add_account_class($id, $name, $ctype)
112 {
113         $sql = "INSERT INTO ".TB_PREF."chart_class (cid, class_name, ctype)
114                 VALUES (".db_escape($id).", ".db_escape($name).", ".db_escape($ctype).")";
115
116         return db_query($sql);
117 }
118
119 function update_account_class($id, $name, $ctype)
120 {
121     $sql = "UPDATE ".TB_PREF."chart_class SET class_name=".db_escape($name).",
122                 ctype=".db_escape($ctype)." WHERE cid = ".db_escape($id);
123
124         return db_query($sql);
125 }
126
127 function get_account_classes($all=false, $balance=-1)
128 {
129         $sql = "SELECT * FROM ".TB_PREF."chart_class";
130
131         if (!$all) 
132                 $sql .= " WHERE !inactive";
133         if ($balance == 0) 
134                 $sql .= " AND ctype>".CL_EQUITY." OR ctype=0";
135         elseif ($balance == 1) 
136                 $sql .= " AND ctype>0 AND ctype<".CL_INCOME; 
137         $sql .= " ORDER BY ctype, cid";
138
139         return db_query($sql, "could not get account classes");
140 }
141
142 function get_account_class($id)
143 {
144         $sql = "SELECT * FROM ".TB_PREF."chart_class WHERE cid = ".db_escape($id);
145
146         $result = db_query($sql, "could not get account type");
147
148         return db_fetch($result);
149 }
150
151 function get_account_class_name($id)
152 {
153         $sql = "SELECT class_name FROM ".TB_PREF."chart_class WHERE cid =".db_escape($id);
154
155         $result = db_query($sql, "could not get account type");
156
157         $row = db_fetch_row($result);
158         return $row[0];
159 }
160
161 function delete_account_class($id)
162 {
163         $sql = "DELETE FROM ".TB_PREF."chart_class WHERE cid = ".db_escape($id);
164
165         db_query($sql, "could not delete account type");
166 }
167