0000710: Shipping tax on all tax groups. And marking with tax type(s) it shall have.
[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(_($help_context = "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         $tax_shippings = array();
68
69         for ($i = 0; $i < 5; $i++) 
70         {
71                 if (isset($_POST['tax_type_id' . $i]) &&
72                                 $_POST['tax_type_id' . $i] != ANY_NUMERIC) 
73                         {
74                         $taxes[] = $_POST['tax_type_id' . $i];
75                                 $rates[] = get_tax_type_default_rate($_POST['tax_type_id' . $i]);
76                         $tax_shippings[] = check_value('tax_shipping' . $i);
77                                 //Editable rate has been removed 090920 Joe Hunt
78                         //$rates[] = input_num('rate' . $i);
79                 }
80         }
81
82         if ($selected_id != -1) 
83         {
84                         update_tax_group($selected_id, $_POST['name'], $taxes, $rates, $tax_shippings);
85                         display_notification(_('Selected tax group has been updated'));
86         } 
87         else 
88         {
89                         add_tax_group($_POST['name'], $taxes, $rates, $tax_shippings);
90                         display_notification(_('New tax group has been added'));
91         }
92
93                 $Mode = 'RESET';
94         }
95 }
96
97 //-----------------------------------------------------------------------------------
98
99 function can_delete($selected_id)
100 {
101         if ($selected_id == -1)
102                 return false;
103         if (key_in_foreign_table($selected_id, 'cust_branch', 'tax_group_id'))  
104         {
105                 display_error(_("Cannot delete this tax group because customer branches been created referring to it."));
106                 return false;
107         }
108
109         if (key_in_foreign_table($selected_id, 'suppliers', 'tax_group_id'))
110         {
111                 display_error(_("Cannot delete this tax group because suppliers been created referring to it."));
112                 return false;
113         }
114
115
116         return true;
117 }
118
119
120 //-----------------------------------------------------------------------------------
121
122 if ($Mode == 'Delete')
123 {
124
125         if (can_delete($selected_id))
126         {
127                 delete_tax_group($selected_id);
128                 display_notification(_('Selected tax group has been deleted'));
129         }
130         $Mode = 'RESET';
131 }
132
133 if ($Mode == 'RESET')
134 {
135         $selected_id = -1;
136         $sav = get_post('show_inactive');
137         unset($_POST);
138         $_POST['show_inactive'] = $sav;
139 }
140 //-----------------------------------------------------------------------------------
141
142 $result = get_all_tax_groups(check_value('show_inactive'));
143
144 start_form();
145
146 start_table(TABLESTYLE);
147 $th = array(_("Description"), "", "");
148 inactive_control_column($th);
149
150 table_header($th);
151
152 $k = 0;
153 while ($myrow = db_fetch($result)) 
154 {
155
156         alt_table_row_color($k);
157
158         label_cell($myrow["name"]);
159
160         /*for ($i=0; $i< 5; $i++)
161                 if ($myrow["type" . $i] != ALL_NUMERIC)
162                         echo "<td>" . $myrow["type" . $i] . "</td>";*/
163
164         inactive_control_cell($myrow["id"], $myrow["inactive"], 'tax_groups', 'id');
165         edit_button_cell("Edit".$myrow["id"], _("Edit"));
166         delete_button_cell("Delete".$myrow["id"], _("Delete"));
167         end_row();;
168 }
169
170 inactive_control_row($th);
171 end_table(1);
172
173 //-----------------------------------------------------------------------------------
174
175 start_table(TABLESTYLE2);
176
177 if ($selected_id != -1) 
178 {
179         //editing an existing status code
180
181         if ($Mode == 'Edit') {
182         $group = get_tax_group($selected_id);
183
184         $_POST['name']  = $group["name"];
185
186         $items = get_tax_group_items($selected_id);
187
188         $i = 0;
189         while ($tax_item = db_fetch($items)) 
190         {
191                 $_POST['tax_type_id' . $i]  = $tax_item["tax_type_id"];
192                 $_POST['rate' . $i]  = percent_format($tax_item["rate"]);
193                 $_POST['tax_shipping' . $i]  = $tax_item["tax_shipping"];
194                 $i ++;
195         }
196         while($i<5) unset($_POST['tax_type_id'.$i++]);
197         }
198
199         hidden('selected_id', $selected_id);
200 }
201 text_row_ex(_("Description:"), 'name', 40);
202
203 end_table();
204
205 display_note(_("Select the taxes that are included in this group."), 1, 1);
206
207 start_table(TABLESTYLE2);
208 //$th = array(_("Tax"), _("Default Rate (%)"), _("Rate (%)"));
209 //Editable rate has been removed 090920 Joe Hunt
210 $th = array(_("Tax"), _("Rate (%)"), _("Shipping Tax"));
211 table_header($th);
212 for ($i = 0; $i < 5; $i++) 
213 {
214         start_row();
215         if (!isset($_POST['tax_type_id' . $i]))
216                 $_POST['tax_type_id' . $i] = 0;
217         if (!isset($_POST['tax_shipping' . $i]))
218                 $_POST['tax_shipping' . $i] = 0;
219         tax_types_list_cells(null, 'tax_type_id' . $i, $_POST['tax_type_id' . $i], _("None"), true);
220
221         if ($_POST['tax_type_id' . $i] != 0 && $_POST['tax_type_id' . $i] != ALL_NUMERIC) 
222         {
223                 $default_rate = get_tax_type_default_rate($_POST['tax_type_id' . $i]);
224                 label_cell(percent_format($default_rate), "nowrap align=right");
225                 
226                 check_cells(null, 'tax_shipping' . $i);
227                 //Editable rate has been removed 090920 Joe Hunt
228                 //if (!isset($_POST['rate' . $i]) || $_POST['rate' . $i] == "")
229                 //      $_POST['rate' . $i] = percent_format($default_rate);
230                 //small_amount_cells(null, 'rate' . $i, $_POST['rate' . $i], null, null, 
231                 //  user_percent_dec()); 
232         }
233         end_row();
234 }
235
236 end_table(1);
237
238 submit_add_or_update_center($selected_id == -1, '', 'both');
239
240 end_form();
241
242 //------------------------------------------------------------------------------------
243
244 end_page();
245
246 ?>