90 lines
2.6 KiB
MySQL
90 lines
2.6 KiB
MySQL
|
DROP TABLE recipe_items;
|
||
|
DROP TABLE recipes;
|
||
|
DROP TABLE menu_items;
|
||
|
|
||
|
|
||
|
ALTER TABLE products RENAME TO products_old;
|
||
|
|
||
|
CREATE TABLE products (
|
||
|
"ProductID" UUID NOT NULL,
|
||
|
"Code" INTEGER,
|
||
|
"Name" VARCHAR(255) NOT NULL,
|
||
|
"Units" VARCHAR(255) NOT NULL,
|
||
|
"Fraction" NUMERIC NOT NULL,
|
||
|
"FractionUnits" VARCHAR(255) NOT NULL,
|
||
|
"ProductYield" NUMERIC NOT NULL,
|
||
|
"ProductGroupID" UUID NOT NULL,
|
||
|
"LedgerID" UUID NOT NULL,
|
||
|
cost_price NUMERIC NOT NULL,
|
||
|
sale_price NUMERIC NOT NULL,
|
||
|
"IsActive" BOOLEAN NOT NULL,
|
||
|
"IsFixture" BOOLEAN NOT NULL,
|
||
|
is_purchased BOOLEAN NOT NULL,
|
||
|
is_sold BOOLEAN NOT NULL,
|
||
|
PRIMARY KEY ("ProductID"),
|
||
|
UNIQUE ("Name", "Units"),
|
||
|
UNIQUE ("Code"),
|
||
|
FOREIGN KEY ("ProductGroupID") REFERENCES product_groups ("ProductGroupID"),
|
||
|
FOREIGN KEY ("LedgerID") REFERENCES ledgers ("LedgerID")
|
||
|
);
|
||
|
|
||
|
INSERT INTO products (
|
||
|
"ProductID", "Code", "Name", "Units", "Fraction", "FractionUnits",
|
||
|
"ProductYield", "ProductGroupID", "LedgerID", cost_price, sale_price,
|
||
|
"IsActive", "IsFixture", is_purchased, is_sold)
|
||
|
SELECT
|
||
|
"ProductID",
|
||
|
"Code",
|
||
|
"Name",
|
||
|
"Units",
|
||
|
"Fraction",
|
||
|
"FractionUnits",
|
||
|
"ProductYield",
|
||
|
"ProductGroupID",
|
||
|
"LedgerID",
|
||
|
"Price",
|
||
|
0,
|
||
|
"IsActive",
|
||
|
"IsFixture",
|
||
|
TRUE,
|
||
|
FALSE
|
||
|
FROM products_old;
|
||
|
|
||
|
ALTER TABLE batches DROP CONSTRAINT "entities_batches_ProductID_fkey";
|
||
|
ALTER TABLE batches ADD CONSTRAINT "batches_ProductID_fkey" FOREIGN KEY ("ProductID")
|
||
|
REFERENCES products ("ProductID");
|
||
|
|
||
|
ALTER TABLE inventories DROP CONSTRAINT "entities_inventories_ProductID_fkey";
|
||
|
ALTER TABLE inventories ADD CONSTRAINT "inventories_ProductID_fkey" FOREIGN KEY ("ProductID")
|
||
|
REFERENCES products ("ProductID");
|
||
|
|
||
|
DROP TABLE products_old;
|
||
|
|
||
|
CREATE TABLE recipes (
|
||
|
recipe_id UUID NOT NULL,
|
||
|
product_id UUID NOT NULL,
|
||
|
quantity NUMERIC NOT NULL,
|
||
|
cost_price NUMERIC NOT NULL,
|
||
|
sale_price NUMERIC NOT NULL,
|
||
|
notes VARCHAR(255),
|
||
|
valid_from DATE NOT NULL,
|
||
|
valid_to DATE NOT NULL,
|
||
|
effective_from DATE NOT NULL,
|
||
|
effective_to DATE,
|
||
|
PRIMARY KEY (recipe_id),
|
||
|
FOREIGN KEY (product_id) REFERENCES products ("ProductID")
|
||
|
);
|
||
|
|
||
|
CREATE TABLE recipe_items (
|
||
|
recipe_item_id UUID NOT NULL,
|
||
|
recipe_id UUID NOT NULL,
|
||
|
product_id UUID NOT NULL,
|
||
|
quantity INTEGER NOT NULL,
|
||
|
price INTEGER NOT NULL,
|
||
|
PRIMARY KEY (recipe_item_id),
|
||
|
UNIQUE (recipe_id, product_id),
|
||
|
FOREIGN KEY (recipe_id) REFERENCES recipes (recipe_id),
|
||
|
FOREIGN KEY (product_id) REFERENCES products ("ProductID")
|
||
|
);
|
||
|
|