Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Purchasing
  3. Purchase Budget Control v 19.0
  4. Sales Conditions FAQ

Purchase Budget Control

by Grevlin Global Corp. https://www.grevlin.com
Odoo

$ 171.11

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Employees (hr)
• Invoicing (account)
• Purchase (purchase)
Lines of code 1765
Technical Name grev_od_purchase_budget_control
LicenseOPL-1
Websitehttps://www.grevlin.com
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Employees (hr)
• Invoicing (account)
• Purchase (purchase)
Lines of code 1765
Technical Name grev_od_purchase_budget_control
LicenseOPL-1
Websitehttps://www.grevlin.com
  • Description
  • Documentation
  • License

Purchase Budget Control

Real-Time Budget Monitoring & Control for Procurement Activities

✓ Odoo 19.0 ✓ Community & Enterprise

Purchase Budget Control enforces procurement budgets at purchase order confirmation, automatically captures actual spend from posted vendor bills, and releases commitments as invoices are reconciled. Configure per-budget thresholds to notify, escalate for approval, or hard-block over-budget orders — with a full audit trail at every step.

Key Benefits

💰

Multi-Level Budgets

Define budgets at organization, department, category, project, or product level with period controls.

⚡

Real-Time Validation

Validate purchase orders against budgets at confirmation. Configurable thresholds trigger notifications, approval requests, or hard blocks.

📊

Spend Tracking

Track total, committed, spent, and available amounts. Commitments are automatically released as vendor bills are posted.

🔔

Alerts & Exceptions

Over-budget alerts with approval workflows for exceptions and budget adjustments.

Core Features

📅 Budget Periods

Annual, quarterly, or monthly budget periods with allocation adjustments and revisions.

🚫 Threshold-Based Actions

Define multiple thresholds per budget. Each threshold can notify, require manager approval, or hard-block the PO. The highest breached threshold wins.

📈 Burn-Down Dashboard

Interactive OWL dashboard showing daily cumulative spend, remaining budget, burn rate, and projected budget exhaustion date.

👥 Approval & Adjustments

Threshold-triggered approval requests with email notifications. Budget adjustments follow a submit → approve → apply workflow with full audit trail.

🔄 Fund Transfers

Move funds between active budgets with the built-in transfer wizard. Two adjustment records are created automatically for a complete audit trail.

📦 Drill-Down Reports

Analyse spend by budget level, department, category, or analytic account. Pivot and graph views with multi-currency support.

Who Is This For?

👤

Procurement Managers

Ensure team stays within budget limits

💰

Finance Controllers

Monitor spend and approve exceptions

💼

Budget Owners

Track utilization and manage allocations

Changelog

Version 1.0.0 - January 2026

  • Initial release for Odoo 19.0
  • Multi-level budget definition: organisation, department, category, project, product
  • Budget validation at purchase order confirmation with configurable threshold actions (notify / require approval / hard block)
  • Automatic spend capture from posted vendor bills with multi-currency conversion
  • Commitment lifecycle: active → partial → released as vendor bills are posted
  • Budget adjustment workflow: submit → approve → apply with full audit trail
  • Inter-budget fund transfer wizard with dual adjustment records
  • Threshold-triggered approval requests with email notifications
  • OWL burn-down dashboard with projected exhaustion date
  • Pivot and graph analysis views; per-line budget assignment on PO lines
  • Multi-company and multi-currency support throughout

Need Help?

For support, contact us at odoo@grevlin.com

Follow us on X: @GrevlinGlobal

✓ 30 Days Free Support

Grevlin Global Corp

Professional Odoo Solutions & Procurement Optimization

Purchase Budget Control

Real-time budget monitoring and enforcement for procurement activities.

The Purchase Budget Control module prevents overspending by enforcing configurable budget limits at purchase order confirmation, automatically capturing actual spend from posted vendor bills, and releasing commitments as invoices are reconciled. It provides full visibility into committed, spent, and available amounts with a complete audit trail at every step.

Overview

Key features:

  • Define budgets at five organisational levels (organisation, department, category, project, product)
  • Configurable threshold rules per budget: notify, require approval, or hard-block over-budget purchase orders
  • Real-time commitment tracking from PO confirmation through to vendor bill reconciliation
  • Automatic spend capture when vendor bills are posted; automatic reversal when reset to draft
  • Budget adjustment workflow with submit → approve → apply state machine
  • Inter-budget fund transfers via a built-in wizard with dual adjustment audit records
  • Per-line budget assignment on purchase order lines with multi-currency conversion
  • OWL burn-down dashboard with projected budget exhaustion date
  • Analytic account integration for cross-module reporting

Configuration

Installation

  1. Install the module from the Odoo Apps menu.
  2. Confirm the following dependencies are installed:
    • base, purchase, product (Odoo Core)
    • account, analytic (Odoo Accounting)
    • mail, hr (Odoo Messaging & HR)
  3. Assign users to the appropriate security groups.

Security Groups

The module provides two access levels:

Group Permissions
Budget Control User View and manage budgets; create and submit adjustments; view thresholds (read-only); request approval for over-budget purchase orders
Budget Control Manager Full CRUD on all budget records; approve and apply adjustments; configure thresholds; execute inter-budget fund transfers

Budget Levels

Configure budgets at different organisational levels:

  • Organisation: Company-wide budget allocation
  • Department: Budget per department or cost centre
  • Category: Product category-specific budgets
  • Project: Project or campaign budgets
  • Product: SKU-level budget allocation

Budget Periods

Each budget has a period type and a validity date range:

  • Annual: Full fiscal year
  • Quarterly: Three-month rolling budget
  • Monthly: Month-by-month allocation

Note

The end date must be on or after the start date. A budget outside its validity date range remains visible but will not intercept new purchase orders.

Threshold Configuration

Each budget supports multiple configurable thresholds. When a purchase order's projected utilisation crosses a threshold, the configured action triggers automatically:

Action Behaviour
notify Sends a threshold breach email and creates an activity for the budget's followers.
require_approval Creates an approval request and blocks PO confirmation until an authorised approver acts on the request.
block Hard-blocks PO confirmation with a validation error. No approval bypass is possible.

When multiple thresholds are breached simultaneously, the highest-percentage threshold determines the action.

To add a threshold, open a budget record, navigate to the :guilabel:`Thresholds` tab, and add rows specifying the percentage, action, and approver list.

Usage

Creating a Budget

  1. Navigate to :menuselection:`Budget Control --> Budgets`.
  2. Click :guilabel:`New`.
  3. Fill in the required fields:
    • Budget Level: Select the organisational level.
    • Period Type: Annual, Quarterly, or Monthly.
    • Date Range: Start and end dates for the budget period.
    • Total Budget: Allocated amount in the company currency.
  4. Optionally link a department, product category, project, product, or analytic account.
  5. Add threshold rules in the :guilabel:`Thresholds` tab.
  6. Click :guilabel:`Activate` to put the budget in effect.

Important

Budgets must be in Active state and their date range must cover the purchase order date for validation to trigger.

Assigning a Budget to a Purchase Order

Open a purchase order and select a budget in the Budget field on the order header. Optionally override the budget on individual order lines to split the cost across multiple budgets.

When the order is confirmed (:guilabel:`Confirm Order`), the module:

  1. Evaluates all assigned budgets for threshold breaches.
  2. Creates an approval request if a require_approval threshold is breached, then blocks confirmation.
  3. Hard-blocks confirmation if a block threshold is breached.
  4. Creates idempotent commitment records for the confirmed order amount (one per budget assignment).

Budget Tracking

The budget form displays real-time financial positions:

Field Description
Total Budget Allocated amount for the period.
Committed Amount Amounts reserved by confirmed purchase orders (net of released commitments).
Spent Amount Amounts captured from posted vendor bills.
Available Amount Remaining budget: Total − Committed − Spent.
Utilisation % (Committed + Spent) / Total × 100

Budget Status Indicators

The list view uses colour-coded row decorations:

  • Red row: Utilisation ≥ 100% (over-budget)
  • Warning row: Utilisation ≥ 80%
  • Normal: Utilisation < 80%

Commitment Tracking

A commitment record is created for each purchase order assignment to a budget. Commitments transition through three states as vendor bills are posted:

State Description
active Full commitment outstanding; no vendor bills posted yet.
partial One or more vendor bills posted, partially releasing the commitment.
released All vendor bills posted; full commitment released.

Note

Cancelling a purchase order releases all its active commitments immediately.

Vendor Bill Spend Capture

When a vendor bill linked to a budgeted purchase order is posted, the module automatically:

  1. Creates a spend line on the budget for each relevant bill line.
  2. Converts the amount to the budget currency if currencies differ (using the bill date rate).
  3. Updates the commitment's released_amount (transitioning to partial or released state as appropriate).

When a vendor bill is reset to draft, all corresponding spend lines are removed and commitment states are recalculated.

Note

This module does not create accounting journal entries. It reads bill amounts for budget tracking purposes only.

Budget Adjustments

To request a budget adjustment:

  1. Open the budget and navigate to the :guilabel:`Adjustments` tab, or go to :menuselection:`Budget Control --> Adjustments`.
  2. Click :guilabel:`New` and choose Increase or Decrease.
  3. Enter the amount and a reason, then click :guilabel:`Submit for Approval`.

A Budget Manager can then :guilabel:`Approve` and :guilabel:`Apply` the adjustment, which updates the total_budget on the budget header. Decreasing the budget below committed_amount + spent_amount is prevented.

Budget Transfers

To move funds between two active budgets:

  1. Open the source budget and click :guilabel:`Transfer Funds` (Budget Manager only).
  2. Select the target budget (must share the same company currency).
  3. Enter the transfer amount (must not exceed the source budget's available amount) and a reason.
  4. Click :guilabel:`Transfer Funds` to execute.

Warning

Budget transfers are immediate and irreversible. Two adjustment records are created automatically — a decrease on the source and an increase on the target — for full auditability.

Approval Requests

When a purchase order breaches a require_approval threshold, an approval request is created automatically and the designated approvers are notified by email.

To review and act on pending requests, navigate to :menuselection:`Budget Control --> Approval Requests`.

The requester is notified by email once the request is approved or rejected. If approved, the purchase order can be confirmed manually.

Burn-Down Dashboard

Navigate to :menuselection:`Budget Control --> Reporting --> Budget Burn-Down` to open the interactive OWL dashboard. For a selected budget, the dashboard displays:

  • Daily cumulative spend over the last 30 days
  • Remaining budget trend
  • Current utilisation percentage
  • Daily burn rate
  • Projected budget exhaustion date

Workflow States

State Description
Draft Budget under construction; validation not yet active.
Active Budget in effect; PO validation and spend capture enabled.
Closed Budget period ended; record is read-only.
Cancelled Budget voided; no further changes permitted.

Technical Details

Models

Model Description
grev.purchase.budget Primary budget header with allocation, dimensions, and computed amounts.
grev.purchase.budget.line Actual spend lines created from posted vendor bills.
grev.purchase.budget.commitment Commitment records created at PO confirmation; released as bills are posted.
grev.purchase.budget.adjustment Increase/decrease requests with draft → submit → approve → apply workflow.
grev.purchase.budget.threshold Configurable utilisation thresholds with notify / require_approval / block actions.
grev.purchase.budget.approval.request Approval requests auto-created when a require_approval threshold is breached.
grev.purchase.budget.transfer.wizard Transient wizard for inter-budget fund transfers.

Key Fields

Purchase Budget (grev.purchase.budget)

  • name: Auto-generated reference (sequence BUD-XXXXX)
  • budget_level: organisation | department | category | project | product
  • period_type: annual | quarterly | monthly
  • date_from / date_to: Budget validity period
  • total_budget: Allocated amount (non-negative)
  • committed_amount: Sum of net commitments (amount − released_amount, computed stored)
  • spent_amount: Sum of spend lines (computed stored)
  • available_amount: total_budget − committed_amount − spent_amount (computed stored)
  • utilization_percent: (committed + spent) / total_budget × 100 (computed stored)
  • forecast_amount: Manual what-if forecast entry for variance analysis
  • analytic_account_id: Optional analytic account for cross-module reporting
  • state: draft | active | closed | cancelled

Calculation Formulas

Available Budget:

Available = Total Budget − Committed − Spent

Budget Utilisation:

Utilisation % = ((Committed + Spent) / Total Budget) × 100

Variance:

Variance Amount = Total Budget − Forecast Amount
Variance %      = (Variance Amount / Total Budget) × 100

Savings:

Savings % = Savings Amount / Total Budget × 100

Integration Points

purchase.order (core Odoo Purchase)

  • button_confirm() is extended to run budget validation and create commitments.
  • button_cancel() is extended to release all active commitments.

account.move (core Odoo Accounting)

  • action_post() is extended to capture spend lines from vendor bills.
  • button_cancel() is extended to reverse spend lines when a bill is reset to draft.

grev_od_spend_analytics (optional)

Aggregated spend vs budget reporting consumes budget data via read-only access.

Performance

  • Budget validation at PO confirmation: < 2 seconds.
  • Computed amounts use store=True for query performance.
  • Key dimension fields (department_id, category_id, analytic_account_id) are indexed.
  • Commitment and spend line creation is idempotency-guarded to prevent duplicates.

Troubleshooting

Budget not validating on PO

Ensure the budget is in Active state and its date_from / date_to range covers the purchase order date. Verify the budget is assigned to the PO header or the relevant order line.

Committed amount not updating after PO confirmation

Verify the purchase order has the correct budget assigned. Check that no duplicate commitment already exists (commitments are idempotency-guarded per PO + budget).

Spend lines not appearing after posting a vendor bill

Confirm the vendor bill has a corresponding purchase order with a budget assigned. Only in_invoice and in_refund move types are processed.

Cannot apply a budget decrease

The module prevents decreasing total_budget below committed_amount + spent_amount. Release or cancel pending commitments before applying the decrease.

Cannot execute a fund transfer

Transfers require both budgets to be in Active state and share the same currency. The transfer amount must not exceed the source budget's available amount.

See Also

  • :doc:`../grev_od_purchase_esourcing/doc/index` — RFQ and tender management
  • :doc:`../grev_od_purchase_negotiation/doc/index` — Negotiation dashboard
  • :doc:`../grev_od_spend_analytics/doc/index` — Spend analytics and KPIs
  • :doc:`../grev_od_purchase_intel/doc/index` — Supplier intelligence
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with