-- Versión compatible MariaDB/MySQL (sin IF NOT EXISTS en columnas)
-- Ejecutar solo si migration_pedidos_v2.sql falla en ALTER TABLE

SET NAMES utf8mb4;

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,
  `costo_envio` decimal(10,2) NOT NULL DEFAULT 35.00,
  `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 IGNORE INTO `configuracion_envio` (`id`, `minimo_compra_gratis`, `costo_envio`, `envio_habilitado`, `telefono_whatsapp`)
VALUES (1, 250.00, 35.00, 1, '527472603325');

ALTER TABLE `pedido`
  ADD COLUMN `costo_envio_aplicado` decimal(10,2) NOT NULL DEFAULT 0.00 AFTER `monto_total`,
  ADD COLUMN `subtotal_productos` decimal(10,2) DEFAULT NULL AFTER `costo_envio_aplicado`,
  ADD COLUMN `whatsapp_enviado` tinyint(1) NOT NULL DEFAULT 0 AFTER `metodo_pago`,
  ADD COLUMN `whatsapp_enviado_en` timestamp NULL DEFAULT NULL AFTER `whatsapp_enviado`,
  ADD COLUMN `estado_pago` enum('PENDIENTE','PAGADO','RECHAZADO','EFECTIVO_PENDIENTE') NOT NULL DEFAULT 'PENDIENTE' AFTER `estado`,
  ADD COLUMN `estado_entrega` enum('PENDIENTE','EN_PREPARACION','EN_CAMINO','ENTREGADO','CANCELADO') NOT NULL DEFAULT 'PENDIENTE' AFTER `estado_pago`;

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` IS NULL OR `metodo_pago` = '' THEN 'EFECTIVO_PENDIENTE'
    ELSE 'PENDIENTE'
  END,
  `estado_entrega` = CASE
    WHEN `estado` = 'ENTREGADO' THEN 'ENTREGADO'
    WHEN `estado` = 'CANCELADO' THEN 'CANCELADO'
    ELSE 'PENDIENTE'
  END;

UPDATE `pedido` SET `subtotal_productos` = `monto_total` WHERE `subtotal_productos` IS NULL;
