Budget Control on Sale with Stock
This module is a bridge between budget_control_stock and sale_stock.
When a Sale Order is confirmed, the system auto-creates a Delivery Order (DO). At this point, the Budget Control may not yet be confirmed (the user needs to set KPIs first). This module bypasses the stock budget commit check during SO confirmation so the DO can be created without a budget error.
After SO confirmation, all subsequent DO operations (validate, unreserve, etc.) enforce the budget check normally, requiring the user to confirm the Budget Control before the DO can be processed.
An SO that creates a new Project defaults to Lifetime budgeting. The system creates one Project-scoped Budget Period and one Budget Control for the total estimated SO cost. After the user enters the Project Planned Dates, the draft period follows those dates. Commitments and actual costs in every fiscal year inside that range consume the same total Project balance.
The SO can instead select Fiscal Period before confirmation. That mode keeps the annual behavior: one Budget Control per fiscal period, with audited carry forward between Fiscal Periods when required.
Lifetime periods are exclusive to one analytic account, so they may overlap the normal fiscal periods used by departments. They do not use carry forward because the Project balance does not reset at fiscal year end.
This also supports department analytics that are not linked to a Project. If a control is managed by a Budget Plan, the plan remains the owner of its allocated amount; a Sale Order only links to that control.
The Sale Order cost added to a Budget Control is a planning snapshot taken when the order is linked. Later quantity, cost, or cancellation changes do not silently rewrite an approved budget; a budget manager reopens and adjusts the control explicitly when required.
One Sale Order may create only one budgeted Project. Splitting an SO that would generate several Projects keeps cost ownership explicit.
Table of contents
Usage
To control one total cost budget for a Project that may span several years:
Configure a service product with Create on Order = Project (or Project & Task).
Add that product to one Sale Order. Leave Project Budget Scope as Lifetime and confirm the order.
Odoo creates the Project and Analytic Account. This module copies the fiscal period’s control configuration into a private Lifetime period and creates one draft Budget Control for the total SO cost.
Open the generated Project and enter both Planned Start and End dates. The draft Budget Control follows those dates automatically.
Open the Budget smart button, select the KPIs, prepare plan amounts equal to the total estimated cost, then submit and control the budget.
Use the same Project Analytic Account on purchases, stock moves, expenses, and bills. Documents in every year within the Planned Dates consume the same Project balance.
Use the Project’s Budget Controls smart button for monitoring.
The Project Lifetime Budget cannot be submitted until both Planned Dates are set. Once submitted, set it back to Draft before changing the Project dates. It does not use Forward Budget Balance.
The allocated amount is a snapshot of the Sale Order line costs at the time the Budget Control is created. Later Sale Order edits do not silently rewrite an approved budget.
For annual Project budgeting, choose Fiscal Period on the SO before confirmation. Create or link real SOs/Budget Plans in each fiscal period. Use a Forward Budget Balance document when unused annual balance may continue.
Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Contributors
Saran Lim saranl@ecosoft.co.th
Maintainers
Current maintainer:
This module is part of the ecosoft-odoo/budgeting project on GitHub.
You are welcome to contribute.
Metadata
Release files for odoo-addon-budget-control-sale-stock 18.0.1.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| odoo_addon_budget_control_sale_stock-18.0.1.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Release files / odoo_addon_budget_control_sale_stock-18.0.1.3.3-py3-none-any.whl
| Download URL | odoo_addon_budget_control_sale_stock-18.0.1.3.3-py3-none-any.whl |
|---|---|
| Size | 45.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9140779bb9d358033b60540f83885c09a3bada4b83613833ad37e367cb61b41
|
|
BLAKE2b-256 checksum How to use checksums |
4f21b09a27a4cb18eb3a5a9e21a1cb7d36861a5b7ea4f2b84691b9f22be7f1b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for odoo-addon-budget-control-sale-stock 18.0.1.3.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.