Revert purchase order
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
DROP TRIGGER IF EXISTS trigger_validate_purchase_order_item_raw_material ON purchase_order_items;
|
||||
DROP FUNCTION IF EXISTS validate_purchase_order_item_raw_material();
|
||||
|
||||
ALTER TABLE purchase_order_items
|
||||
ALTER COLUMN ingredient_id DROP NOT NULL,
|
||||
ALTER COLUMN quantity DROP NOT NULL,
|
||||
ALTER COLUMN unit_id DROP NOT NULL;
|
||||
@@ -0,0 +1,41 @@
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM purchase_order_items poi
|
||||
JOIN purchase_categories pc ON pc.id = poi.purchase_category_id
|
||||
WHERE pc.type <> 'raw_material'
|
||||
OR poi.ingredient_id IS NULL
|
||||
OR poi.quantity IS NULL
|
||||
OR poi.unit_id IS NULL
|
||||
) THEN
|
||||
RAISE EXCEPTION 'purchase_order_items contains non-raw-material or incomplete raw-material rows. Move expense rows to expenses and fill ingredient_id, quantity, and unit_id before running this migration.';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
ALTER TABLE purchase_order_items
|
||||
ALTER COLUMN ingredient_id SET NOT NULL,
|
||||
ALTER COLUMN quantity SET NOT NULL,
|
||||
ALTER COLUMN unit_id SET NOT NULL;
|
||||
|
||||
CREATE OR REPLACE FUNCTION validate_purchase_order_item_raw_material()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM purchase_categories pc
|
||||
WHERE pc.id = NEW.purchase_category_id
|
||||
AND pc.type = 'raw_material'
|
||||
) THEN
|
||||
RAISE EXCEPTION 'purchase_order_items.purchase_category_id must reference a raw_material purchase category';
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
DROP TRIGGER IF EXISTS trigger_validate_purchase_order_item_raw_material ON purchase_order_items;
|
||||
CREATE TRIGGER trigger_validate_purchase_order_item_raw_material
|
||||
BEFORE INSERT OR UPDATE OF purchase_category_id ON purchase_order_items
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION validate_purchase_order_item_raw_material();
|
||||
Reference in New Issue
Block a user