# Novedades Humming — Septiembre 2026

- Checkout: se agregó un kill-switch general (`$_SESSION[config][airline][al_mdp_config]` vs `mdpIsEnabled`) que bloquea el checkout completo desde `checkout.php` y desde `AL_CLOSE_BOOKING()` en airlines.php. Pedido puntual de Francisco, aparentemente a raíz de tráfico de bots/crawlers contra el flujo de reserva (ver mensaje de commit "mucho, despues de bots crawlers").
- Buscador de reservas: el autocomplete de booking (`booking_search`) se sacó de activity.php y se unificó en un partial nuevo, `flights/booking_searcher.php`, incluido tanto en activity.php como en el header de booking.php.
- Estado de reserva: `AL_BOOKING_AUTO_UPDATE_STATUS()` ahora también refleja en `fly.booking.bookingStatus` el bit `BOOKING_CANCELLED` a partir del log en `fly.blog` (antes solo quedaba en el log). No hay des-cancelación automática, se maneja borrando el log a mano.
- Confirmaciones: `AL_SEND_BOOKING_CONFIRM()` no envía el mail de confirmación si el booking tiene `BOOKING_NEGATIVE_CONDITION`.
- Motor.php: fix en la query de `booking_search` (trim, excluye `amount_total = 0` y `metadata` vacío, `HAVING bookingId is not null`) para evitar falsos positivos. `botGetBookingStatus` ahora trata `refunded` igual que `approved` (no devuelve `paymentUrl` de pago pendiente).
- Reporte nuevo en report_flights.php: `refunded_bookings`, exporta a xls las reservas con pago UALA reembolsado (para seguimiento de leads/reembolsos).
- Menú admin del módulo (menu.php) dejó de estar hardcodeado a `ROL_SUPER_ADMIN` y ahora arma las opciones vía `XG_MENU()`, en línea con el resto de xGestion.
- arrays.php (debug del motor): se agregaron vistas `xgcode` (todos los XG del perfil airlines) y `rol` (roles de usuario).
- booking.php: en el detalle de extras pendientes ahora se muestra el motivo (`reason`) guardado en el metadata del log, cuando existe.
- error.php: la página de error genérica del motor ahora puede resolver cualquier código contra `XG()` (título dinámico), no solo los códigos hardcodeados.

## Bloqueos o pendientes relevantes para Humming
- El checkout tiene ahora un kill-switch de config (`al_mdp_config` / `mdpIsEnabled`) que puede dejar el flujo de pago bloqueado a nivel global — si Motor V3 ve reservas que no cierran o checkouts que devuelven `mdpUnavailble`, revisar ese flag antes de asumir un bug de negocio.
- El commit que trae todo esto ("mucho, despues de bots crawlers", 2026-09-10) sugiere que hubo un incidente de bots/crawlers contra el motor — no hay más detalle en el código sobre alcance o mitigación aplicada más allá del kill-switch de checkout; preguntar a Claudio/Francisco si hace falta contexto para el informe consolidado.
