El mensaje y el botón que lo provoca
El mensaje No se pudo construir orderItems para confirmShipment (pedido …). (Could not build orderItems for confirmShipment (order …).) sale al pulsar el botón Enviar tracking Amazon, en la ficha de la transferencia (albarán). Ese botón solo se ve cuando la transferencia está en estado Hecho (Done) y es de un pedido de Amazon (el módulo lo marca con un campo, Pedido Amazon (Amazon Order), que no se ve en ninguna vista). Los puntos suspensivos del mensaje se sustituyen por el identificador del pedido en Amazon.
Es un error que detiene la acción. Lo que el mensaje te dice es que el módulo no ha podido armar la lista de líneas (orderItems) que lleva confirmShipment.

Cómo lo ves según el idioma de Odoo
El módulo trae el mensaje traducido. Con Odoo en castellano lo ves como No se pudo construir orderItems para confirmShipment (pedido …).; el esquema siguiente muestra también cómo queda en alemán, francés, italiano y portugués.


Cuándo sale exactamente
El código de Odoo 20.0 lanza el mensaje en un punto muy concreto: justo cuando la lista de líneas a confirmar se queda vacía. El mensaje existe también en el código publicado de Odoo 17, 18 y 19. Esto es lo que hace el módulo, en orden, hasta llegar ahí:
- Calcula, a partir de la transferencia, qué cantidad se ha hecho de cada SKU y la cantidad total hecha. Prefiere las cantidades de las líneas de venta, de modo que con un kit cuenta el SKU comercial y no el de los componentes.
- Pide a Amazon las líneas del pedido.
- Si Odoo tiene cantidades hechas por SKU, recorre las líneas de Amazon y apunta las que puede emparejar. Este mensaje sale solo por este camino.
- Si no ha apuntado ninguna, prueba un recurso pensado para pedidos de una sola línea.
- Si tampoco así sale ninguna línea, lanza el mensaje.
Una línea de Amazon se salta cuando no trae identificador de línea, cuando su SKU queda vacío, o cuando su SKU no coincide con ningún SKU entregado en Odoo que aún tenga cantidad por asignar. Basta con que una sola línea case para que este mensaje no salga.
El recurso de una sola línea solo funciona si Amazon devuelve exactamente una línea con identificador y, en lo entregado en Odoo, hay un solo SKU con cantidad. Con varias líneas en Amazon, o con varios SKU entregados, no se aplica.
Cómo compara los SKU el módulo
Antes de comparar, el módulo normaliza el SKU de los dos lados: pasa a mayúsculas, quita espacios de los extremos, convierte los guiones especiales en un guion normal y elimina todo lo que no sea una letra de la A a la Z (sin tildes ni ñ) o una cifra. Por eso taza-azul, TAZA AZUL y Taza–Azul dan la misma clave. Ten en cuenta que una letra con tilde o una ñ se elimina de la clave en lugar de conservarse. Si dos SKU siguen siendo distintos tras esa limpieza, es que difieren en letras o cifras de verdad.
En el cálculo por líneas de venta, el SKU de Odoo sale del producto de la línea. Si ese producto no tiene SKU, no aporta ninguna cantidad al emparejamiento.
Un caso ilustrativo
Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Casa Ficticia, una tienda inventada, vende cerámica y velas en Amazon. Un cliente compra una taza y una vela en el mismo pedido, así que Amazon devuelve dos líneas, cada una con su identificador. En Odoo, los productos tienen los SKU TAZAAZUL y VELA; en Amazon, el vendedor publicó las ofertas como TAZA-AZUL-GRANDE y VELA-LAVANDA.
La transferencia se valida y pasa a Hecho. Al pulsar Enviar tracking Amazon, el módulo normaliza los SKU: de Amazon salen TAZAAZULGRANDE y VELALAVANDA; de Odoo, TAZAAZUL y VELA. Ninguno coincide, así que no apunta ninguna línea. El recurso de una sola línea tampoco sirve, porque Amazon devolvió dos líneas con identificador. Resultado: No se pudo construir orderItems para confirmShipment (pedido …).
Casa Ficticia iguala los SKU, de modo que el de cada producto en Odoo y el de su línea en Amazon digan lo mismo, y vuelve a pulsar el botón. Con los SKU iguales, cada línea de Amazon puede emparejarse con su SKU entregado y la lista ya no queda vacía.
Lo que se aprende del caso: el error no habla de la transferencia en sí, sino de que los SKU de los dos lados no se reconocen. Un guion o una mayúscula no lo provocan; unas letras de más, sí.
Qué hacer, paso a paso
- Anota el identificador del pedido de Amazon que sale en el mensaje y abre la transferencia correspondiente.
- Mira qué productos has entregado en ella y qué SKU tiene cada uno en Odoo. Comprueba que ninguno esté sin SKU.
- Compara cada SKU con el de la línea del pedido en Amazon. Ignora mayúsculas, espacios, guiones y signos: busca letras o cifras distintas.
- Corrige el SKU en el lado que esté mal, para que coincidan.
- Vuelve a pulsar
Enviar tracking Amazon.
Preguntas sobre este mensaje
¿Sale en todas las versiones?
El mensaje está en el código publicado de Odoo 17, 18, 19 y 20. La descripción de arriba, orden de pasos incluido, corresponde al código de Odoo 20.0.
¿Y si el pedido tiene varias líneas y solo casa una?
Entonces este mensaje no sale: basta una línea emparejada para que la lista no quede vacía. Si después aparece un mensaje distinto, se trata de otra comprobación del módulo.
¿Por qué no ayuda el recurso de una sola línea?
Porque exige que Amazon devuelva exactamente una línea con identificador y que lo entregado en Odoo tenga un solo SKU con cantidad. Si el pedido tiene varias líneas o se entregaron varios SKU, ese recurso devuelve una lista vacía.
¿Qué pasa con los kits?
El módulo prefiere contar por las líneas de venta, así que cuenta el SKU comercial vendido y no los de los componentes. El SKU que debe coincidir con Amazon es el del producto vendido.
Cómo te ayuda FlexigoTech
Si vendes en Amazon y trabajas con Odoo, podemos revisar contigo cómo están dados de alta los SKU antes de enviar tracking. FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Puedes ver el conector en su página de flexigotech.com o en la ficha de Odoo Apps.
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_amazon_seller_connector 20.0 (8576afa5): models/stock_picking.py
- Código del módulo: flexigobe_amazon_seller_connector 20.0 (8576afa5): views/stock_picking_views.xml
- apps.odoo.com/apps/modules/20.0/flexigobe_amazon_seller_connector
- flexigotech.com/en/services.html
