904afc79d4329006a7f37e601e6bb3109f7293d8
[fa-stable.git] / inventory / manage / item_categories.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 = 11;
13 $path_to_root="../..";
14 include($path_to_root . "/includes/session.inc");
15
16 page(_("Item Categories"));
17
18 include_once($path_to_root . "/includes/ui.inc");
19
20 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
21
22 simple_page_mode(true);
23 //----------------------------------------------------------------------------------
24
25 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
26 {
27
28         //initialise no input errors assumed initially before we test
29         $input_error = 0;
30
31         if (strlen($_POST['description']) == 0) 
32         {
33                 $input_error = 1;
34                 display_error(_("The item category description cannot be empty."));
35                 set_focus('description');
36         }
37
38         if ($input_error !=1)
39         {
40         if ($selected_id != -1) 
41         {
42                     update_item_category($selected_id, $_POST['description'],
43                                 $_POST['tax_type_id'],  $_POST['sales_account'], 
44                                 $_POST['cogs_account'], $_POST['inventory_account'], 
45                                 $_POST['adjustment_account'], $_POST['assembly_account'],
46                                 $_POST['units'], $_POST['mb_flag'],     $_POST['dim1'], $_POST['dim2']);
47                         display_notification(_('Selected item category has been updated'));
48         } 
49         else 
50         {
51                     add_item_category($_POST['description'],
52                                 $_POST['tax_type_id'],  $_POST['sales_account'], 
53                                 $_POST['cogs_account'], $_POST['inventory_account'], 
54                                 $_POST['adjustment_account'], $_POST['assembly_account'], 
55                                 $_POST['units'], $_POST['mb_flag'],     $_POST['dim1'], 
56                                 $_POST['dim2']);
57                         display_notification(_('New item category has been added'));
58         }
59                 $Mode = 'RESET';
60         }
61 }
62
63 //---------------------------------------------------------------------------------- 
64
65 if ($Mode == 'Delete')
66 {
67
68         // PREVENT DELETES IF DEPENDENT RECORDS IN 'stock_master'
69         $sql= "SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE category_id='$selected_id'";
70         $result = db_query($sql, "could not query stock master");
71         $myrow = db_fetch_row($result);
72         if ($myrow[0] > 0) 
73         {
74                 display_error(_("Cannot delete this item category because items have been created using this item category."));
75         } 
76         else 
77         {
78                 delete_item_category($selected_id);
79                 display_notification(_('Selected item category has been deleted'));
80         }
81         $Mode = 'RESET';
82 }
83
84 if ($Mode == 'RESET')
85 {
86         $selected_id = -1;
87         unset($_POST);
88 }
89 if (list_updated('mb_flag')) {
90         $Ajax->activate('details');
91 }
92 //----------------------------------------------------------------------------------
93
94 $sql = "SELECT c.*, t.name as tax_name FROM ".TB_PREF."stock_category c, "
95         .TB_PREF."item_tax_types t WHERE c.dflt_tax_type=t.id";
96
97 $result = db_query($sql, "could not get stock categories");
98
99 start_form();
100 start_table("$table_style width=80%");
101 $th = array(_("Name"), _("Tax type"), _("Units"), _("Type"), _("Sales Act"),
102 _("COGS Account"), _("Inventory Account"), _("Adjustment Account"),
103 _("Assembly Account"), "", "");
104 table_header($th);
105 $k = 0; //row colour counter
106
107 while ($myrow = db_fetch($result)) 
108 {
109         
110         alt_table_row_color($k);
111
112         label_cell($myrow["description"]);
113         label_cell($myrow["tax_name"]);
114         label_cell($myrow["dflt_units"], "align=center");
115         label_cell($stock_types[$myrow["dflt_mb_flag"]]);
116         label_cell($myrow["dflt_sales_act"], "align=center");
117         label_cell($myrow["dflt_cogs_act"], "align=center");
118         label_cell($myrow["dflt_inventory_act"], "align=center");
119         label_cell($myrow["dflt_adjustment_act"], "align=center");
120         label_cell($myrow["dflt_assembly_act"], "align=center");
121         edit_button_cell("Edit".$myrow[0], _("Edit"));
122         delete_button_cell("Delete".$myrow[0], _("Delete"));
123         end_row();
124 }
125
126 end_table();
127 end_form();
128 echo '<br>';
129 //----------------------------------------------------------------------------------
130
131 start_form();
132
133 div_start('details');
134 start_table($table_style2);
135
136 if ($selected_id != -1) 
137 {
138         if ($Mode == 'Edit') {
139                 //editing an existing item category
140                 $myrow = get_item_category($selected_id);
141
142                 $_POST['category_id'] = $myrow["category_id"];
143                 $_POST['description']  = $myrow["description"];
144                 $_POST['tax_type_id']  = $myrow["dflt_tax_type"];
145                 $_POST['sales_account']  = $myrow["dflt_sales_act"];
146                 $_POST['cogs_account']  = $myrow["dflt_cogs_act"];
147                 $_POST['inventory_account']  = $myrow["dflt_inventory_act"];
148                 $_POST['adjustment_account']  = $myrow["dflt_adjustment_act"];
149                 $_POST['assembly_account']  = $myrow["dflt_assembly_act"];
150                 $_POST['units']  = $myrow["dflt_units"];
151                 $_POST['mb_flag']  = $myrow["dflt_mb_flag"];
152                 $_POST['dim1']  = $myrow["dflt_dim1"];
153                 $_POST['dim2']  = $myrow["dflt_dim2"];
154         } 
155         hidden('selected_id', $selected_id);
156         hidden('category_id');
157 } else {
158                 $_POST['long_description'] = '';
159                 $_POST['description'] = '';
160
161                 $company_record = get_company_prefs();
162
163     if (get_post('inventory_account') == "")
164         $_POST['inventory_account'] = $company_record["default_inventory_act"];
165
166     if (get_post('cogs_account') == "")
167         $_POST['cogs_account'] = $company_record["default_cogs_act"];
168
169         if (get_post('sales_account') == "")
170                 $_POST['sales_account'] = $company_record["default_inv_sales_act"];
171
172         if (get_post('adjustment_account') == "")
173                 $_POST['adjustment_account'] = $company_record["default_adj_act"];
174
175         if (get_post('assembly_account') == "")
176                 $_POST['assembly_account'] = $company_record["default_assembly_act"];
177
178 }
179
180 text_row(_("Category Name:"), 'description', null, 30, 30);  
181
182 table_section_title(_("Default values for new items"));
183
184 item_tax_types_list_row(_("Item Tax Type:"), 'tax_type_id', null);
185
186 stock_item_types_list_row(_("Item Type:"), 'mb_flag', null, true);
187
188 stock_units_list_row(_("Units of Measure:"), 'units', null);
189
190 gl_all_accounts_list_row(_("Sales Account:"), 'sales_account', $_POST['sales_account']);
191
192 gl_all_accounts_list_row(_("Inventory Account:"), 'inventory_account', $_POST['inventory_account']);
193
194 if (!is_service($_POST['mb_flag'])) 
195 {
196         gl_all_accounts_list_row(_("C.O.G.S. Account:"), 'cogs_account', $_POST['cogs_account']);
197         gl_all_accounts_list_row(_("Inventory Adjustments Account:"), 'adjustment_account', $_POST['adjustment_account']);
198 }
199 else 
200 {
201         hidden('cogs_account', $_POST['cogs_account']);
202         hidden('adjustment_account', $_POST['adjustment_account']);
203 }
204
205 if (is_manufactured($_POST['mb_flag']))
206         gl_all_accounts_list_row(_("Item Assembly Costs Account:"), 'assembly_account', $_POST['assembly_account']);
207 else
208         hidden('assembly_account', $_POST['assembly_account']);
209
210 $dim = get_company_pref('use_dimension');
211 if ($dim >= 1)
212 {
213         dimensions_list_row(_("Dimension")." 1", 'dim1', null, true, " ", false, 1);
214         if ($dim > 1)
215                 dimensions_list_row(_("Dimension")." 2", 'dim2', null, true, " ", false, 2);
216 }
217 if ($dim < 1)
218         hidden('dim1', 0);
219 if ($dim < 2)
220         hidden('dim2', 0);
221
222 end_table(1);
223 div_end();
224 submit_add_or_update_center($selected_id == -1, '', true);
225
226 end_form();
227
228 end_page();
229
230 ?>