-- ============================================================
--  Migración 02 · CHECK constraints
--  Fecha: 2026-08-28
-- ------------------------------------------------------------
--  Impide estados imposibles a nivel de motor (MariaDB 10.4+).
--  Datos actuales verificados: todos pasan.
-- ============================================================
USE tinsa_db;

ALTER TABLE movimiento_stock
  ADD CONSTRAINT chk_mov_cantidad_pos  CHECK (cantidad > 0),
  ADD CONSTRAINT chk_mov_ajuste_dir    CHECK (tipo <> 'ajuste'   OR tipo_referencia IN ('aumento','disminucion')),
  ADD CONSTRAINT chk_mov_traslado_dir  CHECK (tipo <> 'traslado' OR tipo_referencia IN ('origen','destino'));

ALTER TABLE existencia_bodega
  ADD CONSTRAINT chk_exist_stock_no_neg CHECK (stock_actual >= 0),
  ADD CONSTRAINT chk_exist_min_no_neg   CHECK (stock_minimo >= 0);

ALTER TABLE producto
  ADD CONSTRAINT chk_producto_precios_no_neg CHECK (precio >= 0 AND precio_costo >= 0);

ALTER TABLE cotizacion_compra_proveedor_item
  ADD CONSTRAINT chk_ccpi_pcts
  CHECK (descuento_pct BETWEEN 0 AND 100 AND impuesto_pct BETWEEN 0 AND 100);
