-- KRITIS-VERIF-01: Partial unique constraint untuk konsolidasiDokumenId
--
-- Migration 20260512000000_partial_unique_active_invoices tidak include
-- kolom konsolidasiDokumenId (kolom belum ada saat migration itu dibuat).
-- Tanpa constraint ini, race condition memungkinkan 2 invoice aktif untuk
-- satu dokumen konsolidasi yang sama.
--
-- Logic sama dengan BTD/BDN/Gudang:
--   - Hanya enforce untuk invoice aktif (deletedAt IS NULL)
--   - Hanya untuk invoice non-extend (detailSnapshot.isExtend != true)
--   - Hanya jika konsolidasiDokumenId terisi

CREATE UNIQUE INDEX IF NOT EXISTS "invoices_konsolidasi_active_unique"
  ON "invoices" ("konsolidasiDokumenId")
  WHERE "deletedAt" IS NULL
    AND "konsolidasiDokumenId" IS NOT NULL
    AND ("detailSnapshot"->>'isExtend' IS NULL OR "detailSnapshot"->>'isExtend' = 'false');
