Automated Fix & Pricing (`OrderAirlock`): Starter$249/mo($2,490/yrannual, 500 POs/mo) · Distributor/FDE Pro$499/mo($4,990/yrannual, 2,500 POs/mo) — resolves SKU-specificCS/BXpack multipliers into base OdooUnits(EA) with an equation audit column.
Direct Root Cause & Fix: Odoo 19 raises ValidationError: The unit of measure [Case/Box/Roll] defined on the order line doesn't belong to the same category as the unit of measure [Units] defined on the product whenever order_line/product_uom in a Sales Order CSV does not share the exact uom.category of product.template.uom_id.
Why Odoo's Global uom.uom Table Breaks Wholesale Distribution
In Odoo, Dozen (12) has a fixed ratio across all products, whereas in HVAC/plumbing distribution, 1 CS of 1/2" fittings is 25 EA while 1 CS of 2" valves is 4 EA. Creating dozens of custom Box of 4, Box of 25 records pollutes uom.uom and still fails whenever a customer PO simply says CS.
Deterministic Odoo 19 Import Pattern
- Compute
converted_base_qty = raw_qty * sku_pack_factorper SKU before CSV generation. - Populate
order_line/product_uom_qtywithconverted_base_qty,order_line/product_uomwith baseEA(Units),order_line/price_unitto4decimals, and write[PO: 4 CS x 25] -> 100 EAintoorder_line/x_uom_equation_audit.