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_ITEMCATEGORY';
13 $path_to_root = "../..";
14 include($path_to_root . "/includes/session.inc");
16 if (isset($_GET['FixedAsset'])) {
17 $page_security = 'SA_ASSETCATEGORY';
18 $help_context = "Fixed Assets Categories";
19 $_POST['mb_flag'] = 'F';
22 $help_context = "Item Categories";
26 if ($SysPrefs->use_popup_windows && $SysPrefs->use_popup_search)
27 $js .= get_js_open_window(900, 500);
29 page(_($help_context), false, false, "", $js);
31 include_once($path_to_root . "/includes/ui.inc");
33 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
35 simple_page_mode(true);
36 //----------------------------------------------------------------------------------
38 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
41 //initialise no input errors assumed initially before we test
44 if (strlen($_POST['description']) == 0)
47 display_error(_("The item category description cannot be empty."));
48 set_focus('description');
53 if ($selected_id != -1)
55 update_item_category($selected_id, $_POST['description'],
56 $_POST['tax_type_id'], $_POST['sales_account'],
57 $_POST['cogs_account'], $_POST['inventory_account'],
58 $_POST['adjustment_account'], $_POST['wip_account'],
59 $_POST['units'], $_POST['mb_flag'], $_POST['dim1'], $_POST['dim2'],
60 check_value('no_sale'), check_value('no_purchase'));
61 display_notification(_('Selected item category has been updated'));
65 add_item_category($_POST['description'],
66 $_POST['tax_type_id'], $_POST['sales_account'],
67 $_POST['cogs_account'], $_POST['inventory_account'],
68 $_POST['adjustment_account'], $_POST['wip_account'],
69 $_POST['units'], $_POST['mb_flag'], $_POST['dim1'],
70 $_POST['dim2'], check_value('no_sale'), check_value('no_purchase'));
71 display_notification(_('New item category has been added'));
77 //----------------------------------------------------------------------------------
79 if ($Mode == 'Delete')
82 // PREVENT DELETES IF DEPENDENT RECORDS IN 'stock_master'
83 if (key_in_foreign_table($selected_id, 'stock_master', 'category_id'))
85 display_error(_("Cannot delete this item category because items have been created using this item category."));
89 delete_item_category($selected_id);
90 display_notification(_('Selected item category has been deleted'));
98 $sav = get_post('show_inactive');
99 $mb_flag = get_post('mb_flag');
101 $_POST['show_inactive'] = $sav;
102 if (is_fixed_asset($mb_flag))
103 $_POST['mb_flag'] = 'F';
105 if (list_updated('mb_flag')) {
106 $Ajax->activate('details');
109 //----------------------------------------------------------------------------------
110 $fixed_asset = is_fixed_asset(get_post('mb_flag'));
112 $result = get_item_categories(check_value('show_inactive'), $fixed_asset);
115 start_table(TABLESTYLE, "width='80%'");
117 $th = array(_("Name"), _("Tax type"), _("Units"), _("Sales Act"),
118 _("Asset Account"), _("Deprecation Cost Account"),
119 _("Depreciation/Disposal Account"), "", "");
121 $th = array(_("Name"), _("Tax type"), _("Units"), _("Type"), _("Sales Act"),
122 _("Inventory Account"), _("COGS Account"), _("Adjustment Account"),
123 _("Assembly Account"), "", "");
125 inactive_control_column($th);
128 $k = 0; //row colour counter
130 while ($myrow = db_fetch($result))
133 alt_table_row_color($k);
135 label_cell($myrow["description"]);
136 label_cell($myrow["tax_name"]);
137 label_cell($myrow["dflt_units"], "align=center");
139 label_cell($stock_types[$myrow["dflt_mb_flag"]]);
140 label_cell($myrow["dflt_sales_act"], "align=center");
141 label_cell($myrow["dflt_inventory_act"], "align=center");
142 label_cell($myrow["dflt_cogs_act"], "align=center");
143 label_cell($myrow["dflt_adjustment_act"], "align=center");
145 label_cell($myrow["dflt_wip_act"], "align=center");
146 inactive_control_cell($myrow["category_id"], $myrow["inactive"], 'stock_category', 'category_id');
147 edit_button_cell("Edit".$myrow["category_id"], _("Edit"));
148 delete_button_cell("Delete".$myrow["category_id"], _("Delete"));
152 inactive_control_row($th);
155 //----------------------------------------------------------------------------------
157 div_start('details');
158 start_table(TABLESTYLE2);
160 if ($selected_id != -1)
162 if ($Mode == 'Edit') {
163 //editing an existing item category
164 $myrow = get_item_category($selected_id);
166 $_POST['category_id'] = $myrow["category_id"];
167 $_POST['description'] = $myrow["description"];
168 $_POST['tax_type_id'] = $myrow["dflt_tax_type"];
169 $_POST['sales_account'] = $myrow["dflt_sales_act"];
170 $_POST['cogs_account'] = $myrow["dflt_cogs_act"];
171 $_POST['inventory_account'] = $myrow["dflt_inventory_act"];
172 $_POST['adjustment_account'] = $myrow["dflt_adjustment_act"];
173 $_POST['wip_account'] = $myrow["dflt_wip_act"];
174 $_POST['units'] = $myrow["dflt_units"];
175 $_POST['mb_flag'] = $myrow["dflt_mb_flag"];
176 $_POST['dim1'] = $myrow["dflt_dim1"];
177 $_POST['dim2'] = $myrow["dflt_dim2"];
178 $_POST['no_sale'] = $myrow["dflt_no_sale"];
179 $_POST['no_purchase'] = $myrow["dflt_no_purchase"];
181 hidden('selected_id', $selected_id);
182 hidden('category_id');
183 } else if ($Mode != 'CLONE') {
184 $_POST['long_description'] = '';
185 $_POST['description'] = '';
186 $_POST['no_sale'] = 0;
187 $_POST['no_purchase'] = 0;
189 $company_record = get_company_prefs();
191 if (get_post('inventory_account') == "")
192 $_POST['inventory_account'] = $company_record["default_inventory_act"];
194 if (get_post('cogs_account') == "")
195 $_POST['cogs_account'] = $company_record["default_cogs_act"];
197 if (get_post('sales_account') == "")
198 $_POST['sales_account'] = $company_record["default_inv_sales_act"];
200 if (get_post('adjustment_account') == "")
201 $_POST['adjustment_account'] = $company_record["default_adj_act"];
203 if (get_post('wip_account') == "")
204 $_POST['wip_account'] = $company_record["default_wip_act"];
208 text_row(_("Category Name:"), 'description', null, 30, 30);
210 table_section_title(_("Default values for new items"));
212 item_tax_types_list_row(_("Item Tax Type:"), 'tax_type_id', null);
214 if (is_fixed_asset(get_post('mb_flag')))
215 hidden('mb_flag', 'F');
217 stock_item_types_list_row(_("Item Type:"), 'mb_flag', null, true);
219 stock_units_list_row(_("Units of Measure:"), 'units', null);
221 if (is_fixed_asset($_POST['mb_flag']))
222 hidden('no_sale', 0);
224 check_row(_("Exclude from sales:"), 'no_sale');
226 check_row(_("Exclude from purchases:"), 'no_purchase');
228 gl_all_accounts_list_row(_("Sales Account:"), 'sales_account', $_POST['sales_account']);
230 if (is_service($_POST['mb_flag']))
232 gl_all_accounts_list_row(_("C.O.G.S. Account:"), 'cogs_account', $_POST['cogs_account']);
233 hidden('inventory_account', $_POST['inventory_account']);
234 hidden('adjustment_account', $_POST['adjustment_account']);
236 elseif (is_fixed_asset($_POST['mb_flag']))
238 gl_all_accounts_list_row(_("Asset account:"), 'inventory_account', $_POST['inventory_account']);
239 gl_all_accounts_list_row(_("Depreciation cost account:"), 'cogs_account', $_POST['cogs_account']);
240 gl_all_accounts_list_row(_("Depreciation/Disposal account:"), 'adjustment_account', $_POST['adjustment_account']);
244 gl_all_accounts_list_row(_("Inventory Account:"), 'inventory_account', $_POST['inventory_account']);
246 gl_all_accounts_list_row(_("C.O.G.S. Account:"), 'cogs_account', $_POST['cogs_account']);
247 gl_all_accounts_list_row(_("Inventory Adjustments Account:"), 'adjustment_account', $_POST['adjustment_account']);
250 if (is_manufactured($_POST['mb_flag']))
251 gl_all_accounts_list_row(_("Item Assembly Costs Account:"), 'wip_account', $_POST['wip_account']);
253 hidden('wip_account', $_POST['wip_account']);
255 $dim = get_company_pref('use_dimension');
258 dimensions_list_row(_("Dimension")." 1", 'dim1', null, true, " ", false, 1);
260 dimensions_list_row(_("Dimension")." 2", 'dim2', null, true, " ", false, 2);
269 submit_add_or_update_center($selected_id == -1, '', 'both', true);