Skip to content

feat: guided construction flow from BOQ to invoice - #14

Merged
skibanga merged 11 commits into
masterfrom
feat/tender-status-actions
Oct 9, 2026
Merged

skibanga merged 11 commits into
masterfrom
feat/tender-status-actions

Conversation

@skibanga

@skibanga skibanga commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

These changes make the construction flow easier to follow from start to finish:

BOQ → Tender → Contract → Mobilization → Measurement → Progress Claim → Invoice

Each step can now be created from the step before it, every document links back and forth, and the forms explain their fields in plain language.

Changes

Tender

  • Status is read-only. Saving sets Draft; submitting sets Awarded.
  • Status is shown in the list view and filters.

Bill of Quantities

  • Create → BF Contract appears once the BOQ's tender is awarded. It opens the existing contract if there already is one.
  • Requested Qty on BOQ lines is kept up to date when Material Requests are submitted or cancelled.

Material Request

  • New Get Items From → BF Bill of Quantities:
    • If the Material Request was opened from a BOQ, items are pulled straight from it. Otherwise a BOQ picker is shown.
    • Only stock items still left to request are added, linked to their BOQ line and project.
    • Pulling the same BOQ twice doesn't duplicate rows.
  • A warning appears when someone requests more than is left on a BOQ line.

Contract

  • Plain-language help on every field, and a three-column layout: references | amounts entered | calculated totals.
  • Submittals:
    • Status is now Pending / Approved / Rejected.
    • The table stays editable after submit.
    • An attachment is required before a row can be Approved or Rejected (checked in the form and on the server).
  • Create → Site Measurement Log appears once the Site Mobilization is submitted. It pre-fills the contract, project, BOQ and date. The server blocks it when there is no submitted mobilization.

Measurement Log / Progress Claim

  • Plain-language help on No. / Length / Width / Height, on the claim lines, and on the financial summary.
  • Fetch Measurements only shows once the claim is saved. Before, it failed on an unsaved claim.
  • VAT moved to the invoice:
    • The claim now ends at Net Amount Due (Excl. VAT).
    • Sales and Purchase Invoices made from a claim apply the company's default tax template.
    • The FIDIC IPC print format was updated to match, and a leftover VAT setting was removed.

Navigation

  • Connections tab added to Tender, Variation Order, Site Mobilization, Site Measurement Log and Mobilization Template. Links now go both ways between related documents.
  • Fixed the Contract connections pointing to a non-existent "BF Measurement Log".
  • Fixed the BOQ procurement links (Material Request, Purchase Order, Purchase Receipt, Purchase Invoice via bf_boq).

Testing

Each change was tested on a local v15 site against real BOQ / Tender / Contract / Claim records, with test data rolled back:

  • Tender: Draft → Awarded on submit.
  • BOQ → Contract button: pre-fills tender, project, BOQ and amount.
  • Submittals: approving without a file is blocked; changes work after submit.
  • Measurement Log: blocked until mobilization is submitted.
  • Material Request:
    • 5 stock rows pulled and services skipped.
    • After requesting 10 m of pipe, the next pull offers only the remaining 10 m.
    • Over-request warning is shown.
  • Claim → Sales Invoice: net 1,048,800 + VAT 188,784 = 1,237,584 with a default tax template.

Notes

  • For VAT to appear on claim invoices, the company needs a default Sales Taxes and Charges Template.

🤖 Generated with Claude Code

skibanga and others added 2 commits October 9, 2026 12:56
Status was a free-text Select editable after submit, so users could jump
straight to "Awarded" (which unlocks Create > BF Contract) or move a
rejected tender back.

- Make Status read-only; show it in list view and standard filters
- New tenders always start as Draft; Submit sets Submitted
- Add Status actions on submitted tenders:
  Submitted -> Under Evaluation / Rejected
  Under Evaluation -> Awarded / Rejected
- Server-side set_status validates the transition and submit permission,
  and logs the change as a comment

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Submitting a tender means it has been awarded, so drop the separate
Status actions and set_status endpoint. Status stays read-only:
Draft on save, Awarded on submit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skibanga skibanga changed the title feat: control BF Tender status through actions instead of manual edit feat: make BF Tender status read-only and set Awarded on submit Oct 9, 2026
skibanga and others added 9 commits October 9, 2026 13:09
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add field descriptions a non-engineer can follow (contingency,
  retention, totals, submittals, contract type, parties)
- Split Contract Reference into three columns: references, amounts
  entered, calculated totals

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Submittal status is now Pending / Approved / Rejected (drop Submitted)
- Submittals table, status and attachment stay editable after the
  contract is submitted, so documents can be tracked as they arrive
- Attachment is required before a row is marked Approved or Rejected,
  enforced in the form and on the server

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add Connections tab to Tender, Variation Order, Site Mobilization,
  Site Measurement Log and Mobilization Template
- Link documents both ways: BOQ <-> Tender <-> Contract, Contract ->
  mobilization, measurements, variations, subcontracts, progress claims,
  sales invoices; Progress Claim -> its variation orders
- Fix Contract dashboard pointing to non-existent "BF Measurement Log"
- Fix BOQ procurement links to use bf_boq on Material Request,
  Purchase Order, Purchase Receipt and Purchase Invoice

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add Create > Site Measurement Log on a submitted BF Contract, shown once
its Site Mobilization is submitted. The new log is pre-filled with the
contract, project, BOQ and today's date. The server blocks creation when
no submitted mobilization exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The server looks the claim up by name, so the action failed on a new,
unsaved claim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Measurement rows: explain No., Length, Width and Height
- Progress claim rows: explain unit rate and previous / this period /
  cumulative quantities and values

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove VAT %, VAT Amount and Total Certified (Incl. VAT) from BF
  Progress Claim; the claim now ends at Net Amount Due (Excl. VAT)
- Sales / Purchase Invoices made from a claim apply the company's
  default tax template, so VAT is calculated by ERPNext
- Drop the VAT rows from the FIDIC IPC Certificate print format
- Remove the leftover default VAT entry from Construction Settings
- Add plain-language help to the claim's financial summary

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add Get Items From > BF Bill of Quantities on Material Request. When
  the request is already linked to a BOQ (opened from the BOQ), items
  are pulled straight from it; otherwise a BOQ picker is shown
- Only stock items still left to request are added, linked to their BOQ
  line and project; pulling twice does not duplicate rows
- Keep Requested Qty on BOQ lines up to date on Material Request submit
  and cancel
- Warn when a request asks for more than is left on a BOQ line

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skibanga skibanga changed the title feat: make BF Tender status read-only and set Awarded on submit feat: guided construction flow from BOQ to invoice Oct 9, 2026
@skibanga
skibanga merged commit 91dd966 into master Oct 9, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant