Files
apskel-pos-backend/migrations/000088_add_cash_advance_to_spending.up.sql
T
2026-08-13 14:38:28 +07:00

25 lines
1.0 KiB
SQL

-- Spending paid out of a cash advance points back at it. This is how an advance is
-- accounted for: the team's purchases and expenses are the settlement, so the advance
-- itself never carries a copy of what was bought.
-- RESTRICT rather than SET NULL: dropping an advance that still has spending on it
-- would leave that spending looking like it came straight out of the drawer.
ALTER TABLE purchase_orders
ADD COLUMN IF NOT EXISTS cash_advance_id UUID;
ALTER TABLE purchase_orders
ADD CONSTRAINT fk_purchase_orders_cash_advance
FOREIGN KEY (cash_advance_id) REFERENCES cash_advances(id) ON DELETE RESTRICT;
CREATE INDEX IF NOT EXISTS idx_purchase_orders_cash_advance_id
ON purchase_orders(cash_advance_id);
ALTER TABLE expenses
ADD COLUMN IF NOT EXISTS cash_advance_id UUID;
ALTER TABLE expenses
ADD CONSTRAINT fk_expenses_cash_advance
FOREIGN KEY (cash_advance_id) REFERENCES cash_advances(id) ON DELETE RESTRICT;
CREATE INDEX IF NOT EXISTS idx_expenses_cash_advance_id
ON expenses(cash_advance_id);