Sales Margin after other estimated costs
Track expected shipping costs, allowing more accurate margin calculations.
Costs could include packaging, documentation or customs expenses. These may be consumables or services, not directly included in sales order lines nor accounted with the invoice. But we may still ant the Sales Order margin to consider these costs, especially if business margins are tight.
Also allows for carrier shipping costs to be estimated separately, instead of being automatically added as a sales order line, to charge the customer.
This is useful in the case the customer is charge with a shipping fee that can be very different from the actual shipping cost, or when no shipping fee is charged at all.
In this case the expected shipping costs, computed by the UPDATE SHIPPING COSTS button, can be stored as Other Costs and considered for the sales order margin, instead being added as a sales order line and charged to the customer.
auto_awesome What this module does
AI-generated from the code · Odoo 14.0Add extra expected costs (like shipping, packaging or customs) to a sales order and see the real margin after them. You can also choose whether shipping is charged as a normal order line or kept as an estimated cost.
This module lets you record additional expected costs on a sales order, so the margin shown reflects more than just the product lines. On the sales order form you get a new "Other Costs" section where you can add lines with a product, a description and a cost amount. These lines are editable while the order is a draft or confirmed, but become read-only once the order is done or cancelled.
The margin and margin percentage of the order are automatically reduced by the total of these other costs, so you see a more realistic profit.
For delivery carriers, a new "Charging Policy" setting appears on the carrier form. You can choose "As SO Line" (the standard behaviour, where shipping is added as a sales order line) or "As Other Cost" (where the shipping cost is stored as an other cost line instead). When the policy is "As Other Cost", using the "Update Shipping Costs" button on the order will not create a sales order line; instead it creates or replaces a delivery cost line in the Other Costs section.
This is useful when the shipping fee charged to the customer differs from the real shipping cost, or when no shipping fee is charged at all. The module touches sale.order, delivery.carrier and the new sale.order.other.cost model.
Depends on
Models and fields (3)
- sale.order · extends an existing modelother_cost_ids (Other Costs)
- delivery.carrier · extends an existing modelcharge_policy (Charging Policy)
- sale.order.other.cost · new modelname (Description), order_id (Sales Order), company_id, price_unit (Cost), product_id (Product), is_delivery (Is a Delivery), recompute_delivery_price
Text generated by AI (DeepSeek) from reading the Odoo 14.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 1 confirmed, 8 with no information of 9 versions.
Sources · Odoo 14.0
Confirmed on 2026-11-03 in branch 14.0 of OCA/margin-analysis.
terminal Installation and usage
OCA documentation · Odoo 14.0Usage
Source · Odoo 14.0In the Sales Order, add other sales costs in the "Other Costs" field, after the sales order lines.
Using the DUPDATE SHIPPING COSTS button will update the estimated cost in the Other Costs field instead of a sales order line, if the selected Shipping Method is configured that way.
No verified information in OCA: Installation, Configuration.
Installation 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.