20eac3c216
This needed major refactor in all parts dealing with product or inventory.
196 lines
5.3 KiB
Transact-SQL
196 lines
5.3 KiB
Transact-SQL
BEGIN TRANSACTION
|
|
GO
|
|
ALTER TABLE dbo.Inventories DROP CONSTRAINT FK8C0CFB221DECC269
|
|
GO
|
|
ALTER TABLE dbo.Inventories DROP CONSTRAINT FK8C0CFB22EB4DE5BC
|
|
GO
|
|
ALTER TABLE dbo.Inventories DROP CONSTRAINT FK8C0CFB223F88CAB6
|
|
GO
|
|
ALTER TABLE dbo.Inventories DROP CONSTRAINT FK8C0CFB22DB70F42
|
|
GO
|
|
CREATE TABLE dbo.Tmp_Inventories
|
|
(
|
|
InventoryID uniqueidentifier NOT NULL,
|
|
KotID uniqueidentifier NOT NULL,
|
|
ProductID uniqueidentifier NOT NULL,
|
|
SortOrder int NOT NULL,
|
|
Quantity decimal(19, 5) NOT NULL,
|
|
Price decimal(19, 5) NOT NULL,
|
|
IsHappyHour bit NOT NULL,
|
|
ServiceCharge decimal(19, 5) NOT NULL,
|
|
IsScTaxable bit NOT NULL,
|
|
ServiceTaxRate decimal(19, 5) NOT NULL,
|
|
VatRate decimal(19, 5) NOT NULL,
|
|
ServiceTaxID uniqueidentifier NOT NULL,
|
|
VatID uniqueidentifier NOT NULL,
|
|
Discount decimal(19, 5) NOT NULL,
|
|
Amount AS (Quantity * CASE WHEN IsHappyHour = 1 THEN 0 ELSE Price END * (1 - Discount) * CASE WHEN IsScTaxable = 1 THEN (1 + ServiceCharge) * (1 + ServiceTaxRate + VatRate) ELSE (1 + ServiceCharge + ServiceTaxRate + VatRate) END)
|
|
) ON [PRIMARY]
|
|
GO
|
|
IF EXISTS(SELECT * FROM dbo.Inventories)
|
|
EXEC('INSERT INTO dbo.Tmp_Inventories (InventoryID, KotID, ProductID, SortOrder, Quantity, Price, IsHappyHour, ServiceCharge, IsScTaxable, ServiceTaxRate, VatRate, ServiceTaxID, VatID, Discount)
|
|
SELECT InventoryID, KotID, ProductID, SortOrder, Quantity, CASE WHEN Price = 0 THEN FullPrice ELSE Price END, CASE WHEN Price = 0 THEN 1 ELSE 0 END, ServiceCharge, IsScTaxable, ServiceTaxRate, VatRate, ServiceTaxID, VatID, Discount FROM dbo.Inventories WITH (HOLDLOCK TABLOCKX)')
|
|
GO
|
|
ALTER TABLE dbo.InventoryModifiers DROP CONSTRAINT FK80820FB4BA29671A
|
|
GO
|
|
DROP TABLE dbo.Inventories
|
|
GO
|
|
EXECUTE sp_rename N'dbo.Tmp_Inventories', N'Inventories', 'OBJECT'
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
PK__Inventories__0DAF0CB0 PRIMARY KEY CLUSTERED
|
|
(
|
|
InventoryID
|
|
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
FK8C0CFB22DB70F42 FOREIGN KEY
|
|
(
|
|
KotID
|
|
) REFERENCES dbo.Kots
|
|
(
|
|
KotID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
FK8C0CFB223F88CAB6 FOREIGN KEY
|
|
(
|
|
ProductID
|
|
) REFERENCES dbo.Products
|
|
(
|
|
ProductID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
FK8C0CFB221DECC269 FOREIGN KEY
|
|
(
|
|
ServiceTaxID
|
|
) REFERENCES dbo.Taxes
|
|
(
|
|
TaxID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
FK8C0CFB22EB4DE5BC FOREIGN KEY
|
|
(
|
|
VatID
|
|
) REFERENCES dbo.Taxes
|
|
(
|
|
TaxID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.InventoryModifiers ADD CONSTRAINT
|
|
FK80820FB4BA29671A FOREIGN KEY
|
|
(
|
|
InventoryID
|
|
) REFERENCES dbo.Inventories
|
|
(
|
|
InventoryID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Products DROP CONSTRAINT FK4065562AEB4DE5BC
|
|
GO
|
|
ALTER TABLE dbo.Products DROP CONSTRAINT FK4065562A1DECC269
|
|
GO
|
|
ALTER TABLE dbo.Products DROP CONSTRAINT FK4065562A95976D16
|
|
GO
|
|
CREATE TABLE dbo.Tmp_Products (
|
|
ProductID uniqueidentifier NOT NULL,
|
|
Code int NULL,
|
|
Name nvarchar(255) NOT NULL,
|
|
Units nvarchar(255) NOT NULL,
|
|
ProductGroupID uniqueidentifier NULL,
|
|
VatID uniqueidentifier NULL,
|
|
ServiceTaxID uniqueidentifier NULL,
|
|
ServiceCharge decimal(19, 5) NOT NULL,
|
|
IsScTaxable bit NOT NULL,
|
|
Price decimal(19, 5) NOT NULL,
|
|
HasHappyHour bit NOT NULL,
|
|
IsActive bit NOT NULL,
|
|
IsNotAvailable bit NOT NULL,
|
|
SortOrder int NOT NULL,
|
|
Quantity decimal(19, 5) NOT NULL
|
|
) ON [PRIMARY]
|
|
GO
|
|
IF EXISTS(SELECT * FROM dbo.Products)
|
|
EXEC('INSERT INTO dbo.Tmp_Products (ProductID, Code, Name, Units, ProductGroupID, VatID, ServiceTaxID, ServiceCharge, IsScTaxable, Price, HasHappyHour, IsActive, IsNotAvailable, SortOrder, Quantity)
|
|
SELECT ProductID, Code, Name, Units, ProductGroupID, VatID, ServiceTaxID, ServiceCharge, IsScTaxable, Price, CASE WHEN Price = 0 AND FullPrice != 0 THEN 1 ELSE 0 END, IsActive, IsNotAvailable, SortOrder, Quantity FROM dbo.Products WITH (HOLDLOCK TABLOCKX)')
|
|
GO
|
|
ALTER TABLE dbo.Inventories DROP CONSTRAINT FK8C0CFB223F88CAB6
|
|
GO
|
|
DROP TABLE dbo.Products
|
|
GO
|
|
EXECUTE sp_rename N'dbo.Tmp_Products', N'Products', 'OBJECT'
|
|
GO
|
|
ALTER TABLE dbo.Products ADD CONSTRAINT
|
|
PK__Products__164452B1 PRIMARY KEY CLUSTERED
|
|
(
|
|
ProductID
|
|
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
|
|
GO
|
|
ALTER TABLE dbo.Products ADD CONSTRAINT
|
|
UQ__Products__173876EA UNIQUE NONCLUSTERED
|
|
(
|
|
Name,
|
|
Units
|
|
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
|
|
GO
|
|
ALTER TABLE dbo.Products ADD CONSTRAINT
|
|
FK4065562A95976D16 FOREIGN KEY
|
|
(
|
|
ProductGroupID
|
|
) REFERENCES dbo.ProductGroups
|
|
(
|
|
ProductGroupID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Products ADD CONSTRAINT
|
|
FK4065562AEB4DE5BC FOREIGN KEY
|
|
(
|
|
VatID
|
|
) REFERENCES dbo.Taxes
|
|
(
|
|
TaxID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Products ADD CONSTRAINT
|
|
FK4065562A1DECC269 FOREIGN KEY
|
|
(
|
|
ServiceTaxID
|
|
) REFERENCES dbo.Taxes
|
|
(
|
|
TaxID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
ALTER TABLE dbo.Inventories ADD CONSTRAINT
|
|
FK8C0CFB223F88CAB6 FOREIGN KEY
|
|
(
|
|
ProductID
|
|
) REFERENCES dbo.Products
|
|
(
|
|
ProductID
|
|
) ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
|
|
GO
|
|
COMMIT
|