69 lines
2.5 KiB
MySQL
69 lines
2.5 KiB
MySQL
|
|
-- Migration 173: Supplier invoice flow metadata
|
||
|
|
-- Created: 2026-04-13
|
||
|
|
|
||
|
|
ALTER TABLE supplier_invoices
|
||
|
|
ADD COLUMN IF NOT EXISTS supplier_flow_type VARCHAR(20),
|
||
|
|
ADD COLUMN IF NOT EXISTS tags_json JSONB DEFAULT '[]'::jsonb,
|
||
|
|
ADD COLUMN IF NOT EXISTS source_email_id INTEGER REFERENCES email_messages(id) ON DELETE SET NULL,
|
||
|
|
ADD COLUMN IF NOT EXISTS linked_customer_id INTEGER REFERENCES customers(id) ON DELETE SET NULL,
|
||
|
|
ADD COLUMN IF NOT EXISTS linked_order_id BIGINT,
|
||
|
|
ADD COLUMN IF NOT EXISTS linked_order_source VARCHAR(50);
|
||
|
|
|
||
|
|
DO $$
|
||
|
|
BEGIN
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1
|
||
|
|
FROM pg_constraint
|
||
|
|
WHERE conname = 'chk_supplier_invoices_supplier_flow_type'
|
||
|
|
) THEN
|
||
|
|
ALTER TABLE supplier_invoices
|
||
|
|
ADD CONSTRAINT chk_supplier_invoices_supplier_flow_type
|
||
|
|
CHECK (
|
||
|
|
supplier_flow_type IS NULL
|
||
|
|
OR supplier_flow_type IN ('varekob', 'ydelse')
|
||
|
|
);
|
||
|
|
END IF;
|
||
|
|
END $$;
|
||
|
|
|
||
|
|
DO $$
|
||
|
|
BEGIN
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1
|
||
|
|
FROM pg_constraint
|
||
|
|
WHERE conname = 'chk_supplier_invoices_linked_order_source'
|
||
|
|
) THEN
|
||
|
|
ALTER TABLE supplier_invoices
|
||
|
|
ADD CONSTRAINT chk_supplier_invoices_linked_order_source
|
||
|
|
CHECK (
|
||
|
|
linked_order_source IS NULL
|
||
|
|
OR linked_order_source IN ('tmodule_orders', 'webshop_orders')
|
||
|
|
);
|
||
|
|
END IF;
|
||
|
|
END $$;
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_invoices_supplier_flow_type
|
||
|
|
ON supplier_invoices(supplier_flow_type)
|
||
|
|
WHERE supplier_flow_type IS NOT NULL;
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_invoices_source_email_id
|
||
|
|
ON supplier_invoices(source_email_id)
|
||
|
|
WHERE source_email_id IS NOT NULL;
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_invoices_linked_customer_id
|
||
|
|
ON supplier_invoices(linked_customer_id)
|
||
|
|
WHERE linked_customer_id IS NOT NULL;
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_invoices_linked_order_id
|
||
|
|
ON supplier_invoices(linked_order_id)
|
||
|
|
WHERE linked_order_id IS NOT NULL;
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_invoices_tags_json
|
||
|
|
ON supplier_invoices USING GIN (tags_json);
|
||
|
|
|
||
|
|
COMMENT ON COLUMN supplier_invoices.supplier_flow_type IS 'Flow type: varekob or ydelse';
|
||
|
|
COMMENT ON COLUMN supplier_invoices.tags_json IS 'Tag list as JSON array';
|
||
|
|
COMMENT ON COLUMN supplier_invoices.source_email_id IS 'Source email message id';
|
||
|
|
COMMENT ON COLUMN supplier_invoices.linked_customer_id IS 'Linked customer context';
|
||
|
|
COMMENT ON COLUMN supplier_invoices.linked_order_id IS 'Linked order id';
|
||
|
|
COMMENT ON COLUMN supplier_invoices.linked_order_source IS 'Order table source: tmodule_orders or webshop_orders';
|