Un caso de principio a fin: una tienda conecta Shopee
Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Papelería Arrecife es una empresa inventada que vende material de oficina y ya trabaja con Odoo. Su responsable instala Shopee Marketplace Connector (APAC) y lo pone en marcha en una tarde. Por el camino se encuentra con casi todos los avisos del módulo. Los vemos en el orden en que le van saliendo, con lo que significa cada uno y lo que hace para seguir.
Primera parada: la cuenta del marketplace
Lo primero es crear la cuenta. Como en el equipo también venden en otros sitios, prueba a elegir un marketplace distinto de Shopee y Odoo le responde con %s is not available: this connector only connects Shopee. El módulo tiene otro aviso con el mismo sentido: Only Shopee accounts can be connected. Los dos dicen lo mismo: este conector solo conecta Shopee. Qué hace: deja la cuenta en Shopee.
Después, sin darse cuenta, crea una segunda cuenta con el mismo shop_id que la primera dentro de la misma empresa. Al guardar sale Each marketplace account (shop_id) must be unique per company. La regla está en el propio texto: en cada empresa, un shop_id solo puede estar en una cuenta. Qué hace: borra el borrador y trabaja sobre la cuenta que ya existía.
En la misma cuenta rellena la frecuencia de sincronización con un valor por debajo del mínimo y se encuentra con Sync frequency must be between 5 and 60 minutes. Lo corrige con un valor dentro de ese margen, entre 5 y 60 minutos. Al escribir el umbral de detección de conflictos se equivoca de cifra y aparece Conflict detection threshold must be between 0 and 100%. Pone un valor entre 0 y 100% y guarda.
Segunda parada: categorías, atributos y productos
Con la cuenta lista, pasa a los mapeos. Empieza por las categorías: asocia una categoría de Odoo a una categoría de Shopee y, más tarde, intenta asociar la misma categoría de Odoo a otra categoría de Shopee en la misma cuenta. Sale Each Odoo category maps to one marketplace category per account. Qué hace: edita el mapeo que ya tenía en lugar de crear otro.

Con los atributos le pasa lo mismo. Al repetir un atributo de Odoo para la misma cuenta, el aviso es Each Odoo attribute maps to one marketplace attribute per account. La salida es la misma: un atributo de Odoo, un atributo de marketplace por cuenta.

Luego mapea productos. Duplica sin querer el mapeo de una variante en la misma cuenta y recibe One mapping per product per account. Al corregirlo, copia el ID de producto de Shopee de otra línea y salta Marketplace product ID must be unique per account. Dos reglas distintas: cada producto tiene un solo mapeo por cuenta y cada ID de producto del marketplace solo puede aparecer una vez por cuenta. Revisa la lista y deja un mapeo por producto con su propio ID.

Tercera parada: la importación de pedidos
Al importar el primer pedido aparece No product of the order %s is mapped to the account %s: map them in Product Mappings and try again. El mensaje ya da el camino: ningún producto de ese pedido está mapeado a esa cuenta. Qué hace: entra en Product Mappings, mapea los productos de ese pedido y vuelve a intentarlo.
En otro intento le sale %s did not return the order %s: %s. El texto dice que no se devolvió el pedido y añade un detalle al final. Qué hace: lee ese detalle completo antes de reintentar y lo guarda para quien le da soporte.
Por último, una compañera borra una cuenta de prueba que tenía un pedido pendiente. Al importarlo sale The account of the order %s no longer exists: create its sales order by hand, or delete the hold so that the next import of the company makes it. Aquí el mensaje propone dos salidas y Papelería Arrecife elige una: crear el pedido de venta a mano, o borrar la retención (hold) para que la siguiente importación de la empresa lo cree.
Cuarta parada: el registro de sincronización
Al revisar el registro de sincronización, el responsable intenta corregir una línea y obtiene Sync logs are immutable after creation. You cannot edit them. Prueba entonces a borrarla y el aviso es Sync logs cannot be deleted. They are part of the immutable audit trail. El módulo no deja editar ni borrar esos registros: forman parte de la pista de auditoría. Qué hace: dejarlos como están y corregir el dato en su origen.
El aviso de empresa que sale en varios sitios
Hay un mensaje que el módulo repite en varios tipos de registro: The company of a %s is the one of its marketplace account. Lo que dice es que la empresa de ese registro es la de su cuenta de marketplace. Si te sale, no intentes darle a ese registro una empresa distinta de la de su cuenta: revisa a qué empresa pertenece la cuenta de marketplace y trabaja desde ahí.

Qué aprender del caso
Los avisos de Papelería Arrecife se agrupan por el momento en que salen:
- Cuenta: solo Shopee, un
shop_idpor empresa, frecuencia entre 5 y 60 minutos y umbral de conflictos entre 0 y 100%. - Mapeos: una categoría de Odoo y un atributo de Odoo por cuenta, un mapeo por producto y cuenta, y un ID de producto del marketplace único por cuenta.
- Pedidos: sin productos mapeados no hay importación; si la cuenta del pedido ya no existe, el propio mensaje te da las dos salidas.
- Registro: los registros de sincronización no se editan ni se borran.
- Empresa: la empresa de cada registro es la de su cuenta de marketplace.
Si quieres ver qué campos rellenar antes de llegar a estos avisos, tienes la puesta en marcha del conector, y para entender qué recorre cada registro, cómo funciona por dentro.
Cómo te ayuda FlexigoTech
El conector aparece gratis (sin IVA) en Odoo Apps para Odoo 17, 18, 19 y 20; lo tienes en la ficha de Odoo Apps y en su página en flexigotech.com. Si prefieres que alguien lo deje funcionando contigo, en FlexigoTech implantamos Odoo 17, 18, 19 y 20 y desarrollamos conectores e integraciones a medida cuando lo que necesitas va más allá de lo que hace el módulo.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_attribute_mapping.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_category_mapping.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_config.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_order_hold.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_product_mapping.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_sync_conflict.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_sync_log.py
- Código del módulo: flexigo_apac_e_commerce_marketplaces_bundle 20.0 (2cbf6b48): models/marketplace_sync_queue.py
- apps.odoo.com/apps/modules/20.0/flexigo_apac_e_commerce_marketplaces_bundle
- apps.odoo.com/apps/modules/17.0/flexigo_apac_e_commerce_marketplaces_bundle
- apps.odoo.com/apps/modules/18.0/flexigo_apac_e_commerce_marketplaces_bundle
- apps.odoo.com/apps/modules/19.0/flexigo_apac_e_commerce_marketplaces_bundle
- flexigotech.com/en/services.html
