PRJ-2601 — Mosman
Choose the record kind once. Main projects begin at Enquiry; subcontract packages begin at Planned and never run a quote/Won cycle.
i
One Project entity, two distinct lifecyclesThe kind is required at creation and immutable afterwards. Conditional fields and the first state are validated from that kind.
Project identity
Main-project terms
Required when MainRetention is unavailable until the payment-claim rules are approved.
Defaults from the customer and remains the job's own editable commercial term. Contract value is derived from the Won original plus customer-accepted variations; it is not stored here.
Subcontract-package fields
Required when PackageThe package carries its own schedule and costs; cost rolls into its parent exactly once on Completed. Customer quotation fields are rejected for this kind.
Validated create outcomes
1
Main project → EnquiryCreates the durable code immediately; measuring and quotation attach to this same identity.
1
Subcontract package → PlannedRequires parent, subcontractor and scope; no quotation and no Won state are created.
Current lifecycle
In ProductionStatus is read-only here and changes only through guarded lifecycle actions. Changing record kind is never an edit path.
State variants
- empty — inherits form-empty
- loading — inherits form-loading
- access denied — inherits form-access-denied
- validation error — inherits form-validation-error
These are displays of THIS screen, not new screens. Each inherits the form archetype exemplar.