SELECT 1; /* Migracion 016: Notas Internas Multi-Entidad | Fecha: 2026-02-03 | Plan: NOTAS_INTERNAS_MULTI_ENTIDAD | Agrega columna discriminadora entidad, columnas id_venta e id_estadistica, CHECK constraints, FKs e indices parciales */

ALTER TABLE notas_internas ADD COLUMN entidad smallint NOT NULL DEFAULT 1;

ALTER TABLE notas_internas ALTER COLUMN id_cliente DROP NOT NULL;

ALTER TABLE notas_internas ADD COLUMN id_venta integer;

ALTER TABLE notas_internas ADD COLUMN id_estadistica bigint;

ALTER TABLE notas_internas ADD CONSTRAINT chk_notas_entidad CHECK (entidad IN (1, 2, 3));

ALTER TABLE notas_internas ADD CONSTRAINT chk_notas_entidad_fk CHECK ((entidad = 1 AND id_cliente IS NOT NULL) OR (entidad = 2 AND id_venta IS NOT NULL) OR (entidad = 3 AND id_estadistica IS NOT NULL));

ALTER TABLE notas_internas ADD CONSTRAINT fk_notas_venta FOREIGN KEY (id_venta) REFERENCES ventas (id_venta) ON DELETE RESTRICT ON UPDATE NO ACTION;

ALTER TABLE notas_internas ADD CONSTRAINT fk_notas_estadistica FOREIGN KEY (id_estadistica) REFERENCES estadisticas (id_estadistica) ON DELETE RESTRICT ON UPDATE NO ACTION;

CREATE INDEX idx_notas_entidad ON notas_internas (entidad);

CREATE INDEX idx_notas_venta ON notas_internas (id_venta) WHERE id_venta IS NOT NULL;

CREATE INDEX idx_notas_estadistica ON notas_internas (id_estadistica) WHERE id_estadistica IS NOT NULL;

CREATE INDEX idx_notas_biz_venta_fecha ON notas_internas (business_id, id_venta, created_at DESC) WHERE id_venta IS NOT NULL;

CREATE INDEX idx_notas_biz_estadistica_fecha ON notas_internas (business_id, id_estadistica, created_at DESC) WHERE id_estadistica IS NOT NULL;
