From: Janusz Dobrowolski Date: Tue, 17 Mar 2009 20:22:59 +0000 (+0000) Subject: Item category now contains default parameters for new items. X-Git-Tag: v2.4.2~19^2~1471 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=d163db3bace889f0aef85fe1f43562d82c62d783;p=fa-stable.git Item category now contains default parameters for new items. --- diff --git a/inventory/includes/db/items_category_db.inc b/inventory/includes/db/items_category_db.inc index 014b7520..71e9af34 100644 --- a/inventory/includes/db/items_category_db.inc +++ b/inventory/includes/db/items_category_db.inc @@ -9,34 +9,62 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License here . ***********************************************************************/ -function add_item_category($description) - +function add_item_category($description, $tax_type_id, $sales_account, + $cogs_account, $inventory_account, $adjustment_account, $assembly_account, + $units, $mb_flag, $dim1, $dim2) { - $sql = "INSERT INTO ".TB_PREF."stock_category (description) - VALUES (".db_escape($description).")"; + $sql = "INSERT INTO ".TB_PREF."stock_category (description, dflt_tax_type, + dflt_units, dflt_mb_flag, dflt_sales_act, dflt_cogs_act, + dflt_inventory_act, dflt_adjustment_act, dflt_assembly_act, + dflt_dim1, flt_dim2) + VALUES (" + .db_escape($description)."," + .db_escape($tax_type_id)."," + .db_escape($units)."," + .db_escape($mb_flag)."," + .db_escape($sales_account)."," + .db_escape($cogs_account)."," + .db_escape($inventory_account)."," + .db_escape($adjustment_account)."," + .db_escape($assembly_account)."," + .db_escape($dim1)."," + .db_escape($dim2).")"; db_query($sql,"an item category could not be added"); } -function update_item_category($ItemCategory, $description) +function update_item_category($id, $description, $tax_type_id, + $sales_account, $cogs_account, $inventory_account, $adjustment_account, + $assembly_account, $units, $mb_flag, $dim1, $dim2) { - $sql = "UPDATE ".TB_PREF."stock_category SET description = ".db_escape($description)." - WHERE category_id = '$ItemCategory'"; + $sql = "UPDATE ".TB_PREF."stock_category SET " + ."description = ".db_escape($description)."," + ."dflt_tax_type = ".db_escape($tax_type_id)."," + ."dflt_units = ".db_escape($units)."," + ."dflt_mb_flag = ".db_escape($mb_flag)."," + ."dflt_sales_act = ".db_escape($sales_account)."," + ."dflt_cogs_act = ".db_escape($cogs_account)."," + ."dflt_inventory_act = ".db_escape($inventory_account)."," + ."dflt_adjustment_act = ".db_escape($adjustment_account)."," + ."dflt_assembly_act = ".db_escape($assembly_account)."," + ."dflt_dim1 = ".db_escape($dim1)."," + ."dflt_dim2 = ".db_escape($dim2) + ." WHERE category_id = '$id'"; db_query($sql,"an item category could not be updated"); } -function delete_item_category($ItemCategory) +function delete_item_category($id) { - $sql="DELETE FROM ".TB_PREF."stock_category WHERE category_id='$ItemCategory'"; + $sql="DELETE FROM ".TB_PREF."stock_category WHERE category_id='$id'"; db_query($sql,"an item category could not be deleted"); } -function get_item_category($ItemCategory) +function get_item_category($id) { - $sql="SELECT * FROM ".TB_PREF."stock_category WHERE category_id='$ItemCategory'"; + $sql="SELECT * FROM ".TB_PREF."stock_category WHERE category_id='$id'"; $result = db_query($sql,"an item category could not be retrieved"); diff --git a/inventory/manage/item_categories.php b/inventory/manage/item_categories.php index f5de480a..904afc79 100644 --- a/inventory/manage/item_categories.php +++ b/inventory/manage/item_categories.php @@ -39,12 +39,21 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') { if ($selected_id != -1) { - update_item_category($selected_id, $_POST['description']); + update_item_category($selected_id, $_POST['description'], + $_POST['tax_type_id'], $_POST['sales_account'], + $_POST['cogs_account'], $_POST['inventory_account'], + $_POST['adjustment_account'], $_POST['assembly_account'], + $_POST['units'], $_POST['mb_flag'], $_POST['dim1'], $_POST['dim2']); display_notification(_('Selected item category has been updated')); } else { - add_item_category($_POST['description']); + add_item_category($_POST['description'], + $_POST['tax_type_id'], $_POST['sales_account'], + $_POST['cogs_account'], $_POST['inventory_account'], + $_POST['adjustment_account'], $_POST['assembly_account'], + $_POST['units'], $_POST['mb_flag'], $_POST['dim1'], + $_POST['dim2']); display_notification(_('New item category has been added')); } $Mode = 'RESET'; @@ -77,14 +86,21 @@ if ($Mode == 'RESET') $selected_id = -1; unset($_POST); } +if (list_updated('mb_flag')) { + $Ajax->activate('details'); +} //---------------------------------------------------------------------------------- -$sql = "SELECT * FROM ".TB_PREF."stock_category"; +$sql = "SELECT c.*, t.name as tax_name FROM ".TB_PREF."stock_category c, " + .TB_PREF."item_tax_types t WHERE c.dflt_tax_type=t.id"; + $result = db_query($sql, "could not get stock categories"); start_form(); -start_table("$table_style width=30%"); -$th = array(_("Name"), "", ""); +start_table("$table_style width=80%"); +$th = array(_("Name"), _("Tax type"), _("Units"), _("Type"), _("Sales Act"), +_("COGS Account"), _("Inventory Account"), _("Adjustment Account"), +_("Assembly Account"), "", ""); table_header($th); $k = 0; //row colour counter @@ -94,6 +110,14 @@ while ($myrow = db_fetch($result)) alt_table_row_color($k); label_cell($myrow["description"]); + label_cell($myrow["tax_name"]); + label_cell($myrow["dflt_units"], "align=center"); + label_cell($stock_types[$myrow["dflt_mb_flag"]]); + label_cell($myrow["dflt_sales_act"], "align=center"); + label_cell($myrow["dflt_cogs_act"], "align=center"); + label_cell($myrow["dflt_inventory_act"], "align=center"); + label_cell($myrow["dflt_adjustment_act"], "align=center"); + label_cell($myrow["dflt_assembly_act"], "align=center"); edit_button_cell("Edit".$myrow[0], _("Edit")); delete_button_cell("Delete".$myrow[0], _("Delete")); end_row(); @@ -106,6 +130,7 @@ echo '
'; start_form(); +div_start('details'); start_table($table_style2); if ($selected_id != -1) @@ -116,15 +141,86 @@ if ($selected_id != -1) $_POST['category_id'] = $myrow["category_id"]; $_POST['description'] = $myrow["description"]; - } + $_POST['tax_type_id'] = $myrow["dflt_tax_type"]; + $_POST['sales_account'] = $myrow["dflt_sales_act"]; + $_POST['cogs_account'] = $myrow["dflt_cogs_act"]; + $_POST['inventory_account'] = $myrow["dflt_inventory_act"]; + $_POST['adjustment_account'] = $myrow["dflt_adjustment_act"]; + $_POST['assembly_account'] = $myrow["dflt_assembly_act"]; + $_POST['units'] = $myrow["dflt_units"]; + $_POST['mb_flag'] = $myrow["dflt_mb_flag"]; + $_POST['dim1'] = $myrow["dflt_dim1"]; + $_POST['dim2'] = $myrow["dflt_dim2"]; + } hidden('selected_id', $selected_id); hidden('category_id'); +} else { + $_POST['long_description'] = ''; + $_POST['description'] = ''; + + $company_record = get_company_prefs(); + + if (get_post('inventory_account') == "") + $_POST['inventory_account'] = $company_record["default_inventory_act"]; + + if (get_post('cogs_account') == "") + $_POST['cogs_account'] = $company_record["default_cogs_act"]; + + if (get_post('sales_account') == "") + $_POST['sales_account'] = $company_record["default_inv_sales_act"]; + + if (get_post('adjustment_account') == "") + $_POST['adjustment_account'] = $company_record["default_adj_act"]; + + if (get_post('assembly_account') == "") + $_POST['assembly_account'] = $company_record["default_assembly_act"]; + } text_row(_("Category Name:"), 'description', null, 30, 30); -end_table(1); +table_section_title(_("Default values for new items")); + +item_tax_types_list_row(_("Item Tax Type:"), 'tax_type_id', null); + +stock_item_types_list_row(_("Item Type:"), 'mb_flag', null, true); +stock_units_list_row(_("Units of Measure:"), 'units', null); + +gl_all_accounts_list_row(_("Sales Account:"), 'sales_account', $_POST['sales_account']); + +gl_all_accounts_list_row(_("Inventory Account:"), 'inventory_account', $_POST['inventory_account']); + +if (!is_service($_POST['mb_flag'])) +{ + gl_all_accounts_list_row(_("C.O.G.S. Account:"), 'cogs_account', $_POST['cogs_account']); + gl_all_accounts_list_row(_("Inventory Adjustments Account:"), 'adjustment_account', $_POST['adjustment_account']); +} +else +{ + hidden('cogs_account', $_POST['cogs_account']); + hidden('adjustment_account', $_POST['adjustment_account']); +} + +if (is_manufactured($_POST['mb_flag'])) + gl_all_accounts_list_row(_("Item Assembly Costs Account:"), 'assembly_account', $_POST['assembly_account']); +else + hidden('assembly_account', $_POST['assembly_account']); + +$dim = get_company_pref('use_dimension'); +if ($dim >= 1) +{ + dimensions_list_row(_("Dimension")." 1", 'dim1', null, true, " ", false, 1); + if ($dim > 1) + dimensions_list_row(_("Dimension")." 2", 'dim2', null, true, " ", false, 2); +} +if ($dim < 1) + hidden('dim1', 0); +if ($dim < 2) + hidden('dim2', 0); + +end_table(1); +div_end(); submit_add_or_update_center($selected_id == -1, '', true); end_form(); diff --git a/inventory/manage/items.php b/inventory/manage/items.php index f8370c72..6993000d 100644 --- a/inventory/manage/items.php +++ b/inventory/manage/items.php @@ -40,6 +40,9 @@ if (list_updated('stock_id')) { $Ajax->activate('details'); $Ajax->activate('controls'); } +if (list_updated('category_id') || list_updated('mb_flag')) { + $Ajax->activate('details'); +} $upload_file = ""; if (isset($_FILES['pic']) && $_FILES['pic']['name'] != '') { @@ -164,7 +167,7 @@ if (isset($_POST['addupdate'])) $_POST['dimension_id'], $_POST['dimension2_id']); display_notification(_("A new item has been added.")); - $_POST['stock_id'] = $_POST['NewStockID']; + $_POST['stock_id'] = $_POST['NewStockID'] = ''; } set_focus('stock_id'); $Ajax->activate('_page_body'); @@ -179,7 +182,7 @@ function can_delete($stock_id) $result = db_query($sql, "could not query stock moves"); $myrow = db_fetch_row($result); if ($myrow[0] > 0) - { +{ display_error(_('Cannot delete this item because there are stock movements that refer to this item.')); return false; } @@ -256,6 +259,7 @@ if (isset($_POST['select'])) context_return(array('stock_id' => $_POST['stock_id'])); } + //------------------------------------------------------------------------------------ start_form(true); @@ -287,22 +291,8 @@ if ($new_item) text_row(_("Item Code:"), 'NewStockID', null, 21, 20); - $company_record = get_company_prefs(); - - if (!isset($_POST['inventory_account']) || $_POST['inventory_account'] == "") - $_POST['inventory_account'] = $company_record["default_inventory_act"]; - - if (!isset($_POST['cogs_account']) || $_POST['cogs_account'] == "") - $_POST['cogs_account'] = $company_record["default_cogs_act"]; - - if (!isset($_POST['sales_account']) || $_POST['sales_account'] == "") - $_POST['sales_account'] = $company_record["default_inv_sales_act"]; - - if (!isset($_POST['adjustment_account']) || $_POST['adjustment_account'] == "") - $_POST['adjustment_account'] = $company_record["default_adj_act"]; - - if (!isset($_POST['assembly_account']) || $_POST['assembly_account'] == "") - $_POST['assembly_account'] = $company_record["default_assembly_act"]; + $_POST['long_description'] = ''; + $_POST['description'] = ''; } else @@ -335,7 +325,23 @@ text_row(_("Name:"), 'description', null, 52, 50); textarea_row(_('Description:'), 'long_description', null, 42, 3); -stock_categories_list_row(_("Category:"), 'category_id', null); +stock_categories_list_row(_("Category:"), 'category_id', null, $new_item); + +if ($new_item && (list_updated('category_id') || !isset($_POST['units']))) { + + $category_record = get_item_category($_POST['category_id']); + + $_POST['tax_type_id'] = $category_record["dflt_tax_type"]; + $_POST['units'] = $category_record["dflt_units"]; + $_POST['mb_flag'] = $category_record["dflt_mb_flag"]; + $_POST['inventory_account'] = $category_record["dflt_inventory_act"]; + $_POST['cogs_account'] = $category_record["dflt_cogs_act"]; + $_POST['sales_account'] = $category_record["dflt_sales_act"]; + $_POST['adjustment_account'] = $category_record["dflt_adjustment_act"]; + $_POST['assembly_account'] = $category_record["dflt_assembly_act"]; + $_POST['dimension_id'] = $category_record["dflt_dim1"]; + $_POST['dimension2_id'] = $category_record["dflt_dim2"]; +} item_tax_types_list_row(_("Item Tax Type:"), 'tax_type_id', null); diff --git a/sql/alter2.2.php b/sql/alter2.2.php index 7a9ca410..3f557aae 100644 --- a/sql/alter2.2.php +++ b/sql/alter2.2.php @@ -20,8 +20,16 @@ class fa2_2 { function install($pref, $force) { global $db; - - return true; + // set item category dflt accounts to values from company GL setup + $prefs = get_company_prefs(); + $sql = "UPDATE {$pref}stock_category SET " + ."dflt_sales_act = '" . $prefs['default_inv_sales_act'] . "'," + ."dflt_cogs_act = '". $prefs['default_cogs_act'] . "'," + ."dflt_inventory_act = '" . $prefs['default_inventory_act'] . "'," + ."dflt_adjustment_act = '" . $prefs['default_adj_act'] . "'," + ."dflt_assembly_act = '" . $prefs['default_assembly_act']."'"; + $ret = db_query($sql, "Cannot update category default GL accounts"); + return $ret; } // // Checking before install @@ -35,6 +43,7 @@ class fa2_2 { // function installed($pref) { if (check_table($pref, 'company', 'default_delivery_required')) return false; + if (check_table($pref, 'stock_category', 'dflt_dim2')) return false; return true; } }; diff --git a/sql/alter2.2.sql b/sql/alter2.2.sql index 119331c2..01c49685 100644 --- a/sql/alter2.2.sql +++ b/sql/alter2.2.sql @@ -5,4 +5,20 @@ ALTER TABLE `0_company` DROP COLUMN `custom1_value`; ALTER TABLE `0_company` DROP COLUMN `custom2_value`; ALTER TABLE `0_company` DROP COLUMN `custom3_value`; -ALTER TABLE `0_company` ADD COLUMN `default_delivery_required` SMALLINT(6) DEFAULT '1'; +ALTER TABLE `0_company` ADD COLUMN `default_delivery_required` SMALLINT(6) NULL DEFAULT '1'; + +ALTER TABLE `0_stock_category` DROP COLUMN `stock_act`; +ALTER TABLE `0_stock_category` DROP COLUMN `cogs_act`; +ALTER TABLE `0_stock_category` DROP COLUMN `adj_gl_act`; +ALTER TABLE `0_stock_category` DROP COLUMN `purch_price_var_act`; + +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_tax_type` int(11) NOT NULL default '1'; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_units` varchar(20) NOT NULL default 'each'; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_mb_flag` char(1) NOT NULL default 'B'; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_sales_act` varchar(11) NOT NULL default ''; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_cogs_act` varchar(11) NOT NULL default ''; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_inventory_act` varchar(11) NOT NULL default ''; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_adjustment_act` varchar(11) NOT NULL default ''; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_assembly_act` varchar(11) NOT NULL default ''; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_dim1` int(11) default NULL; +ALTER TABLE `0_stock_category` ADD COLUMN `dflt_dim2` int(11) default NULL; diff --git a/sql/en_US-demo.sql b/sql/en_US-demo.sql index 845dbdcf..3bcddfff 100644 --- a/sql/en_US-demo.sql +++ b/sql/en_US-demo.sql @@ -1786,22 +1786,27 @@ DROP TABLE IF EXISTS `0_stock_category`; CREATE TABLE `0_stock_category` ( `category_id` int(11) NOT NULL auto_increment, `description` varchar(60) NOT NULL default '', - `stock_act` varchar(11) default NULL, - `cogs_act` varchar(11) default NULL, - `adj_gl_act` varchar(11) default NULL, - `purch_price_var_act` varchar(11) default NULL, + `dflt_tax_type` int(11) NOT NULL default '1', + `dflt_units` varchar(20) NOT NULL default 'each', + `dflt_mb_flag` char(1) NOT NULL default 'B', + `dflt_sales_act` varchar(11) NOT NULL default '', + `dflt_cogs_act` varchar(11) NOT NULL default '', + `dflt_inventory_act` varchar(11) NOT NULL default '', + `dflt_adjustment_act` varchar(11) NOT NULL default '', + `dflt_assembly_act` varchar(11) NOT NULL default '', + `dflt_dim1` int(11) default NULL, + `dflt_dim2` int(11) default NULL, `inactive` tinyint(1) NOT NULL default '0', PRIMARY KEY (`category_id`), UNIQUE KEY `description` (`description`) ) TYPE=MyISAM AUTO_INCREMENT=5 AUTO_INCREMENT=5 ; - ### Data of table `0_stock_category` ### -INSERT INTO `0_stock_category` VALUES ('1', 'Components', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('2', 'Charges', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('3', 'Systems', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('4', 'Services', '', '', '', '', '0'); +INSERT INTO `0_stock_category` VALUES ('1', 'Components', '1', 'each', 'B', '3000', '4010', '1420', '4210', '1410', '1', '1', '0'); +INSERT INTO `0_stock_category` VALUES ('2', 'Charges', '1', 'each', 'D', '3000', '4010', '1420', '4210', '1410', '1', '1', '0'); +INSERT INTO `0_stock_category` VALUES ('3', 'Systems', '1', 'each', 'M', '3000', '4010', '1420', '4210', '1410', '1', '1', '0'); +INSERT INTO `0_stock_category` VALUES ('4', 'Services', '1', 'hrs', 'D', '3000', '4010', '1420', '4210', '1410', '1', '1', '0'); ### Structure of table `0_stock_master` ### diff --git a/sql/en_US-new.sql b/sql/en_US-new.sql index 5ec88861..f479dd7c 100644 --- a/sql/en_US-new.sql +++ b/sql/en_US-new.sql @@ -1207,10 +1207,16 @@ DROP TABLE IF EXISTS `0_stock_category`; CREATE TABLE `0_stock_category` ( `category_id` int(11) NOT NULL auto_increment, `description` varchar(60) NOT NULL default '', - `stock_act` varchar(11) default NULL, - `cogs_act` varchar(11) default NULL, - `adj_gl_act` varchar(11) default NULL, - `purch_price_var_act` varchar(11) default NULL, + `dflt_tax_type` int(11) NOT NULL default '0', + `dflt_units` varchar(20) NOT NULL default 'each', + `dflt_mb_flag` char(1) NOT NULL default 'B', + `dflt_sales_act` varchar(11) NOT NULL default '', + `dflt_cogs_act` varchar(11) NOT NULL default '', + `dflt_inventory_act` varchar(11) NOT NULL default '', + `dflt_adjustment_act` varchar(11) NOT NULL default '', + `dflt_assembly_act` varchar(11) NOT NULL default '', + `dflt_dim1` int(11) default NULL, + `dflt_dim2` int(11) default NULL, `inactive` tinyint(1) NOT NULL default '0', PRIMARY KEY (`category_id`), UNIQUE KEY `description` (`description`) @@ -1219,10 +1225,10 @@ CREATE TABLE `0_stock_category` ( ### Data of table `0_stock_category` ### -INSERT INTO `0_stock_category` VALUES ('1', 'Components', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('2', 'Charges', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('3', 'Systems', '', '', '', '', '0'); -INSERT INTO `0_stock_category` VALUES ('4', 'Services', '', '', '', '', '0'); +INSERT INTO `0_stock_category` VALUES ('1', 'Components', '0'); +INSERT INTO `0_stock_category` VALUES ('2', 'Charges', '0'); +INSERT INTO `0_stock_category` VALUES ('3', 'Systems', '0'); +INSERT INTO `0_stock_category` VALUES ('4', 'Services', '0'); ### Structure of table `0_stock_master` ###