Lot Statuses
The lot status is a single letter on each lot. It appears on schedules, sales screens, and reports — so recognizing the code matters.
At a glance
- Each lot has one of 11 status codes.
- The big four day-to-day:
sFor Sale,fSold,pProduction Inventory,cClosed. - Side branches:
mAccepted,iSold-Contingent,vModel,wR&D,zNot Available,a/bJob Cost / Non-Job. - Status is never edited by hand. It’s a side effect of a Contract operation (Accept / Ratify / Close / Cancel) almost every time.
All 11 Lot statuses
Section titled “All 11 Lot statuses”| Code | Name | Plain English | Typical lifecycle position |
|---|---|---|---|
| z | Not Available for Sale | Lot exists but isn't being marketed yet (still being set up, no plan, no permit, etc.). | Default for a brand-new lot. |
| s | For Sale | Public/marketing inventory. Sales agents can sell it. | Right after lot setup is finished. |
| m | Accepted | Buyer has signed; the contract is at acc. Options are loaded but the plan isn't locked yet. | When a sale is accepted. |
| f | Sold | Contract is at rat: plan is locked, schedule is generating, POs queue. | When a contract is ratified with no open contingencies. |
| i | Sold, Contingent | Same as f but the contract has at least one open contingency (financing, sale of current home). | When a contract is ratified with contingencies still open. |
| p | Production Inventory | An inventory contract is being built without a buyer. Schedule and POs run as on a sold home. | Set on inventory accept, or on a buyer cancel that releases the lot. |
| c | Closed | Money has changed hands. Lot is locked from edits. Warranty period started. | Final state. |
| v | Model Home | Used as a model. Carries inventory cost; doesn't follow the normal sales rules. | Special. |
| w | R&D Home | Research / prototype home — a "Spec" used to test new floor plans, materials, or features. | Special. |
| a | Job Cost Job | Internal cost-tracking job (e.g. amenity construction, sales-center build). | Special. |
| b | Non-Job | Misc cost bucket inside a project (e.g. project-level overhead). | Special. |
What drives a Lot.Status change
Section titled “What drives a Lot.Status change”Almost every change to Lot.Status is a side effect of a contract operation. The headline transitions: ratify drives m → f/i; close drives f/i → c; cancel drives f → p or p → z. See Contracts for the full cascades.
All Lot.Status transitions and the proc/script that drives each
| Lot.Status came from | Driven by |
|---|---|
s → m / p / v / w | spProcessContractAccept |
m → f / i | spProcessContractRatify (sale path) |
f / i → c | spProcessContractClose |
f → p | spProcessContractCancel (sale path) |
p → z | spProcessContractCancel (inventory path) |
c → f | Unclose a contract.sql (CSR script) |
Lot.SoldDate follows f/i. Lot.CloseDate follows c. Lot.ProdRatifiedDate is set the first time an inventory home is ratified and is not moved by later events.
Helper columns alongside Status
Section titled “Helper columns alongside Status”Lot.Status is just the headline. Several sibling columns clarify why the lot is where it is.
The five helper columns (StatusAtStart, PendingStatus, Reserved, LockedAfterClose…)
| Column | What it tells you |
|---|---|
StatusAtStart | What the status was when the build started (used to detect spec vs. presold). |
PendingStatus | If a status change is in flight (e.g. closing batch is mid-run). |
Reserved / ReservedExpDate | Buyer is holding the lot but hasn’t signed; expires automatically. |
LockedAfterClose / LockedAfterCloseDate | After close, prevents accidental edits to the closed lot. |
Quick checks
Section titled “Quick checks”Counts by status across the whole company
SELECT s.LotStatusName, COUNT(*) AS LotsFROM dbo.Lot lJOIN dbo.LotStatus s ON s.LotStatusID = l.StatusGROUP BY s.LotStatusNameORDER BY Lots DESC;