-- ============================================================
--  Rollback de 2026-10-13_01_ofertas_cotizacion_venta.sql
--  Cada solicitud vuelve a tener un solo presupuesto: se conservan los
--  materiales de la oferta seleccionada o, si no hay, de la más reciente.
--  Las demás ofertas y el historial SE PIERDEN.
-- ============================================================
USE tinsa_db;

ALTER TABLE `cotizacion_venta_material`
  ADD COLUMN `id_cotizacion_venta` int(10) unsigned DEFAULT NULL AFTER `id`;

UPDATE cotizacion_venta_material m
  JOIN cotizacion_venta_oferta o ON o.id = m.id_oferta
   SET m.id_cotizacion_venta = o.id_cotizacion_venta
 WHERE o.id = (SELECT o2.id FROM cotizacion_venta_oferta o2
                WHERE o2.id_cotizacion_venta = o.id_cotizacion_venta
                ORDER BY o2.estado = 'seleccionada' DESC, o2.estado = 'lista' DESC, o2.id DESC LIMIT 1);

DELETE FROM cotizacion_venta_material WHERE id_cotizacion_venta IS NULL;

ALTER TABLE `cotizacion_venta_material`
  DROP FOREIGN KEY `fk_cvm_oferta`,
  DROP KEY `idx_cvm_oferta`,
  DROP COLUMN `id_oferta`,
  MODIFY `id_cotizacion_venta` int(10) unsigned NOT NULL,
  ADD KEY `idx_cvm_cotizacion` (`id_cotizacion_venta`),
  ADD CONSTRAINT `fk_cvm_cotizacion` FOREIGN KEY (`id_cotizacion_venta`) REFERENCES `cotizacion_venta` (`id`) ON DELETE CASCADE;

UPDATE cotizacion_venta SET numero = CONCAT('CV-', SUBSTRING(numero, 4)) WHERE numero LIKE 'SV-%';

DROP TABLE IF EXISTS `cotizacion_venta_historial`;
DROP TABLE IF EXISTS `cotizacion_venta_oferta`;
