Item category now contains default parameters for new items.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 17 Mar 2009 20:22:59 +0000 (20:22 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 17 Mar 2009 20:22:59 +0000 (20:22 +0000)
inventory/includes/db/items_category_db.inc
inventory/manage/item_categories.php
inventory/manage/items.php
sql/alter2.2.php
sql/alter2.2.sql
sql/en_US-demo.sql
sql/en_US-new.sql

index 014b75208c48f3505ec03a75d94aa6a46608a449..71e9af348f8d33623084f496ced914ca81cb4cd2 100644 (file)
@@ -9,34 +9,62 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-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");
 
index f5de480a4aed608016629daa26ec678815180550..904afc79d4329006a7f37e601e6bb3109f7293d8 100644 (file)
@@ -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 '<br>';
 
 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();
index f8370c72cae7e4dd47b3197cf7090b7efbd44f0c..6993000d4a2946e1e49c4a4962bbd35de6f02696 100644 (file)
@@ -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);
 
index 7a9ca410205c82f3c2008260db660fcfb33c3969..3f557aae94edebca3bcfc1b8b41977e773535352 100644 (file)
@@ -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;
        }
 };
index 119331c25ca2f67ba05c97d80f4c94007a8376c0..01c49685c7bbf081d40a694051bfcee90dce2fc6 100644 (file)
@@ -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;
index 845dbdcfb7133a4250613c6c8168a61632287d37..3bcddfffa63b3ae5b8d8872f1ba10b553f15495e 100644 (file)
@@ -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` ###
index 5ec88861c419276bf889069c878ad00ab4565fee..f479dd7cd935020d0ade972b65fc12d86abb31d4 100644 (file)
@@ -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` ###