@alvaropro, este es un problema clásico y suele venir de un fallo en la lógica de recalculado de precios o zonas, o de la persistencia de datos del carrito tras una actualización AJAX. En PrestaShop 1.7.8.8, el checkout.js llama al controlador ps_checkout/delivery para obtener las opciones de envío. El mensaje No delivery options available for this address es bastante indicativo de que el sistema, en ese momento, no encuentra transportistas elegibles.
El problema puede estar en cómo se recalcula la dirección o el carrito en el Context::getContext()->cart o Context::getContext()->customer después de la actualización AJAX. Asegúrate de que los objetos Cart y Address se cargan y persisten correctamente en cada paso del proceso de checkout.
Una causa común es que, al actualizar el carrito, si se produce un error de validación o un cambio en los datos (por ejemplo, el código postal no coincide con una zona válida para todos los productos del carrito), PrestaShop descarta las opciones. También, verifica que no haya un error de base de datos silencioso al guardar alguna actualización del carrito o la dirección.
Para depurar esto a fondo, tendrías que ir al método ajaxRefresh() del FrontController o a los métodos de ps_checkout/delivery y ver exactamente qué sucede cuando se construye el objeto Cart y se llama a Carrier::getCarriers().
Considera también que, para una gestión más robusta de reglas de envío complejas o cuando necesitas un control muy fino sobre la visibilidad de los transportistas, un módulo dedicado puede ser la solución más eficiente y mantenible a largo plazo, evitando tener que tocar el core o los overrides que pueden romperse con las actualizaciones. Por ejemplo, hay módulos de reglas avanzadas de envío que permiten definir con precisión cuándo un transportista debe o no aparecer, basándose en múltiples condiciones. Mira el módulo de Cambio masivo del tipo de producto que permite gestionar estas condiciones de forma visual y sin código.
Si quieres seguir depurando el código, verifica la clase Cart y cómo se manejan los id_address_delivery y id_address_invoice dentro de la sesión y la base de datos. Un error típico es que id_address_delivery se resetee o no se asocie correctamente a la zona esperada. Puedes añadir logs en Cart::getAvailableCarriers() para ver la lista de transportistas que PrestaShop está considerando en cada momento.