Estimates & Budgets
An Estimate represents the resource requirements for executing a Job. Estimates are always created for Scopes — the estimate for a Scope applies to a BOQ by virtue of the link between the Scope and BOQ.
Dual Purpose of Estimates
Estimates serve two distinct functions in JobNext:
| Function | Description |
|---|---|
| Budget for Resource Procurement and Consumption | Controls spending limits — determines how much can be spent on materials, labour, and other resources during project execution |
| Basis for Creating a Quote (Bid/Tender) | By adding markup to the estimate, it becomes the pricing foundation for customer proposals |
Budget vs Non-Budget Estimates
Key distinction: Budget estimates set spending limits for the project. Non-budget estimates are used solely for quotation purposes and do not affect the project budget. Choose the correct type based on your intent.
| Aspect | Budget Estimate | Non-Budget Estimate |
|---|---|---|
| Purpose | Controls spending limits for procurement and consumption | Provides cost basis for quotation only |
| Budget impact | Sets and enforces the project budget | No impact on project budget |
| Typical use | Post-contract, for execution planning | Pre-contract, for estimate-based quotes |
Estimate Header Fields
Each estimate is stored in omni_job_estimate_header (20 columns):
| Field | DB Column | Type | Description |
|---|---|---|---|
| Estimate Code | estimate_code | varchar | Auto-generated unique code |
| Job | job_id | int (FK) | The job this estimate belongs to |
| Is Budget | is_budget | bit | 1 = Budget estimate (sets spending limits), 0 = Non-budget (for quotes only) |
| Is Additional | is_additional | bit | Marks supplementary estimates added after the original |
| Approved By | approved_by / approved_on | int / datetime | Approval authority and timestamp |
| Approval Notes | approval_notes | varchar | Comments from the approver |
| Is RFQ | is_rfq | bit | Whether an RFQ was generated from this estimate |
| Is Quoted | is_quoted | bit | Whether a quote was created from this estimate |
| Is Cancelled | is_cancelled | bit | Soft-delete flag (cancelled estimates are preserved for audit) |
Five Resource Factors
Every estimate breaks down costs into five resource types. Each resource line is stored in omni_job_estimate_detail (13 columns) with a common formula: value = rate × qty × (1 + waste%).
| Factor | resource_type | Resource Source | Estimation Basis |
|---|---|---|---|
| Labour (L) | L | Staff designation or named person | Time (hours/days/months) × rate per period |
| Material (M) | M | Material master item | Quantity of material × rate per unit |
| Machine (Mc) | Mc | Equipment type from plant module | Time of equipment usage × rate per period |
| Subcontractor (S) | S | Subcontractor work items | Quantity of work × rate per unit |
| Overhead (O) | O | Indirect cost items | Monetary amount for overhead costs |
Estimate Detail Fields
Each resource line captures:
| Field | DB Column | Description |
|---|---|---|
| Resource Type | resource_type | L, M, Mc, S, or O |
| Resource Subtype | resource_subtype | Further classification within the type |
| Resource | resource_id | FK to material/staff/equipment/subcon master |
| Scope | job_scope_id | The scope this resource is estimated for |
| BOQ-Scope Link | boq_job_scope_link_id | Links to the BOQ through scope mapping |
| Base Qty | base_qty | Original estimated quantity |
| Waste % | waste_percent | Expected wastage factor (e.g., 5% for concrete) |
| Qty | qty | Final quantity: base_qty × (1 + waste%) |
| Rate | rate | Cost per unit of resource |
| Value | value | Total cost: rate × qty |
Scheduled Rates for Quick Estimation
Speed up estimation: JobNext provides Scheduled Rates — a database of pre-defined resource breakdowns for each Scope in the WBS. With Scheduled Rates, you can populate all five resource factors for a scope in one click, instead of building rates from scratch every time.
Creating an Estimate
- Navigate to the Job and click Estimates in the horizontal menu
- Click Add Estimate
- Set the estimate type:
- Check Is Budget if this estimate should control spending limits
- Leave unchecked for quotation-only (non-budget) estimates
- Select the Scope(s) to estimate against
- For each scope, add resource lines:
- Labour: Select designation/person, enter time and rate
- Material: Select material from master, enter quantity and rate
- Machine: Select equipment type, enter usage time and rate
- Subcontractor: Define work package, enter quantity and rate
- Overhead: Select cost category, enter amount
- Set waste percentages where applicable (common: 3-10% for materials)
- Review the total estimate value (sum of all resource lines)
- Click Save, then Submit for Approval
Important: Once an estimate is approved and marked as budget, it sets the spending limits for the job. Procurement (MRs, POs) and consumption are tracked against these budget amounts. Exceeding the budget triggers alerts.
Estimate Lifecycle
| State | Description | Actions Available |
|---|---|---|
| Draft | Estimate created, resources being added | Edit, add resources, save |
| Submitted | Sent for approval | Review, approve, reject |
| Approved | Approved by authority — budget is set | View, create additional estimates |
| Rejected | Sent back for revision | Edit and resubmit |
| Cancelled | Soft-deleted (is_cancelled = 1) | View only (audit trail preserved) |