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_group($name, $taxes, $tax_area)
16 $sql = "INSERT INTO ".TB_PREF."tax_groups (name, tax_area) VALUES (".db_escape($name).",".db_escape($tax_area).")";
17 db_query($sql, "could not add tax group");
21 add_tax_group_items($id, $taxes);
26 function update_tax_group($id, $name, $taxes, $tax_area)
30 $sql = "UPDATE ".TB_PREF."tax_groups SET name=".db_escape($name).",tax_area=".db_escape($tax_area)." WHERE id=".db_escape($id);
31 db_query($sql, "could not update tax group");
33 delete_tax_group_items($id);
34 add_tax_group_items($id, $taxes);
39 function get_all_tax_groups($all=false)
41 $sql = "SELECT * FROM ".TB_PREF."tax_groups";
42 if (!$all) $sql .= " WHERE !inactive";
44 return db_query($sql, "could not get all tax group");
47 function get_tax_group($type_id)
49 $sql = "SELECT * FROM ".TB_PREF."tax_groups WHERE id=".db_escape($type_id);
51 $result = db_query($sql, "could not get tax group");
53 return db_fetch($result);
56 function delete_tax_group($id)
60 $sql = "DELETE FROM ".TB_PREF."tax_groups WHERE id=".db_escape($id);
62 db_query($sql, "could not delete tax group");
64 delete_tax_group_items($id);
69 function add_tax_group_items($id, $items)
71 for ($i=0; $i < count($items); $i++)
73 $sql = "INSERT INTO ".TB_PREF."tax_group_items (tax_group_id, tax_type_id)
74 VALUES (".db_escape($id).", ".db_escape($items[$i]).")";
75 db_query($sql, "could not add item tax group item");
79 function delete_tax_group_items($id)
81 $sql = "DELETE FROM ".TB_PREF."tax_group_items WHERE tax_group_id=".db_escape($id);
83 db_query($sql, "could not delete item tax group items");
87 // Return all tax types with rate value updated according to tax group selected
89 function get_tax_group_rates($group_id)
94 "SELECT t.id as tax_type_id,"
95 .($SysPrefs->suppress_tax_rates() == 1 ? "t.name as tax_type_name,"
96 : "CONCAT(t.name, ' (', t.rate, '%)') as tax_type_name,")
99 IF(g.tax_type_id, t.rate, NULL) as rate
100 FROM ".TB_PREF."tax_types t
101 LEFT JOIN ".TB_PREF."tax_group_items g ON t.id=g.tax_type_id
102 AND g.tax_group_id=".db_escape($group_id). " WHERE !t.inactive";
104 return db_query($sql, "cannot get tax types as array");
107 function get_tax_group_items_as_array($id)
109 $ret_tax_array = array();
111 $tax_group_items = get_tax_group_rates($id);
113 while ($tax_group_item = db_fetch($tax_group_items))
115 $tax_group_item['Value'] = 0;
116 $ret_tax_array[$tax_group_item['tax_type_id']] = $tax_group_item;
119 return $ret_tax_array;
122 function get_tax_group_data($id)
124 $data = get_tax_group($id);
126 $data['taxes'] = get_tax_group_items_as_array($id);
132 Heuristic function to find default domestic tax_group.
134 function find_domestic_tax_group()
137 $sql = "SELECT id, cnt FROM
138 (SELECT g.id, count(*) cnt
139 FROM ".TB_PREF."tax_group_items i
140 LEFT JOIN ".TB_PREF."tax_groups g ON g.id=i.tax_group_id
141 WHERE tax_area=0 AND !inactive
144 $result = db_query($sql, "cannot get domestic group id");
145 $group = db_fetch($result);