Purchase landed costs - Alternative option
This module manages your purchase expenses
The functionality of this module is to provide a way to manage your purchase costs more easily than the official module (stock_landed_cost) and allow to distribute them with a lot of methods.
Main features:
- Possibility to assign landed cost afterwards in a separate screen.
- Management of expense types with preconfigured calculation methods.
- Distribution of costs based on weight, volume, product price, etc.
- Types marked as default are automatically added to each new purchase distribution.
- Management orders shopping expenses associated with one or more entry slips.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Lets you record extra purchase costs (freight, customs, insurance) on a separate 'Costs distributions' screen and spread them over the received goods, updating product costs.
This module adds a new 'Costs distributions' area under the Purchase menu where you build a landed-cost document independently from the vendor bill. On the document you import the incoming shipments (receipts) you want to charge, then add expense lines such as transport, insurance or customs.
- Expense types are configured in their own menu: each type has a calculation method (by line amount, product price, quantity, weight, volume, or equally across lines), an optional default amount, and a 'default expense' flag so it is added automatically to every new distribution.
- You can restrict an expense to specific imported lines instead of all of them.
- A Calculate button spreads each expense over the lines using the chosen method and shows, per line, the previous cost, the unit cost added and the new cost; Set done confirms the distribution, Set draft reopens it.
- Expenses can be pulled from a posted supplier invoice line, converting the amount into the distribution currency, and from the vendor bill you can import the distributions linked to selected receipts.
- Deleting a confirmed distribution is blocked, and a cost line cannot be removed if an expense depends on it.
It touches purchase orders and receipts (buttons to open the related distributions), vendor bills (a 'Landed costs' tab), and product cost prices.
Depends on
Menus it adds
Models and fields (12)
- account.move · extends an existing modelexpense_line_ids (Landed costs)
- stock.picking · extends an existing model
- purchase.order · extends an existing model
- account.move.line · extends an existing modelexpense_line_ids (Landed costs)
- picking.import.wizard · new modelpickings (Incoming shipments), supplier, prev_pickings
- purchase.expense.type · new modelname, note (Cost documentation), company_id, default_amount (Default amount), default_expense, calculation_method (Calculation method)
- import.invoice.line.wizard · new modelinvoice, supplier, expense_type (Expense type), invoice_line (Invoice line)
- purchase.cost.distribution · new modeldate, name (Distribution number), note (Documentation for this order), state (Status), company_id, cost_lines (Distribution lines), currency_id (Currency), amount_total (Total), total_volume (Total volume), total_weight (Total gross weight), expense_lines (Expenses), total_expense (Total expenses), total_uom_qty (Total quantity), total_purchase (Total purchase), total_price_unit (Total price unit)
- purchase.cost.distribution.line · new modelname, move_id (Picking line), partner (Supplier), company_id, cost_ratio (Unit cost), picking_id (Picking), product_id, product_qty (Quantity), product_uom (Unit of measure), purchase_id (Purchase order), distribution (Cost distribution), total_amount (Amount line), total_volume (Line volume), total_weight (Line weight), expense_lines (Expenses distribution lines), expense_amount (Cost amount), product_volume (Volume), product_weight (Gross weight), purchase_line_id (Purchase order line), product_price_unit (Unit price), standard_price_new (New cost), standard_price_old (Previous cost)
- import.landed.cost.pickings.wizard · new modelpicking_ids (Pickings), possible_picking_ids (Possible pickings)
- purchase.cost.distribution.expense · new modelref (Reference), type (Expense type), company_id, invoice_id, display_name, distribution (Cost distribution), invoice_line (Supplier invoice line), affected_lines (Affected lines), expense_amount (Expense amount), imported_lines (Imported lines), calculation_method (Calculation method)
- purchase.cost.distribution.line.expense · new modeltype (Expense type), company_id, cost_ratio (Unit cost), picking_id, expense_amount (Expense amount), distribution_line (Cost distribution line), picking_date_done, distribution_expense (Distribution expense)
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 4 confirmed, 5 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/purchase-workflow.
terminal Installation and usage
No verified informationInstallation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.