A full construction-management layer on top of ERPNext v15: tendering, BOQ, WBS/cost-codes, budget control, procurement guardrails, material reconciliation, subcontracting, client/subcontractor RA billing, and EVM-style KPI intelligence (CPI/SPI/profitability).
- Frappe Framework v15
- ERPNext v15
- Python 3.10+
# from your bench directory
bench get-app construction_erp /path/to/construction_erp
bench --site yoursite.local install-app construction_erp
bench --site yoursite.local migrate
bench build --app construction_erp
bench restartAfter install, open the Construction ERP workspace from the app
switcher. Construction ERP Settings is seeded automatically — set
Hard-Block PO on Budget Overrun there if you want enforcement (default
is warn-only).
| Spec step | Feature | Delivered as |
|---|---|---|
| 1 | Tender lifecycle | Tender (submittable) + Tender Approval workflow |
| 2 | Award → Project conversion | tender_convert.py (auto-creates Project, WBS, Cost Code, BOQ, Budget) |
| 3 | BOQ management | BOQ + BOQ Item, versioned with auto-supersede |
| 4 | Change management | Variation Order + BOQ Revision (auto re-versions BOQ & bumps budget) |
| 5 | Cost structure | WBS (tree, NestedSet) + Cost Code |
| 5/6/9 | Budget control | Project Budget + budget.py engine (PO validation, commitment, actuals, threshold alerts 75/90/100%) |
| 6 | Procurement | Native ERPNext Material Request → RFQ → PO → GRN, with custom_cost_code linking every line back to the budget |
| 6 | Material reconciliation | Material Reconciliation (stock-ledger auto-fetch, wastage %, leakage flag) |
| 7 | Site / mobile ops | Daily Progress Report + Daily Progress Activity |
| 8 | Subcontracting | Subcontract Work Order + Subcontract RA Bill (cumulative, retention, TDS) |
| 10 | Client billing | Client RA Bill (cumulative measurement, GST, retention, one-click Sales Invoice) |
| 11/12 | KPI intelligence | kpi.py (EVM: PV/EV/AC, CPI, SPI, margin) + 4 reports + KPI fields on Project |
- Project Profitability — revenue vs cost, margin, CPI/SPI per project
- Project KPI Dashboard — earned-value dashboard
- Budget Health — cost-code level budget/committed/actual/available
- Material Reconciliation Summary — wastage & leakage by item
Tender Manager, Estimator, Project Manager, Site Engineer, Procurement Officer, Quantity Surveyor, Construction Management — all seeded as fixtures with scoped permissions.
A complete, internally-consistent scenario ("Skyline Towers Phase 1") ships with the app for training and evaluation:
# seed
bench --site <site> construction-erp-demo
# or
bench --site <site> execute construction_erp.construction_erp.demo.seed.run
# remove
bench --site <site> construction-erp-demo --teardownIt builds a won tender, the converted project skeleton, a refined
cost-code budget (with a deliberate substructure overrun so alerts
fire), a subcontract work order + RA bill, two cumulative client RA
bills, three daily progress reports, budget alerts and KPI snapshots.
The seeder is idempotent and savepoint-wrapped (safe to re-run; a
failure rolls everything back). Demo records carry a (Demo) suffix.
docs/Construction_ERP_Training_Manual.docx is a 17-page instructor /
self-paced manual covering architecture, roles, the 12-step lifecycle,
a module reference, role-based hands-on walkthroughs on the demo data,
budget-control rules, worked billing examples, KPI interpretation,
administration, troubleshooting and a glossary.
- Procurement and stock deliberately reuse native ERPNext
(Material Request, RFQ, Supplier Quotation, Purchase Order, Purchase
Receipt, Stock Entry). The construction layer attaches a
custom_cost_codefield to those transaction lines so every rupee flows back into the project budget — no parallel procurement module. - Budget position model per cost code:
available = budgeted − committed(open PO) − actual(consumed). - Submitting a PO commits cost; issuing material (Stock Entry → Material Issue) converts commitment into actual.
- Daily scheduler raises
Budget Alertrecords at 75/90/100% and flags stale Material Requests.
Each DocType lives in construction_erp/construction_erp/doctype/<name>/.
Add fields via the JSON or Customize Form; business rules go in the
matching .py controller. Native ERPNext docs are extended only through
the custom_field.json fixture and doc_events in hooks.py.
##For More Detail email : ametvaid@gmail.com