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");
{
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';
$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
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();
start_form();
+div_start('details');
start_table($table_style2);
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();
$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'] != '')
{
$_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');
$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;
}
context_return(array('stock_id' => $_POST['stock_id']));
}
+
//------------------------------------------------------------------------------------
start_form(true);
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
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);
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
//
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;
}
};
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;
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` ###
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`)
### 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` ###