Bug in rates display fixed in single form layout.
[fa-stable.git] / taxes / tax_groups.php
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 $page_security = 'SA_TAXGROUPS';
13 $path_to_root = "..";
14
15 include($path_to_root . "/includes/session.inc");
16
17 page(_("Tax Groups"));
18
19 include_once($path_to_root . "/includes/data_checks.inc");
20 include_once($path_to_root . "/includes/ui.inc");
21
22 include_once($path_to_root . "/taxes/db/tax_groups_db.inc");
23 include_once($path_to_root . "/taxes/db/tax_types_db.inc");
24
25 simple_page_mode(true);
26         
27 check_db_has_tax_types(_("There are no tax types defined. Define tax types before defining tax groups."));
28
29 //-----------------------------------------------------------------------------------
30
31 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
32 {
33
34         //initialise no input errors assumed initially before we test
35         $input_error = 0;
36
37         if (strlen($_POST['name']) == 0) 
38         {
39                 $input_error = 1;
40                 display_error(_("The tax group name cannot be empty."));
41                 set_focus('name');
42         } 
43         /* Editable rate has been removed 090920 Joe Hunt
44         else 
45         {
46                 // make sure any entered rates are valid
47         for ($i = 0; $i < 5; $i++) 
48         {
49                 if (isset($_POST['tax_type_id' . $i]) && 
50                         $_POST['tax_type_id' . $i] != ALL_NUMERIC       && 
51                         !check_num('rate' . $i, 0))
52                 {
53                         display_error( _("An entered tax rate is invalid or less than zero."));
54                         $input_error = 1;
55                         set_focus('rate');
56                         break;
57                 }
58         }
59         }
60         */
61         if ($input_error != 1) 
62         {
63
64                 // create an array of the taxes and array of rates
65         $taxes = array();
66         $rates = array();
67
68         for ($i = 0; $i < 5; $i++) 
69         {
70                 if (isset($_POST['tax_type_id' . $i]) &&
71                                 $_POST['tax_type_id' . $i] != ANY_NUMERIC) 
72                         {
73                         $taxes[] = $_POST['tax_type_id' . $i];
74                                 $rates[] = get_tax_type_default_rate($_POST['tax_type_id' . $i]);
75                                 //Editable rate has been removed 090920 Joe Hunt
76                         //$rates[] = input_num('rate' . $i);
77                 }
78         }
79
80         if ($selected_id != -1) 
81         {
82                         update_tax_group($selected_id, $_POST['name'], $_POST['tax_shipping'], $taxes, 
83                         $rates);
84                         display_notification(_('Selected tax group has been updated'));
85         } 
86         else 
87         {
88                         add_tax_group($_POST['name'], $_POST['tax_shipping'], $taxes, $rates);
89                         display_notification(_('New tax group has been added'));
90         }
91
92                 $Mode = 'RESET';
93         }
94 }
95
96 //-----------------------------------------------------------------------------------
97
98 function can_delete($selected_id)
99 {
100         if ($selected_id == -1)
101                 return false;
102         $sql = "SELECT COUNT(*) FROM ".TB_PREF."cust_branch WHERE tax_group_id=$selected_id";
103         $result = db_query($sql, "could not query customers");
104         $myrow = db_fetch_row($result);
105         if ($myrow[0] > 0) 
106         {
107                 display_note(_("Cannot delete this tax group because customer branches been created referring to it."));
108                 return false;
109         }
110
111         $sql = "SELECT COUNT(*) FROM ".TB_PREF."suppliers WHERE tax_group_id=$selected_id";
112         $result = db_query($sql, "could not query suppliers");
113         $myrow = db_fetch_row($result);
114         if ($myrow[0] > 0) 
115         {
116                 display_note(_("Cannot delete this tax group because suppliers been created referring to it."));
117                 return false;
118         }
119
120
121         return true;
122 }
123
124
125 //-----------------------------------------------------------------------------------
126
127 if ($Mode == 'Delete')
128 {
129
130         if (can_delete($selected_id))
131         {
132                 delete_tax_group($selected_id);
133                 display_notification(_('Selected tax group has been deleted'));
134         }
135         $Mode = 'RESET';
136 }
137
138 if ($Mode == 'RESET')
139 {
140         $selected_id = -1;
141         $sav = get_post('show_inactive');
142         unset($_POST);
143         $_POST['show_inactive'] = $sav;
144 }
145 //-----------------------------------------------------------------------------------
146
147 $result = get_all_tax_groups(check_value('show_inactive'));
148
149 start_form();
150 start_table($table_style);
151 $th = array(_("Description"), _("Tax Shipping"), "", "");
152 inactive_control_column($th);
153 table_header($th);
154
155 $k = 0;
156 while ($myrow = db_fetch($result)) 
157 {
158
159         alt_table_row_color($k);
160
161         label_cell($myrow["name"]);
162         if ($myrow["tax_shipping"])
163                 label_cell(_("Yes"));
164         else
165                 label_cell(_("No"));
166
167         /*for ($i=0; $i< 5; $i++)
168                 if ($myrow["type" . $i] != ALL_NUMERIC)
169                         echo "<td>" . $myrow["type" . $i] . "</td>";*/
170
171         inactive_control_cell($myrow["id"], $myrow["inactive"], 'tax_groups', 'id');
172         edit_button_cell("Edit".$myrow["id"], _("Edit"));
173         delete_button_cell("Delete".$myrow["id"], _("Delete"));
174         end_row();;
175 }
176
177 inactive_control_row($th);
178 end_table(1);
179
180 //-----------------------------------------------------------------------------------
181
182 start_table($table_style2);
183
184 if ($selected_id != -1) 
185 {
186         //editing an existing status code
187
188         if ($Mode == 'Edit') {
189         $group = get_tax_group($selected_id);
190
191         $_POST['name']  = $group["name"];
192         $_POST['tax_shipping'] = $group["tax_shipping"];
193
194         $items = get_tax_group_items($selected_id);
195
196         $i = 0;
197         while ($tax_item = db_fetch($items)) 
198         {
199                 $_POST['tax_type_id' . $i]  = $tax_item["tax_type_id"];
200                 $_POST['rate' . $i]  = percent_format($tax_item["rate"]);
201                 $i ++;
202         }
203         while($i<5) unset($_POST['tax_type_id'.$i++]);
204         }
205
206         hidden('selected_id', $selected_id);
207 }
208 text_row_ex(_("Description:"), 'name', 40);
209 yesno_list_row(_("Tax Shipping:"), 'tax_shipping', null, "", "", true);
210
211 end_table();
212
213 display_note(_("Select the taxes that are included in this group."), 1);
214
215 start_table($table_style2);
216 //$th = array(_("Tax"), _("Default Rate (%)"), _("Rate (%)"));
217 //Editable rate has been removed 090920 Joe Hunt
218 $th = array(_("Tax"), _("Rate (%)"));
219 table_header($th);
220 for ($i = 0; $i < 5; $i++) 
221 {
222         start_row();
223         if (!isset($_POST['tax_type_id' . $i]))
224                 $_POST['tax_type_id' . $i] = 0;
225         tax_types_list_cells(null, 'tax_type_id' . $i, $_POST['tax_type_id' . $i], _("None"), true);
226
227         if ($_POST['tax_type_id' . $i] != 0 && $_POST['tax_type_id' . $i] != ALL_NUMERIC) 
228         {
229                 $default_rate = get_tax_type_default_rate($_POST['tax_type_id' . $i]);
230                 label_cell(percent_format($default_rate), "nowrap align=right");
231
232                 //Editable rate has been removed 090920 Joe Hunt
233                 //if (!isset($_POST['rate' . $i]) || $_POST['rate' . $i] == "")
234                 //      $_POST['rate' . $i] = percent_format($default_rate);
235                 //small_amount_cells(null, 'rate' . $i, $_POST['rate' . $i], null, null, 
236                 //  user_percent_dec()); 
237         }
238         end_row();
239 }
240
241 end_table(1);
242
243 submit_add_or_update_center($selected_id == -1, '', 'both');
244
245 end_form();
246
247 //------------------------------------------------------------------------------------
248
249 end_page();
250
251 ?>