-- ============================================================
--  Migración 2026-10-13_02 · El margen lo define Ventas por oferta
-- ------------------------------------------------------------
--  El cotizador ya no maneja el margen: en Presupuesto solo arma los
--  materiales y su costo. El margen (global o por ítem) y con él el
--  precio al cliente se definen en Ventas, sobre cada oferta, por quien
--  tenga el permiso especial "margen_cotizacion" (catálogo en
--  app/models/PermisoEspecial.php). Predefinido solo en Administrador.
--  - cotizacion_venta_oferta.tipo_margen: cada oferta lleva su tipo
--    (antes era de la solicitud). Se copia el que tenía su solicitud.
--  - cotizacion_venta.tipo_margen / margen_global quedan sin uso (el
--    formulario de la solicitud ya no los pide); no se eliminan.
--  Una oferta tiene precio cuando todas sus líneas tienen precio > 0;
--  hasta entonces no se puede imprimir ni seleccionar.
-- ============================================================
USE tinsa_db;

ALTER TABLE `cotizacion_venta_oferta`
  ADD COLUMN `tipo_margen` enum('global','por_item') NOT NULL DEFAULT 'global' AFTER `estado`;

UPDATE cotizacion_venta_oferta o
  JOIN cotizacion_venta cv ON cv.id = o.id_cotizacion_venta
   SET o.tipo_margen = cv.tipo_margen;

INSERT IGNORE INTO rol_permiso_especial (id_rol, clave)
SELECT id, 'margen_cotizacion' FROM roles WHERE nombre = 'Administrador';
