-- ==================================================
-- 20260828_facturacion_comprobante_estado_tinyint.sql
-- ==================================================
-- Convierte facturacion_comprobantes.estado a numerico.
-- 0=BORRADOR, 1=EMITIDO, 2=ANULADO, 3=ENVIADO, 4=PENDIENTE, 5=ACEPTADO, 6=RECHAZADO, 7=VENCIDO

SET @has_estado_tmp := (
    SELECT COUNT(*)
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = DATABASE()
      AND TABLE_NAME = 'facturacion_comprobantes'
      AND COLUMN_NAME = 'estado_tmp'
);

SET @sql := IF(
    @has_estado_tmp = 0,
    "ALTER TABLE facturacion_comprobantes ADD COLUMN estado_tmp TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0=BORRADOR, 1=EMITIDO, 2=ANULADO, 3=ENVIADO, 4=PENDIENTE, 5=ACEPTADO, 6=RECHAZADO, 7=VENCIDO' AFTER total",
    "SELECT 1"
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

UPDATE facturacion_comprobantes
SET estado_tmp = CASE
    WHEN estado IN ('BORRADOR', '0') THEN 0
    WHEN estado IN ('EMITIDO', '1') THEN 1
    WHEN estado IN ('ANULADO', '2') THEN 2
    WHEN estado IN ('ENVIADO', '3') THEN 3
    WHEN estado IN ('PENDIENTE', '4') THEN 4
    WHEN estado IN ('ACEPTADO', '5') THEN 5
    WHEN estado IN ('RECHAZADO', '6') THEN 6
    WHEN estado IN ('VENCIDO', '7') THEN 7
    ELSE 0
END
WHERE estado_tmp = 0;

ALTER TABLE facturacion_comprobantes
    DROP COLUMN estado;

ALTER TABLE facturacion_comprobantes
    CHANGE COLUMN estado_tmp estado TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0=BORRADOR, 1=EMITIDO, 2=ANULADO, 3=ENVIADO, 4=PENDIENTE, 5=ACEPTADO, 6=RECHAZADO, 7=VENCIDO';
