Sin impuesto Con impuesto

El número de seguimiento en PrestaShop 8: order_carrier y la @

Al adaptar los módulos de un transportista a PrestaShop 8, un compañero vio que grababan el seguimiento en shipping_number, ya obsoleto. Dónde va ahora el número, cómo grabarlo desde código y cómo configurar la URL de seguimiento con @ para que el cliente siga su paquete.

Equipo Rekire
Actualizado: 20/06/2023 9
El número de seguimiento en PrestaShop 8: order_carrier y la @
Compartir:

Un compañero de la comunidad estaba actualizando los módulos oficiales de un transportista nacional para PrestaShop 8 y vio que fallaban con el modo depuración activado. La causa: escribían el número de seguimiento en shipping_number, una propiedad del pedido obsoleta desde hace años que en PrestaShop 8 ya no existe en la clase Order. En PrestaShop 8 el número de seguimiento va en la tabla ps_order_carrier, campo tracking_number. Y para que el cliente pueda seguir su paquete, el transportista necesita además una URL de seguimiento con @.

Dónde se guarda el número de seguimiento

Un pedido tiene uno o varios transportistas asociados. Cada asociación es una fila de ps_order_carrier, con su peso, sus costes y su tracking_number. Es lo que rellenas en el back-office cuando editas el transportista de un pedido y escribes el número de seguimiento.

En la 1.7, Order::$shipping_number ya estaba marcada como obsoleta (desde la 1.5.0.4) y remitía a OrderCarrier->tracking_number. En PrestaShop 8 se quitó de la clase Order y solo queda como campo del webservice, que por debajo lee y escribe en OrderCarrier. La FAQ de envíos de la documentación de PrestaShop 8 enseña a leer y grabar el número ahí. Un módulo que siga escribiendo en shipping_number no guarda el número donde PrestaShop lo busca, y con el modo depuración activado falla.

Cómo grabarlo desde un módulo

$order = new Order((int) $idOrder);
$orderCarrier = new OrderCarrier((int) $order->getIdOrderCarrier());

if (Validate::isLoadedObject($orderCarrier) && Validate::isTrackingNumber($tracking)) {
    $orderCarrier->tracking_number = $tracking;
    $orderCarrier->update();
}

getIdOrderCarrier() devuelve la primera fila del pedido. Si tus pedidos pueden ir con varios transportistas, recorre todas las filas de ps_order_carrier de ese pedido y graba el número en la que corresponda.

Grabar el número no avisa al cliente. Si quieres que reciba el correo de «en tránsito», como cuando lo haces desde el back-office, tu módulo tiene que enviarlo también. En la 8 y la 9, OrderCarrier tiene para eso el método sendInTransitEmail($order), el mismo que usa el back-office.

La URL de seguimiento con @

En Transporte → Transportistas, al editar un transportista, hay un campo URL de seguimiento. Ahí va la dirección de la página de seguimiento del transportista, con una @ en el lugar del número. PrestaShop sustituye la @ por el tracking_number del pedido. El formato es este:

URL_DEL_TRANSPORTISTA/seguimiento?envio=@

Con eso, el enlace aparece en el detalle del pedido de la cuenta del cliente y en el correo de envío.

Otro miembro del grupo se dedicó a reunir y probar las URL de seguimiento de las principales empresas de paquetería españolas, y de ahí salieron unas cuantas lecciones:

  • Pruébala con un envío real antes de dejarla puesta: los transportistas cambian sus URL y las antiguas dejan de funcionar.
  • Algunos transportistas piden más datos que el número (el código postal, la agencia, un código de cliente) y su URL no se puede montar solo con la @. Ahí necesitas el módulo del transportista o un desarrollo.
  • Las marcas cambian: en julio de 2023 una red de paquetería conocida pasó a otra marca y sus URL antiguas iban a dejar de funcionar. Revisa de vez en cuando que los enlaces siguen vivos.

Si actualizas a PrestaShop 8 y usas módulos de transportista

  1. Activa el modo depuración en una copia de la tienda y haz un envío completo: etiqueta, número de seguimiento y cambio de estado.
  2. Si salen avisos sobre shipping_number o variables sin definir, el módulo no está adaptado.
  3. Avisa a quien lo mantiene. El compañero de este caso arregló los fallos en su tienda y le pasó los cambios al desarrollador para que los publicara para todos.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba