-- Migración: envío configurable, estados separados, WhatsApp, webhook MP
-- Ejecutar en taqueri2_mexicano (phpMyAdmin o mysql CLI)

SET NAMES utf8mb4;

-- ---------------------------------------------------------------------------
-- Configuración de envío a domicilio (una sola fila, id = 1)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `configuracion_envio` (
  `id` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `minimo_compra_gratis` decimal(10,2) NOT NULL DEFAULT 250.00 COMMENT 'Subtotal de productos para envío gratis',
  `costo_envio` decimal(10,2) NOT NULL DEFAULT 35.00 COMMENT 'Costo si no alcanza el mínimo',
  `envio_habilitado` tinyint(1) NOT NULL DEFAULT 1,
  `telefono_whatsapp` varchar(20) NOT NULL DEFAULT '527472603325',
  `actualizado_en` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `configuracion_envio` (`id`, `minimo_compra_gratis`, `costo_envio`, `envio_habilitado`, `telefono_whatsapp`)
VALUES (1, 250.00, 35.00, 1, '527472603325')
ON DUPLICATE KEY UPDATE `id` = `id`;

-- ---------------------------------------------------------------------------
-- Nuevas columnas en pedido
-- ---------------------------------------------------------------------------
ALTER TABLE `pedido`
  ADD COLUMN IF NOT EXISTS `costo_envio_aplicado` decimal(10,2) NOT NULL DEFAULT 0.00 AFTER `monto_total`,
  ADD COLUMN IF NOT EXISTS `subtotal_productos` decimal(10,2) DEFAULT NULL COMMENT 'Suma de líneas sin envío' AFTER `costo_envio_aplicado`,
  ADD COLUMN IF NOT EXISTS `whatsapp_enviado` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1 si el cliente abrió/envió WhatsApp' AFTER `metodo_pago`,
  ADD COLUMN IF NOT EXISTS `whatsapp_enviado_en` timestamp NULL DEFAULT NULL AFTER `whatsapp_enviado`,
  ADD COLUMN IF NOT EXISTS `estado_pago` enum('PENDIENTE','PAGADO','RECHAZADO','EFECTIVO_PENDIENTE') NOT NULL DEFAULT 'PENDIENTE' AFTER `estado`,
  ADD COLUMN IF NOT EXISTS `estado_entrega` enum('PENDIENTE','EN_PREPARACION','EN_CAMINO','ENTREGADO','CANCELADO') NOT NULL DEFAULT 'PENDIENTE' AFTER `estado_pago`;

-- MariaDB < 10.5 no tiene IF NOT EXISTS en ADD COLUMN: usar procedimiento o ejecutar manualmente si falla.

-- Migrar datos desde columna legacy `estado`
UPDATE `pedido` SET
  `estado_pago` = CASE
    WHEN `estado` = 'PAGADO' THEN 'PAGADO'
    WHEN `estado` = 'CANCELADO' AND `metodo_pago` = 'mercadopago' THEN 'RECHAZADO'
    WHEN `metodo_pago` = 'cash' OR `metodo_pago` = '' OR `metodo_pago` IS NULL THEN 'EFECTIVO_PENDIENTE'
    ELSE 'PENDIENTE'
  END,
  `estado_entrega` = CASE
    WHEN `estado` = 'ENTREGADO' THEN 'ENTREGADO'
    WHEN `estado` = 'CANCELADO' THEN 'CANCELADO'
    ELSE 'PENDIENTE'
  END
WHERE `estado_pago` = 'PENDIENTE' AND `estado_entrega` = 'PENDIENTE';

-- Rellenar subtotal si falta (asumir sin envío histórico)
UPDATE `pedido` SET `subtotal_productos` = `monto_total` WHERE `subtotal_productos` IS NULL;
