Hello,
we are implementing Odoo in company that sells and manufactures ice creams.
They have 3 types on containers (packages) each of them has theoretical weight. Problem is that in UoM i have one container = 4.8 kg. But after manufacturing the weight may be like 4.6, 4.7, 4.9. I have UoM = kg on product because invoice is based on weight, track inventory by lots and invoicing based on delivery qty.
When i make sales order for 3 containers (aprox 14.4 kg) and delivery i have problem with scanning products in barcode. I pick 4,6 + 4,7 + 4,9 = 14,2 kg and there is still like 0.2 kg missing. Also package on SO is like 2,97 not 3 full packages.
May I ask for help, please?
I am in Odoo 19 on odoo.sh
Best regards,
Jakub
You’re facing a classic variable-weight packaging (catch weight) problem in Odoo, which is common in food industries like ice cream, meat, cheese, etc. The issue comes from mixing theoretical container quantity (4.8 kg) with real manufacturing weight (4.6 / 4.7 / 4.9) while invoicing and inventory are based on kg and barcode scanning is based on containers.
Here’s a clear and practical solution used in real Odoo food manufacturing implementations.
🎯 Root of the Problem
You currently have:
Product UoM = kg (correct for invoicing)
Container = 4.8 kg theoretical
Manufacturing produces real weights
Sales order = 3 containers
Delivery scans 3 lots
Real weight = 14.2 kg instead of 14.4
Odoo shows:
This happens because:
So the system expects:
But real production is:
✅ Correct Industry Approach
In food manufacturing, you should not use container as UoM.
Instead:
Product UoM = kg
and
Container = Packaging
not UoM.
🧩 Recommended Odoo Design
Step 1 — Product UoM
Product:
This is correct already.
Step 2 — Use Packaging instead of UoM
Go to:
Create:
Now container is only:
not UoM.
Step 3 — Manufacturing
When producing:
You create lots like:
Each lot has real weight.
Stock becomes:
Correct.
Step 4 — Sales Order
Instead of:
You sell:
or
but system tracks kg.
Step 5 — Barcode Picking
During delivery:
Scan:
Odoo automatically calculates:
Delivery validated.
Invoice = 14.2 kg.
No missing quantity.
No 2.97 packages.
Problem solved.
📦 Container Still Visible on Sales
If client wants:
you can add:
custom field
or
This is informational only.
Invoice still based on kg.
🧠 Best Practice in Food Industry
Always:
Inventory = Weight
Sales = Weight
Invoice = Weight
Lots = Real Weight
Packaging = Container
⚙️ Better Advanced Solution
If they insist on:
but invoice real weight,
you need Catch Weight system.
This is usually done using:
OCA Catch Weight module
Odoo Community Association
Module:
This allows:
Sell containers
Deliver lots
Invoice real weight
Barcode scan correctly
No quantity mismatch
This is the cleanest solution.
🧪 Example Workflow
Sales
System calculates:
Delivery
Scan:
System:
Invoice
Customer pays real weight.
🚨 Important
Never use:
as UoM conversion.
Because Odoo expects exact math.
And food production never gives exact weight.
✅ Recommended Configuration
Product
UoM = kg
Tracking = Lots
Invoicing = Delivered Quantity
Packaging = Container
Manufacturing
Produce lots with real weight.
Sales
Sell kg or containers (info only)
Delivery
Scan lots
Invoice real weight.
📊 Final Recommendation
Best implementation in Odoo 19 on odoo.sh:
Option 1 (Simple and Fast)
Use:
kg as UoM
packaging for containers
sell weight
scan lots
✔ No mismatch
✔ No barcode issue
✔ No 2.97 containers
Option 2 (Professional Food Industry)
Install Catch Weight modules
✔ Sell containers
✔ Deliver weight
✔ Invoice real weight
✔ Full automation
❓ Quick Question
Does the company insist on selling 3 containers (not kg) on the Sales Order, or they are okay with selling kg and showing containers only for reference?