mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
60 lines
2.2 KiB
SQL
60 lines
2.2 KiB
SQL
CREATE TABLE IF NOT EXISTS purchase_items (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
purchase_id BIGINT NOT NULL,
|
|
product_id BIGINT NOT NULL,
|
|
warehouse_id BIGINT NOT NULL,
|
|
product_warehouse_id BIGINT,
|
|
received_date TIMESTAMPTZ,
|
|
travel_number VARCHAR,
|
|
travel_number_docs VARCHAR,
|
|
vehicle_number VARCHAR,
|
|
sub_qty NUMERIC(15, 3) NOT NULL,
|
|
total_qty NUMERIC(15, 3) DEFAULT 0,
|
|
total_used NUMERIC(15, 3) DEFAULT 0,
|
|
price NUMERIC(15, 3) DEFAULT 0,
|
|
total_price NUMERIC(15, 3) DEFAULT 0,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'products') THEN
|
|
EXECUTE
|
|
'ALTER TABLE purchase_items
|
|
ADD CONSTRAINT fk_purchase_items_product
|
|
FOREIGN KEY (product_id)
|
|
REFERENCES products(id)
|
|
ON DELETE RESTRICT ON UPDATE CASCADE';
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'warehouses') THEN
|
|
EXECUTE
|
|
'ALTER TABLE purchase_items
|
|
ADD CONSTRAINT fk_purchase_items_warehouse
|
|
FOREIGN KEY (warehouse_id)
|
|
REFERENCES warehouses(id)
|
|
ON DELETE RESTRICT ON UPDATE CASCADE';
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'product_warehouses') THEN
|
|
EXECUTE
|
|
'ALTER TABLE purchase_items
|
|
ADD CONSTRAINT fk_purchase_items_product_warehouse
|
|
FOREIGN KEY (product_warehouse_id)
|
|
REFERENCES product_warehouses(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE';
|
|
END IF;
|
|
END $$;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_purchase_items_unique_allocation
|
|
ON purchase_items (purchase_id, product_id, warehouse_id)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_items_product_id ON purchase_items (product_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_items_warehouse_id ON purchase_items (warehouse_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_items_product_warehouse_id ON purchase_items (product_warehouse_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_items_purchase_id ON purchase_items (purchase_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_items_deleted_at ON purchase_items (deleted_at);
|