NexWave Budget

NexWave Budget is the budgeting engine that lets you set spend limits across any combination of accounting dimensions (Cost Centre, Project, and any custom Accounting Dimension you have configured) and enforces those limits when transactions are submitted.

This page is the conceptual reference. For the step-by-step setup walkthrough, see the User Guide.

Looking for a step-by-step walkthrough? See Create and Enforce a Budget.

What it does

A NexWave Budget is a submittable document that bundles together:

  • Scope: one company, one fiscal year, and any combination of dimension values (Cost Centre, Project, plus any active Accounting Dimensions).

  • Action settings: how strictly to enforce on Annual, Accumulated Monthly, and Monthly comparisons.

  • Applicability: which transaction types this budget should validate (Actual Expenses, Purchase Orders, Material Requests).

  • Budget accounts: one row per Profit and Loss account with an annual amount and an optional 12-period breakdown.

Once submitted, the budget is automatically consulted whenever a matching transaction is submitted. Drafts never enforce.

Why use it (instead of the legacy Budget doctype)

NexWave Budget replaces the older Budget doctype shipped with the framework. The newer engine is recommended because it:

  • Supports any combination of dimensions, not just one. A single budget can target a Cost Centre, a Project, and a custom Accounting Dimension simultaneously.

  • Provides three independent enforcement controls (Annual, Accumulated Monthly, Monthly) per budget instead of a single global setting.

  • Replaces the Budget Category pattern with simpler per-budget action settings.

  • Enforces consistently across Actual Expenses, Purchase Orders, and Material Requests with one engine and one set of rules.

The legacy Budgets page covers NexWave's older extensions to the standard Budget functionality. Existing legacy budgets continue to work; new budgets should use this module.

Validation engine

When a transaction is submitted, NexWave runs the relevant set of checks based on the transaction type:

Transaction

Triggers checks where...

GL Entry (any GL-posting document)

Applicable on Actual Expenses is enabled

Purchase Order

Applicable on Purchase Order is enabled

Material Request (Purchase type)

Applicable on Material Request is enabled

For each matching budget, NexWave runs up to three independent comparisons:

  1. Monthly comparison (if Action on Monthly Budget is Stop or Warn): current-month spend vs. current period amount.

  2. Accumulated Monthly comparison (if Action on Accumulated Monthly Budget is Stop or Warn): year-to-date spend vs. sum of periods 01 through the current period.

  3. Annual comparison (if Action on Annual Budget is Stop or Warn): full-year spend vs. annual Budget Amount.

If a check fails:

  • Stop: blocks the transaction with a "Budget Exceeded" error showing the budget name, account, dimensions, ceiling, and overspend amount.

  • Warn: displays a message but allows the transaction.

  • Ignore: skips the comparison entirely.

Exception Approver

Set an Exception Budget Approver Role on the Company. Users with that role have every Stop downgraded to a Warn so they can submit the transaction with a visible warning instead of being blocked.

Dimension matching

The Dimensions section lists Cost Centre and Project by default, plus a Link field for every active Accounting Dimension on your site. At least one dimension must be filled in on each budget.

Wildcard semantics

Leaving a dimension empty means "all values for that dimension". Filling it in restricts the budget to that single value.

Cost Centre

Project

Matches

(empty)

(empty)

Rejected on save.

Auckland - NW

(empty)

Any transaction posted to Auckland, regardless of project.

(empty)

Phoenix

Any transaction tagged with Project Phoenix, on any cost centre.

Auckland - NW

Phoenix

Only transactions on Auckland - NW AND Phoenix.

Tree dimensions

Cost Centre is a tree. A budget on a parent applies to all descendants. A budget on Operations - NW will validate against transactions on Operations - NW, Auckland - NW (a child of Operations), and any deeper child.

Project may also be a tree on some sites. The same descendant matching applies.

Most-specific-wins precedence

When multiple budgets match a single transaction, the most specific budget takes precedence:

  • A budget that sets two dimensions wins over a budget that sets only one of those same dimensions.

  • A budget on a leaf cost centre wins over a budget on an ancestor.

  • Budgets that target completely different dimensions both apply.

This means you can set a broad company-wide budget at the parent cost centre and override it for specific cost centres or projects without creating duplicates.

Period-to-month mapping

Period 01 maps to the first month of the fiscal year, not January.

For a New Zealand fiscal year (April-March):

Period

Month

Period 01

April

Period 02

May

Period 03

June

Period 04

July

Period 05

August

Period 06

September

Period 07

October

Period 08

November

Period 09

December

Period 10

January

Period 11

February

Period 12

March

For a calendar fiscal year (January-December), Period 01 is January.

Budget Accounts: validation rules

When the budget is saved, every row in the Budget Accounts table is validated:

  • The account must be a leaf account, not a group.

  • The account must belong to the budget's company.

  • The account must be a Profit and Loss account (root type Expense or Income).

  • The same account cannot appear twice in the same budget.

Income accounts are accepted for variance reporting but are not enforced against transactions. Only expense accounts trigger budget validation on transaction submission.

Period allocation behaviour

NexWave handles period allocation in three ways on save:

  1. If any of Period 01 through Period 12 has a value, the Budget Amount is automatically set to the sum.

  2. If only Budget Amount has a value, NexWave distributes it evenly across the 12 periods. The rounding remainder lands on Period 12.

  3. The Distribute Evenly button on a row overwrites existing period values with the even split based on the current Budget Amount.

Duplicate detection

NexWave rejects a submission if another submitted budget exists with all of:

  • The same Company

  • The same Fiscal Year

  • Exactly the same combination of non-empty dimensions and dimension values

  • At least one overlapping account in the Budget Accounts table

  • At least one action field set to Stop or Warn

Reporting-only budgets (all three actions set to Ignore) are exempt from this rule, so you can keep multiple forecast or reference budgets alongside the live operating budget.

Foreign currency handling

In the validator (the engine that fires Budget Exceeded on submission), Purchase Order committed amounts are converted to the company's base currency before being compared to the budget. A USD purchase order is correctly evaluated against an NZD budget. The same applies to Material Request and Actual Expense calculations on multi-currency documents.

The NexWave Budget Variance Report, however, sums Purchase Order committed amounts in transaction currency when Include Purchase Orders is ticked. For multi-currency sites the report's PO exposure can therefore differ slightly from the validator's view. If the two disagree, trust the validator.

Naming and lifecycle

  • Budgets are named using the NWBUDGET-.YYYY.- series. The year segment is the fiscal year start year of the budget creation date.

  • NexWave Budgets are submittable. Drafts do not enforce.

  • To revise a submitted budget, cancel and amend (creates a new draft based on the original), edit, then submit. The new version takes over enforcement.

  • If actuals already exceed any of the budget's enforceable ceilings when you submit (because the budget is being added retrospectively), NexWave shows a warning so you can review whether the budget is realistic before it starts blocking transactions.

Where to look next