Files
geo/server/migrations/20260629110000_add_media_supply_billing_fact_columns.up.sql
T
root 31811b07d4
Frontend CI / Frontend (push) Successful in 5m44s
Backend CI / Backend (push) Failing after 6m58s
feat: add media supply billing center
2026-06-29 23:13:33 +08:00

35 lines
1.3 KiB
SQL

ALTER TABLE media_supply_wallet_ledgers
ADD COLUMN IF NOT EXISTS sales_cents BIGINT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS cost_cents BIGINT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS gross_profit_cents BIGINT NOT NULL DEFAULT 0;
UPDATE media_supply_wallet_ledgers l
SET sales_cents = CASE
WHEN l.reason = 'order_debit' THEN o.sell_total_cents
WHEN l.reason = 'order_refund' THEN -o.sell_total_cents
ELSE 0
END,
cost_cents = CASE
WHEN l.reason = 'order_debit' THEN o.cost_total_cents
WHEN l.reason = 'order_refund' THEN -o.cost_total_cents
ELSE 0
END,
gross_profit_cents = CASE
WHEN l.reason = 'order_debit' THEN o.sell_total_cents - o.cost_total_cents
WHEN l.reason = 'order_refund' THEN -(o.sell_total_cents - o.cost_total_cents)
ELSE 0
END
FROM media_supply_orders o
WHERE l.order_id = o.id
AND l.reason IN ('order_debit', 'order_refund');
ALTER TABLE media_supply_wallet_ledgers
ADD CONSTRAINT chk_media_supply_wallet_ledger_fact_non_negative
CHECK (
reason = 'order_refund'
OR (sales_cents >= 0 AND cost_cents >= 0 AND gross_profit_cents >= 0)
) NOT VALID;
ALTER TABLE media_supply_wallet_ledgers
VALIDATE CONSTRAINT chk_media_supply_wallet_ledger_fact_non_negative;