feat: add media supply billing center
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user