Path 2 covers the case where the company builds product into inventory for future sales / sell-through. No parent SO. No customer side. No Finance handoff on the WO itself. Build reasons include reorder_point breach, sales forecast, bid pre-build (e.g. B5875 ahead of QBL), USDA drawdown commit (e.g. barrel cheddar processing), or R&D pilot run. WO is entered standalone (workorder.createdfrom = NULL), item / quantity / location / component requirements are confirmed, production runs, the Assembly Build record is entered in NetSuite (Mike approves at /assembly-build.html), FG is added to inventory at the correct location, components are consumed through the build process, and the WO closes naturally. The finished goods remain available for future Sales Orders — Finance enters then. Workflow: wo_lifecycle_inventory_build_path.
| Step | NS record | Field | Sample value | Status |
|---|---|---|---|---|
| 3 | WorkOrd | bodyFields.tranid | "WO-4499" | REAL |
| 3 | WorkOrd | bodyFields.createdfrom | NULL (distinguishes Path 2 from Path 1) | REAL |
| 3 | WorkOrd | bodyFields.assemblyitem | "RSF-BURR-KIT" | REAL |
| 3 | WorkOrd | bodyFields.quantity | 480 | REAL |
| 3 | WorkOrd | bodyFields.location | 3 (Heartland) | REAL |
| 3 | WorkOrd | bodyFields.memo — operator note (NOT customer PO# — no parent SO) | "bid B5875 pre-build for QBL" · field still TBD globally pending Mike review | TBD — Mike review pending (semantic: memo carries operator note on Path 2; on Path 1 expected to carry customer PO#) |
| 3 | WorkOrd | bodyFields.custbody_build_reason | "bid_pre_build" | REAL |
| 7 | (WkOrdIss) | per component consume | TORTILLA-LG -480 · BEAN-1LB -480 · SAUCE-PAC -480 | REAL |
| 8 | AsmBuild | bodyFields.tranid | "AB-1902" | REAL |
| 8 | AsmBuild | bodyFields.createdfrom | 4499 (WO id) | REAL |
| 8 | AsmBuild | bodyFields.assemblyitem | "RSF-BURR-KIT" | REAL |
| 8 | AsmBuild | bodyFields.quantity_built | 472 | REAL |
| 8 | AsmBuild | bodyFields.waste | 8 | REAL |
| 8 | AsmBuild | bodyFields.location | 3 (Heartland) | REAL |
| 9 | (none) | inventory_balance.quantityavailable += 472 | D1 UPDATE for FG at location_id = 3 | REAL |
| 10 | (WkOrdIss) | formal component consumption posted | per component | REAL |
| 11 | WorkOrd | bodyFields.status | "Built" | REAL |
| 11 | (event) | events.event_type | "workorder.built" | REAL |
| 12 | (none) | FG allocatable to future SOs | inventory_balance row remains until consumed by future SO | REAL |
Path 2 has no customer PO# threading because there is no parent SO. The WO is standalone (workorder.createdfrom = NULL). Mike's notes confirm PO# threading on SO/PO/Invoice/Vendor Bill chains — Path 2 is the only chain where this does not apply.
bodyFields.memo = freeform operator note (e.g. "bid B5875 pre-build for QBL"). Not customer PO# (none exists).createdfrom = 4499 (WO id) — ties to WO; WO has no parent SO. Chain terminates at FG availability.Schema-layer TBD reminder: The WO.memo field is still TBD globally pending Mike's review of the Path 1 customer PO# threading. On Path 2 the field is freeform (no PO# semantic), so the TBD does not block this path's flow — but every WO Schema reference is marked TBD until confirmed.
wo_lifecycle_inventory_build_path · risk 2 REALorigin = inventory_build. Standalone WO — no parent SO, no Item Fulfillment, no Finance handoff on the WO itself. Finance enters later when the FG is sold via a future SO. Path 2 terminates at WO close; FG remains available for future Sales Orders.work_orders · assembly_bom · assembly_builds · inventory_balance · transactions · events · proposed_actions/assembly-build.html → proposed_actions → Mike approvesreorder_point · forecast · bid_pre_build · usda_drawdown · rd_pilot · other