-- --------------------------------
-- Start of India GST Tax Changes
-- --------------------------------

INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('include_hsn', '0'),
('invoice_type', 'invoice'),
('default_tax_jurisdiction', ''),
('tax_id', '');

UPDATE `ospos_app_config`
	SET `key` = 'use_destination_based_tax'
	WHERE `key` = 'customer_sales_tax_support';

UPDATE `ospos_app_config`
	SET `key` = 'default_tax_code'
	WHERE `key` = 'default_origin_tax_code';

RENAME TABLE `ospos_tax_codes` TO `ospos_tax_codes_backup`;

CREATE TABLE IF NOT EXISTS `ospos_tax_codes` (
	`tax_code_id` int(11) NOT NULL AUTO_INCREMENT,
	`tax_code` varchar(32) NOT NULL,
	`tax_code_name` varchar(255) NOT NULL DEFAULT '',
	`city` varchar(255) NOT NULL DEFAULT '',
	`state` varchar(255) NOT NULL DEFAULT '',
	`deleted` int(1) NOT NULL DEFAULT 0,
	PRIMARY KEY (`tax_code_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `ospos_customers`
	ADD COLUMN `tax_id` varchar(32) NOT NULL DEFAULT '' AFTER `taxable`,
	ADD COLUMN `sales_tax_code_id` int(11) DEFAULT NULL AFTER `tax_id`;

ALTER TABLE `ospos_items`
	ADD COLUMN `hsn_code` varchar(32) NOT NULL DEFAULT '' AFTER `low_sell_item_id`;

ALTER TABLE `ospos_sales_items_taxes`
	ADD COLUMN `sales_tax_code_id` int(11) DEFAULT NULL AFTER `item_tax_amount`,
	ADD COLUMN `jurisdiction_id` int(11) DEFAULT NULL AFTER `sales_tax_code_id`,
	ADD COLUMN `tax_category_id` int(11) DEFAULT NULL AFTER `jurisdiction_id`,
	DROP COLUMN `cascade_tax`;

RENAME TABLE `ospos_sales_taxes` TO `ospos_sales_taxes_backup`;

CREATE TABLE `ospos_sales_taxes` (
	`sales_taxes_id` int(11) NOT NULL AUTO_INCREMENT,
	`sale_id` int(10) NOT NULL,
	`jurisdiction_id` int(11) DEFAULT NULL,
	`tax_category_id` int(11) DEFAULT NULL,
	`tax_type` smallint(2) NOT NULL,
	`tax_group` varchar(32) NOT NULL,
	`sale_tax_basis` decimal(15,4) NOT NULL,
	`sale_tax_amount` decimal(15,4) NOT NULL,
	`print_sequence` tinyint(2) NOT NULL DEFAULT 0,
	`name` varchar(255) NOT NULL,
	`tax_rate` decimal(15,4) NOT NULL,
	`sales_tax_code_id` int(11)  DEFAULT NULL,
	`rounding_code` tinyint(2) NOT NULL DEFAULT 0,
	PRIMARY KEY (`sales_taxes_id`),
	KEY `print_sequence` (`sale_id`,`print_sequence`,`tax_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `ospos_tax_jurisdictions` (
	`jurisdiction_id` int(11) NOT NULL AUTO_INCREMENT,
	`jurisdiction_name` varchar(255) DEFAULT NULL,
	`tax_group` varchar(32) NOT NULL,
	`tax_type` smallint(2) NOT NULL,
	`reporting_authority` varchar(255) DEFAULT NULL,
	`tax_group_sequence` tinyint(2) NOT NULL DEFAULT 0,
	`cascade_sequence` tinyint(2) NOT NULL DEFAULT 0,
	`deleted` int(1) NOT NULL DEFAULT 0,
	PRIMARY KEY (`jurisdiction_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

ALTER TABLE `ospos_suppliers`
	ADD COLUMN `tax_id` varchar(32) DEFAULT NULL AFTER `account_number`;

ALTER TABLE `ospos_tax_categories`
	ADD COLUMN `deleted` int(1) NOT NULL DEFAULT 0 AFTER `tax_group_sequence`;

RENAME TABLE `ospos_tax_code_rates` TO `ospos_tax_code_rates_backup`;

CREATE TABLE IF NOT EXISTS `ospos_tax_rates` (
	`tax_rate_id` int(11) NOT NULL AUTO_INCREMENT,
	`rate_tax_code_id` int(11) NOT NULL,
	`rate_tax_category_id` int(10) NOT NULL,
	`rate_jurisdiction_id` int(11) NOT NULL,
	`tax_rate` decimal(15,4) NOT NULL DEFAULT 0.0000,
	`tax_rounding_code` tinyint(2) NOT NULL DEFAULT 0,
	PRIMARY KEY (`tax_rate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Add support for sales tax report

INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES
('reports_sales_taxes', 'reports');

INSERT INTO `ospos_grants` (`permission_id`, `person_id`, `menu_group`) VALUES
('reports_sales_taxes', 1, 'home');
