-- Compatibilidad v42: estados de mensaje receptor para esquemas antiguos con ENUM estricto.
-- El código ya normaliza el estado según la columna real; este patch es opcional y amplía el ENUM
-- para permitir los estados operativos intermedios sin truncamiento.

SET @table_name := 'mensajes_receptor';
SET @exists_table := (
  SELECT COUNT(*) FROM information_schema.TABLES
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @table_name
);
SET @exists_estado := (
  SELECT COUNT(*) FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @table_name AND COLUMN_NAME = 'estado'
);
SET @sql := IF(@exists_table > 0 AND @exists_estado > 0,
  'ALTER TABLE `mensajes_receptor` MODIFY `estado` ENUM(''BORRADOR'',''PENDIENTE_ENVIO'',''FIRMADO'',''ENVIADO'',''PROCESANDO'',''ACEPTADO'',''RECHAZADO'',''ERROR'') NOT NULL DEFAULT ''BORRADOR''',
  'SELECT ''mensajes_receptor.estado no existe, omitido'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @table_name := 'fe_mensajes_receptor';
SET @exists_table := (
  SELECT COUNT(*) FROM information_schema.TABLES
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @table_name
);
SET @exists_estado := (
  SELECT COUNT(*) FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @table_name AND COLUMN_NAME = 'estado'
);
SET @sql := IF(@exists_table > 0 AND @exists_estado > 0,
  'ALTER TABLE `fe_mensajes_receptor` MODIFY `estado` ENUM(''BORRADOR'',''PENDIENTE_ENVIO'',''FIRMADO'',''ENVIADO'',''PROCESANDO'',''ACEPTADO'',''RECHAZADO'',''ERROR'') NOT NULL DEFAULT ''BORRADOR''',
  'SELECT ''fe_mensajes_receptor.estado no existe, omitido'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
