Qué significa el mensaje y cuándo sale
El mensaje Establezca primero un motivo de cancelación. (Set a cancellation reason first.) es un error: la acción se detiene. Sale al pulsar el botón Solicitar cancelación (Request Cancellation) en la ficha de un envío saliente, y solo si el campo Motivo de cancelación (Cancellation Reason) de ese envío está vacío. Es la condición literal del código: si el motivo no tiene contenido, el módulo se para ahí. En cuanto el campo tiene contenido, esa comprobación se supera.
El mensaje está en el código publicado de las ramas 17, 18, 19 y 20 de Odoo.

El código comprueba el motivo lo primero, antes de obtener el cliente del módulo y de pasarle nada. Si ves el mensaje, la acción se ha detenido ahí y en ese envío no se ha guardado nada de lo que iba a cambiar.

Antes de pulsar el botón
Estas comprobaciones te dicen si vas a llegar al mensaje y por qué.
- Abre la ficha del envío desde el menú
Octopia › Fulfillment › Envíos salientes(Outbound Shipments). Si no ves el tramoOctopia, te falta el permisoUsuario de Octopia(Octopia User).
- Comprueba que ves el botón
Solicitar cancelación. Con los valores por defecto se ve. Se oculta cuando el campoEstado(Status) del envío valeShipped,DeliveredoCancelled, o cuando el campoEstado de la cancelación(Cancellation Status) ya tiene algún valor. Esa condición es la misma en Odoo 17, 18, 19 y 20.
- Localiza el campo
Motivo de cancelaciónen la ficha deEnvíos salientes. Es el campo que mira el código.
- Comprueba si el campo tiene contenido. Si está vacío, el mensaje saldrá al pulsar el botón.
- Informa el motivo antes de pulsar. La comprobación que lanza este mensaje es únicamente que el campo no esté vacío.
Al pulsar el botón y al ver el mensaje
- Pulsa
Solicitar cancelación. Odoo pide confirmación con el texto¿Solicitar la cancelación de este envío saliente?(Request cancellation of this outbound shipment?).
- Si el motivo está vacío, aparece
Establezca primero un motivo de cancelación.y la acción se detiene. El código recorre los envíos con los que trabaja y para en el primero que no tiene motivo.
- Cierra el aviso, vuelve a la ficha y rellena
Motivo de cancelación.
- Vuelve a pulsar
Solicitar cancelacióny confirma otra vez.
Según el idioma de tu Odoo, el mensaje se ve así:

Establezca primero un motivo de cancelación.; en alemán, Legen Sie zuerst einen Stornogrund fest.; en francés, Définissez d'abord un motif d'annulation.; en italiano, Imposta prima un motivo di annullamento.; en portugués, Defina primeiro um motivo de cancelamento.Qué hace el botón cuando el motivo sí está
Superada la comprobación, el método sigue este orden para cada envío:
- Obtiene el cliente del módulo a partir de la cuenta del envío.
- Pasa a ese cliente la solicitud de cancelación con el identificador externo del envío y el motivo que has escrito.
- Guarda en el envío un valor en
Estado de la cancelación(el código escribeCreated) y, si la respuesta que recibe trae una referencia de la solicitud, la guarda también en el envío.
Como el botón se oculta cuando Estado de la cancelación tiene valor, tras una solicitud que haya llegado a guardarse ya no verás el botón en ese envío.
Después de solicitar la cancelación
- Abre otra vez la ficha del envío y comprueba que
Estado de la cancelaciónya tiene valor.
- Comprueba que el botón
Solicitar cancelaciónha desaparecido de ese envío. Es lo esperado según su condición de visibilidad.
- Si el
Estadodel envío esShipped,DeliveredoCancelled, no esperes ver el botón: en esos casos está oculto.
Cómo te ayuda FlexigoTech
FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Octopia Connector está publicado en Odoo Apps para esas cuatro versiones. Es de pago único por versión y necesita la suscripción a FlexigoTech Cloud, plan Conector: 49 € al mes o 490 € al año, sin IVA. La conexión pasa por FlexigoTech Cloud, que guarda cifradas las credenciales, vigila la sincronización y avisa por correo si falla. Si quieres revisar tu flujo de cancelaciones con nosotros, escríbenos.
Sigue leyendo
Comprobado en el código del conector (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigobe_octopia_connector 20.0 (4848da6a): models/octopia_fulfillment.py
- Código del módulo: flexigobe_octopia_connector 20.0 (4848da6a): views/octopia_fulfillment_views.xml
- apps.odoo.com/apps/modules/20.0/flexigobe_octopia_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
