Skip to content
Back to catalog
ReportSalesNew

Marketplace Sales Comparator

Which channel sale never reached Odoo, and for how much money

Upload the marketplace's sales report and it tells you which ones don't exist in Odoo and which came in for a different amount. It groups the orders the channel exports split across several rows.

Compatibility
Odoo 19Odoo 18Odoo 17

How you get it

Every development works in all three Odoo environments. The only thing that changes is how we deliver it.

Nothing to install

Odoo Online (SaaS)

You do not need the ability to install modules. A Millora consultant comes in with temporary access that you authorize and implements it with Odoo Studio. When they are done, you revoke the access.

Install it today

Odoo.sh or your own server

You receive the module and the installation guide by email as soon as payment clears. Install it yourself, or we install it with you.

Installation · shell
# 1 · copia el módulo a tu addons_path
cp -r millora_comparador_de_ventas_marketplace /mnt/extra-addons/

# 2 · reinicia y actualiza la lista de apps
odoo-bin -u all -d tu_base --stop-after-init

# 3 · instala desde Apps
#     busca "Marketplace Sales Comparator"

What it solves

The problem

A connector syncing orders doesn't fail loudly. It fails quietly: an order that never came down, another that came down for a different amount, a day when the channel changed something and nobody noticed.

The symptom shows up weeks later, at the close: the marketplace reports one revenue figure and Odoo reports another. And there is no quick way to tell which of the hundreds of orders is missing. The comparison gets done by hand, with two exports and find-in-Excel, and gets abandoned halfway.

There is also a detail that makes that manual comparison come out wrong almost every time: many channels export one row per item, while in Odoo that is a single order. Matching row against order flags dozens of sales as missing when they are perfectly there, and three screens in, somebody concludes the report is useless.

How it works

You export the period's sales list from the marketplace — order number, date and amount — import it into the tab the module provides, and hit evaluate.

Before comparing anything, it groups by order number: if the channel exported four rows of the same order, it adds their amounts and treats them as one. The summary states how many rows it grouped, so the number adds up on sight.

Then it looks up every order in a single sweep by the marketplace order number, and classifies each one:

  • Correct — the gap against Odoo is one peso or less.
  • OK — the gap stays under half a percent. That is rounding, not a problem.
  • Difference — beyond that. It shows both amounts and the percentage.
  • Does not exist — the order isn't in Odoo. And if the row carried an amount, it says how much money was left out.

At the top sits a dashboard with the sync percentage, how many orders were found, how many match on amount, how many carry a difference and how many are missing; plus the marketplace total set against the Odoo total and the gap between them. An overall verdict — perfect, good, fair or problem — sums up the state of that period's sync.

What it does not do

It compares amounts, not dates. The module places the marketplace date and the Odoo creation date side by side in the list, so the connector's lag is visible at a glance. But the evaluation is about money: no order is flagged for having arrived late.

It fixes nothing. It is a diagnosis. It says what is missing and for how much; re-pulling an order or correcting an amount is the connector's job, or the operator's.

It compares against whatever you upload. The scope of the analysis is the file: if the marketplace export comes in incomplete, the module will take it as complete. Export the whole period rather than a filter.

It needs the order number to match exactly. The match is against the order's reference in Odoo. A number with an extra space, in a different format, or one the channel changed afterwards comes out as "does not exist" even though the order is right there.

It does not say why an order is missing. One cancelled on the channel that never came down looks the same as one lost to a connector error. The list says which to review; the cause is investigated case by case.

What changes

Checking that the sync is healthy goes from a job nobody does to a file and a button.

And when something is missing, it stops being a suspicion — "I think the month doesn't add up" — and becomes a list of order numbers with their amounts beside them. That is the difference between finding out from accounting that orders were missing, and finding out on Monday.

What's included

  • Imports the marketplace's sales report and matches every sale against the order in Odoo
  • Groups by order number the rows a channel exports per item, treating them as a single order
  • Classifies every order: correct, tolerable difference, real difference, or missing from Odoo
  • Quantifies how much money the orders that never arrived represent
  • Tolerates rounding: up to one peso, or half a percent, counts as correct
  • Sums up the period with a sync percentage and an overall verdict
  • Sets the marketplace's billed total against the total recorded in Odoo
  • Places the channel date and the Odoo date side by side, so connector lag shows at a glance
  • Looks up every order in a single query, however many rows the file carries
  • Keeps information separated by company in multi-entity databases

Requirements

  • Sales module active
  • Odoo Marketplugin, or another integration writing the marketplace order number onto the order reference: that is what it matches against
  • The sales report the marketplace exports, carrying order number, date and amount
  • The file's order number matching exactly the one recorded in Odoo