Budget Control
This module is the main module from a set of budget control modules. This module alone will allow you to work in full cycle of budget control process. Other modules, each one are the small enhancement of this module, to fullfill additional needs. Having said that, following will describe the full cycle of budget control already provided by this module,
Budget Control Core Features:
Budget Commitment (base.budget.move)
Probably the most crucial part of budget_control.
Budget Balance = Budget Allocated - (Budget Actuals - Budget Commitments)
Actual amount are from account.move.line from posted invoice. Commitments can be sales/purchase, expense, purchase request, etc. Document required to be budget commitment can extend base.budget.move. For example, the module budget_control_expense will create budget commitment expense.budget.move for approved expense. Note that, in this budget_control module, there is no extension for budget commitment yet.
Budget Template (budget.template)
A Budget Template in the budget control system serves as a framework for controlling the budget, allowing for the budget to be managed according to the pre-defined template. The budget template has a relationship with the accounting, and is used to control spending based on pre-configured accounts.
Budget Period (budget.period)
Budget Period is the first thing to do for new budget year, and is used to govern how budget will be controlled over the defined date range, i.e.,
Duration of budget year
Template to control (budget.template)
Document to do budget checking
Analytic account in controlled
Control Level
Although not mandatory, an organization will most likely use a fiscal year as its normal budget period. A Lifetime analytic, such as a campaign, grant, or one-off initiative, may instead use one dedicated multi-year period. Because that period is scoped to one analytic account, it may overlap the organization’s fiscal periods without making document-period selection ambiguous.
Budget Control Sheet (budget.control)
Each fiscal analytic account can have one budget control sheet per budget period. A Lifetime analytic has one sheet for its dedicated period. The budget control is used to allocate budget amount in a simpler way. In the backend it simply create budget.control.line, nothing too fancy. Once we have budget allocations, the system is ready to perform budget check.
Budget Controls created or adopted by a Budget Plan keep a direct link to that plan. This makes ownership of the allocated amount explicit and prevents another plan from taking over the same active control.
Budget Checking
By calling function – check_budget(), system will check whether the confirmation of such document can result in negative budget balance. If so, it throw error message. In this module, budget check occur during posting of invoice and journal entry. To check budget also on more documents, do install budget_control_xxx relevant to that document.
Budget Constraint
To make the function – check_budget() more flexible, additional rules or limitations can be added to the budget checking process. The system will perform the regular budget check and will also check the additional conditions specified in the added rules. An example of using budget constraints can be seen from the budget_allocation module.
Budget Reports
Currently there are 2 types of report.
Budget Monitoring: combine all budget related transactions, and show them in Standard Odoo BI view.
Actual Budget Moves: combine all actual commit transactions, and show them in Standard Odoo BI view.
Budget Commitment Move Forward
In case budget commitment is being used. Sometime user has committed budget withing this year but not ready to use it and want to move the commitment amount to next year budget. Budget Commitment Forward can be use to change the budget move’s date to the designated year.
Budget Transfer
This module allow transferring allocated budget from one budget control sheet to other
Budget Balance Forward
Active controls from a Fiscal Period are proposed in the audited Forward Budget Balance document. A budget manager reviews the analytics and amounts before posting them to the next Fiscal Period. Lifetime periods already span their complete duration and cannot use carry forward.
Extended Modules:
Following are brief explanation of what the extended module will do.
Budget Move extension
These modules extend base.budget.move for other document budget commitment.
budget_control_expense
budget_control_purchase
budget_control_purchase_request
budget_control_sale
Budget Allocation
This module is the main module for manage allocation (source of fund, analytic tag and analytic account) until set budget control. and allow create Master Data source of fund, analytic tag dimension. Users can view source of fund monitoring report
budget_allocation
Tier Validation
Extend base_tier_validation for budget control sheet
budget_control_tier_validation
Analytic Tag Dimension Enhancements
When 1 dimension (analytic account) is not enough, we can use dimension to create persistent dimension columns
analytic_tag_dimension
analytic_tag_dimension_enhanced
Following modules ensure that, analytic_tag_dimension will work with all new budget control objects. These are important for reporting purposes.
budget_allocation
budget_allocation_expense
budget_allocation_purchase
Table of contents
Usage
Before start using this module, following access right must be set.
Budget User for Budget Control Sheet, Budget Report
Budget Manager for Budget Period
Followings are sample steps to start with,
Create new Budget KPI
To create budget KPI using in budget template
Create new Budget Template
Add new template for controlling Budget following kpi-account
Create new Budget Period
Choose Budget template
Identify date range, i.e., 1 fiscal year
Plan Date Range, i.e., Quarter, the slot to fill allocation in budget control will split by quarter
Control Budget = True (if not check = not check budget for this period)
Normal periods use the Fiscal Period scope. Lifetime periods are restricted to one analytic account and may overlap fiscal periods safely.
Create Budget Control Sheet
To create budget control sheet, you can either create manually one by one or by using the helper, Action > Create Budget Control Sheet
Choose Analytic budget_control_purchase_tag_dimension
Check All Analytic Account, this will list all analytic account in selected groups
Uncheck Initial Budget By Commitment, this is used only on following year to init budget allocation if they were committed amount carried over.
Click “Create Budget Control Sheet”, and then view the newly created control sheets.
Allocate amount in Budget Control Sheets
Each analytic account will have its own sheet. Form Budget Period, click on the icon “Budget Control Sheets” or by Menu > Budgeting > Budget Control Sheet, to open them.
Based on “Plan Date Range” period, Plan table will show all KPI split by Plan Date Range
Allocate budget amount as appropriate.
Click Control button, state will change to Controlled.
Note: Make sure the Plan Date Rang period already has date ranges that covers entire budget period. Once ready, you can click on “Reset Plan” anytime.
Budget Reports
After some document transaction (i.e., invoice for actuals), you can view report anytime.
On Budget Control sheet, click on Monitoring for see this budget report
Menu Budgeting > Budget Monitoring, to show budget report in standard Odoo BI view.
Budget Checking
As we have checked Control Budget = True in third step, checking will occur every time an invoice is validated. You can test by validate invoice with big amount to exceed.
Create a Lifetime budget without a Project
Open the Analytic Account and click Create Lifetime Budget.
Enter the fixed Start Date, End Date, Budget Template, planning range, and Total Budget.
Ensure the selected planning range has Date Ranges covering the complete Lifetime duration. The setup stops without creating partial records when a range is missing.
The system creates one dedicated Lifetime Period and one draft Budget Control. Distribute the total on its control lines, then submit and control it normally.
Lifetime is suitable for a campaign, grant, contract, or other one-off initiative that can span several fiscal years. It does not use a Budget Plan or carry forward. Lifetime analytics are therefore excluded from Fiscal Budget Plan allocation, including the Refresh and Get All Analytic Accounts actions; allocate them directly on their dedicated Budget Control instead.
Carry an unused balance to the next period
Create a Forward Budget Balance document and select the source and target Fiscal Periods, then click Review Budget Balance.
Review the proposed active analytics. Adjust the amounts or remove lines that must lapse before completing the forward.
Create the target-period Budget Plan. Its Forward Balance is included in the amount available for the new Budget Control Sheet.
Lifetime periods cannot be selected because their balance remains available for their complete duration.
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
Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
Saran Lim. <saranl@ecosoft.co.th>
Maintainers
Current maintainers:
This module is part of the ecosoft-odoo/budgeting project on GitHub.
You are welcome to contribute.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_addon_budget_control-18.0.3.3.2-py3-none-any.whl.
File metadata
- Download URL: odoo_addon_budget_control-18.0.3.3.2-py3-none-any.whl
- Upload date:
- Size: 176.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
701d3b534928ea6be62dbcee040a1d8ec8a4525b4a7e5b46779719691f816096
|
|
| MD5 |
d7e7f3dfceaacdb71cc79df145be10ce
|
|
| BLAKE2b-256 |
1bd960bdce575737dff6056da61cf7c5e74a1956efefd29c1380d9f2420bf210
|