Skip to content
Back to catalog
AppInventory & warehouseBest seller

Containers

You know what each unit cost you before the ship docks

Consolidates purchase orders from several vendors into one shipment, spreads freight and every other logistics cost across the products, and has the real cost calculated before receipt. Goods enter the warehouse already valued.

Compatibility
Odoo 19Odoo 18Odoo 17Odoo 16

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_contenedores /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 "Containers"

What it solves

The problem

Between placing the purchase order and the goods reaching the warehouse, Odoo has nothing.

And that is where an importer's entire job lives. You order from a vendor, but not all at once: part now, the rest in two months. What arrives in one container comes from three different orders and sometimes three different vendors, because consolidating is exactly what makes the freight affordable. On top of the purchase price come freight, the customs broker, bank fees, labelling, handling.

Odoo has landed costs, and they fall short. They force you to create fictitious products for every expense line, and above all they arrive late: you can only apply them after receipt. So for the two or three months the goods are on the water you don't know what they cost you, and by the time you do you have already sold them — at a price you set by feel.

The practical consequence is a spreadsheet. One only its author understands, holding the real margin of the business.

How it works

Three pieces, each of which takes one sentence.

The MacroPO is everything you are going to order from a vendor. The full requirement, not this week's order.

The MicroPO is what you are ordering now, in this shipment. A MacroPO splits into as many MicroPOs as needed, and each can travel in a different container. Confirming a MicroPO makes those goods count as in transit automatically, with nothing to configure.

The container is what travels together. It groups MicroPOs from different MacroPOs and different vendors, which is precisely what Odoo cannot do. Logistics costs are loaded there, invoices, waybills and certificates are attached, and payments to the vendor and to third parties are recorded.

The real cost, before receipt

Expenses are entered on the container without creating new products: name, amount and currency, that's it. The module spreads them across the shipment's products — by units, by volume or by cost, whichever suits each expense — and adds that allocation to the purchase price.

The result is the real cost of every unit, calculated before receiving it. With that you can set a selling price, quote, and decide whether the shipment is worth it, while the goods are still on the water.

When the container arrives, receipt happens from it, and stock enters already valued. There is no second step to assign costs: they are already there.

You work in pesos or dollars, at the exchange rate you specify for that shipment — not whatever rate Odoo has loaded, but the one you actually paid.

What you ordered and what's left

From each MacroPO you see the three figures a planner needs: how much you ordered in total, how much is already on confirmed MicroPOs — and therefore on its way — and how much is still to be placed.

That visibility into transit is what later feeds repurchasing decisions, and it usually exists nowhere except in the buyer's head.

What it does not do

Worth saying up front, because the name promises more than it delivers.

It does not track the shipment. It manages no logistics timelines and no statuses — in transit, delayed, delivered — and connects to no carriers. It organises the container and its cost, not its position on a map.

It creates no journal entries. The cost is reflected in inventory valuation, respecting Odoo's native accounting flow, not in separate postings.

The exchange rate is entered by hand on each container. That is deliberate: in importing, what matters is the rate at which you actually bought the dollars.

Receipt has to happen from the container — that is what guarantees the cost is already in place — there is no automatic cap on a container's capacity or value, and the module ships no reports of its own.

And one detail that confuses people the first time: the same product can end up with different costs across two MicroPOs of the same container. That is not a bug. It is what actually happened, and it is why the margin you compute on this cost is the margin you will get.

What changes

The spreadsheet disappears, and with it the one irreplaceable person who maintained it.

But what really changes is when you know things. Real cost stops being something discovered once the goods are already sold, and becomes a figure available while you can still act on it: raise the price, renegotiate the freight, or decide that shipment wasn't worth it.

What's included

  • Consolidates purchase orders from several MacroPOs and several vendors into one container
  • Splits an order into as many partial shipments as you need, each in its own container
  • Marks goods as in transit on confirming the MicroPO, with no extra configuration
  • Shows per order how much you ordered, how much is on its way and how much is still to place
  • Captures freight, customs broker, fees and handling without creating fictitious products
  • Spreads logistics costs across products by units, by volume or by cost
  • Computes each unit's real cost before the goods are received
  • Receives from the container, so stock enters already valued
  • Works in pesos or dollars at the exchange rate you applied to that shipment
  • Gathers invoices, waybills and certificates as attachments on the container
  • Records payments made to the vendor and to third parties within the same shipment
  • Respects the native accounting flow: cost is reflected in inventory valuation

Requirements

  • Purchase and Inventory modules active
  • A decision on how each logistics cost is spread: by units, by volume or by cost
  • Warehouse locations properly defined, since receipt happens from the container
  • Entering each shipment's exchange rate if you buy in dollars and value in pesos