Una oferta une un producto de Odoo con un contrato de vendedor de ManoMano. Hay una por producto y contrato. Si vuelves a publicar un producto que ya tenía oferta, el asistente la actualiza.
Antes de la primera oferta
Hay tres datos sin los que ninguna oferta sale:
- La referencia interna del producto. Es el SKU de la oferta. Si algún producto no la tiene, el asistente se para sin crear ninguna oferta y lo dice con
The following products have no Internal Reference (SKU) and cannot be published to ManoMano. Please set one first:y la lista de esos productos. - La parrilla de transporte del contrato. En ManoMano › Configuration › Contracts, el campo «Carrier grid» lleva el nombre de la parrilla tal como está en la Toolbox de ManoMano. Viaja en cada oferta, con «Delivery days (min)» y «Delivery days (max)», que vienen a 2 y 5 días. El asistente no la comprueba: si falta, la oferta se crea y queda en Error con el motivo.
- Un precio mayor que cero. Si el precio de un producto sale a 0, el asistente se para con
Product '…' has a price of 0. ManoMano requires a positive price., con el nombre del producto, y con un precio manual de 0 se para conManual price must be greater than zero.Tampoco crea ninguna oferta.
Una oferta que ya existe pasa sus propios controles cada vez que se envía: si después pierde la referencia o el precio, queda en Error con The product has no Internal Reference: it is the SKU of the offer. o con ManoMano requires a price greater than zero.
Si el producto tiene código de barras, sale como EAN, y el peso del producto va con la oferta.
Publicar paso a paso
- Abre una lista de variantes de producto. En Odoo 17, 18, 19 y 20 está Inventory › Reporting › Stock, que solo ven los administradores de Inventario; en 17, 18 y 19, también los menús «Product Variants» de Ventas, Inventario y Compras, si tienes activadas las variantes. En la lista «Products» de Ventas o de Inventario la acción no sale.
- Marca al menos un producto, para que salga el menú de acciones, y elige «Publish on ManoMano». Se abre el asistente «Publish offers».
- En «Products», añade los productos que quieres vender en ManoMano. El asistente no recoge los que marcaste en la lista: si lo dejas vacío, al publicar se para con
Select at least one product to publish. - Elige el contrato y, si quieres, la categoría. La categoría es de referencia: ManoMano la toma de su catálogo, por el EAN, o del catálogo de productos que cargas en la Toolbox.
- Elige de dónde sale el precio: «Sales price, plus the product taxes», que es como viene, «Public price, plus the product taxes» o «Manual, VAT included». En los dos primeros, el asistente suma al precio del producto sus impuestos de la empresa del contrato, porque ManoMano recibe el precio que paga el cliente.
- Pulsa «Publish». Odoo crea o actualiza las ofertas, con la cantidad a mano de cada producto como stock, y las envía a ManoMano de 20 en 20.

Qué estado queda en cada oferta
| Estado | Qué ha pasado | Qué haces |
|---|---|---|
| Draft | Creada y sin enviar | Nada: la tarea diaria la envía, o publícala tú |
| Published | ManoMano la ha aceptado | Mira «Online» para saber si los clientes la ven |
| Error | Le falta un dato o ManoMano la ha rechazado | Lee el mensaje: con ManoMano refused it: vienen los motivos de ManoMano |
| Unpublished | Retirada de la venta | Vuelve a publicarla si quieres venderla otra vez |
Una oferta aceptada no siempre está a la vista: «Online» es lo que dice ManoMano, y los avisos que manda quedan en el mensaje de la oferta. Si una oferta publicada no ha cambiado desde el último envío, Odoo no la vuelve a mandar.
Retirar una oferta
ManoMano no tiene una llamada para borrar ofertas. Al pulsar «Unpublish», Odoo manda la oferta con stock 0 y solo la pasa a Unpublished cuando ManoMano contesta que ya no está en línea. Si ManoMano la sigue mostrando, la oferta se queda como estaba, con este mensaje: ManoMano took the stock at 0 but still shows the offer online: it is not unpublished yet.
Una oferta que nunca llegó a enviarse pasa a Unpublished sin llamar a ManoMano.

Lo que pasa solo cada día
- «ManoMano: sync offers» publica las ofertas en Draft y vuelve a mandar las Published que hayan cambiado desde el último envío. Manda el «Stock» guardado en la oferta, no la cantidad a mano de hoy. Las que están en Error esperan a que las corrijas y las publiques tú.
- «ManoMano: pull offer status» pregunta a ManoMano por las ofertas enviadas, de 50 en 50 referencias. Las que ManoMano lista quedan «Online», con su «ManoMano product ID», y en Published, salvo que su última actualización acabara en error. Las que no lista quedan fuera de línea.
¿De dónde sale el stock de la oferta?
Es la cantidad que el producto tenía a mano cuando lo publicaste con el asistente, y no cambia sola: las ventas en Odoo, también las que llegan de otros canales, no la bajan. Para mandar la cifra de hoy, vuelve a pasar el producto por el asistente. También puedes cambiar «Stock» en la oferta: si está en Draft o en Error, pulsa «Publish»; si ya está publicada, ese botón no sale y el cambio lo manda la tarea diaria.
¿Puedo vender el mismo producto con dos contratos?
Sí. Hay una oferta por producto y contrato, así que cada contrato tiene la suya, con su precio y su parrilla.
¿Por qué una oferta publicada no sale en ManoMano?
Porque aceptada no es lo mismo que visible. Mira la casilla «Online» y el mensaje de la oferta tras la comprobación diaria: ahí quedan los avisos y los motivos que da ManoMano.
Sigue leyendo
Comprobado en el código del conector (versión 17.0, 18.0, 19.0 y 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigobe_manomano_connector · 17.0 af39294 · 18.0 ace8d3a · 19.0 57d3f8e · 20.0 093b2e3: wizard/offer_publish_wizard.py, wizard/offer_publish_wizard_views.xml, models/manomano_offer.py, views/manomano_offer_views.xml
- Código del módulo: flexigobe_manomano_connector · 17.0 af39294 · 18.0 ace8d3a · 19.0 57d3f8e · 20.0 093b2e3: models/manomano_contract.py, models/manomano_offer.py (_build_payload), views/menu.xml
- Código del módulo: flexigobe_manomano_connector · 17.0 af39294 · 18.0 ace8d3a · 19.0 57d3f8e · 20.0 093b2e3: models/manomano_offer.py (_payload_problem, _put, _row_outcome, action_publish)
- Código del módulo: flexigobe_manomano_connector · 17.0 af39294 · 18.0 ace8d3a · 19.0 57d3f8e · 20.0 093b2e3: models/manomano_offer.py (action_unpublish)
- Código del módulo: flexigobe_manomano_connector · 17.0 af39294 · 18.0 ace8d3a · 19.0 57d3f8e · 20.0 093b2e3: data/manomano_cron.xml, models/manomano_offer.py (_cron_sync_offers, _pull_status)
- github.com/odoo/odoo/blob/20.0/addons/stock/views/product_views.xml
