-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-23_01 · Imprevisto por ítem (Presupuesto)
-- ═══════════════════════════════════════════════════════════════════════
-- Cada ítem de una oferta lleva un imprevisto obligatorio: un monto fijo o
-- un porcentaje sobre el costo de sus materiales. Se suma al costo del ítem
-- (costo_total = materiales + imprevisto), así el margen y el precio de
-- Ventas ya lo incluyen. Los ítems anteriores quedan sin imprevisto (NULL):
-- conservan su precio y se pide al editarlos o al finalizar una oferta en borrador.
--
-- Respaldo previo: backups/cotizacion_venta_oferta_item_pre-imprevisto_2026-10-23.sql
-- Reversa: database/rollback/2026-10-23_01_imprevisto_item.sql
-- ═══════════════════════════════════════════════════════════════════════

USE tinsa_db;

ALTER TABLE cotizacion_venta_oferta_item
  ADD COLUMN imprevisto_tipo  ENUM('valor','porcentaje') DEFAULT NULL COMMENT 'monto fijo o % sobre el costo de los materiales' AFTER paquete_parametros,
  ADD COLUMN imprevisto_valor DECIMAL(12,2) DEFAULT NULL COMMENT 'el monto o el porcentaje escrito' AFTER imprevisto_tipo,
  ADD COLUMN imprevisto_monto DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT 'imprevisto en dinero (ya sumado en costo_total)' AFTER imprevisto_valor,
  ADD CONSTRAINT chk_item_imprevisto CHECK (imprevisto_valor IS NULL OR imprevisto_valor >= 0);
