-- Papelería de trabajo: aprobación independiente por cliente

ALTER TABLE papeleria_trabajo
  ADD COLUMN IF NOT EXISTS requiere_aprobacion_cliente boolean NOT NULL DEFAULT false,
  ADD COLUMN IF NOT EXISTS estado_cliente varchar(20)
    CHECK (estado_cliente IS NULL OR estado_cliente IN ('pendiente','aprobado','rechazado')),
  ADD COLUMN IF NOT EXISTS aprobado_por_cliente uuid,
  ADD COLUMN IF NOT EXISTS aprobado_at_cliente timestamptz,
  ADD COLUMN IF NOT EXISTS comentario_rechazo_cliente text;

CREATE INDEX IF NOT EXISTS ix_papeleria_estado_cliente
  ON papeleria_trabajo(estado_cliente)
  WHERE estado_cliente IS NOT NULL;

CREATE INDEX IF NOT EXISTS ix_papeleria_requiere_cliente
  ON papeleria_trabajo(contribuyente_id, requiere_aprobacion_cliente)
  WHERE requiere_aprobacion_cliente = true;

INSERT INTO tenant_migrations (scope, version, name)
VALUES ('vertical-contable', 50, '050_papeleria_aprobacion_cliente')
ON CONFLICT (scope, version) DO NOTHING;
