NS sales order — Path 3 · dropship (POs FROM SO + vendor side)

SO entry → classify line as dropship → PO created FROM SO → vendor ships → Item Receipt → Item Fulfillment → ★ Finance alert (STUB) → Invoice → payment → close · Vendor Bill cycle parallel

Path 3 covers drop-ship items where the vendor ships product directly to the customer (or to GFS for crossdock). For each dropship_line, a Purchase Order is created FROM the SO (purchaseorder.createdfrom = so.id), preserving the SO ↔ PO link. The customer PO# threads via PO.bodyFields.memo = "72622" and PO.lineFields.links[].tranid = "1217 / 72622" (SO tranid combo). After Item Receipt closes the PO line, the Vendor Bill is entered carrying that same threading on memo / tranid / initialtranid. Workflow: so_lifecycle_dropship_path.

PATH 3 REAL PO.memo + lineFields.links[].tranid + VendBill threading ★ Finance alert pending NS automation

Pipeline — Path 3 deep view (PO + vendor side)

idle
Path 3 dropship — PO + vendor-bill chain with field-level depth + customer PO# threading 01 / Email intake 02 / SO entry (otherrefnum = customer PO#) 03 / PO created FROM SO (memo + lineFields.links[].tranid) 04 / Vendor ships · Item Receipt 05 / Item Fulfillment to customer 06 / ★ Finance alert (STUB) 07 / Customer invoice · payment · close 08 / Vendor side · Vendor Bill (memo + tranid + initialtranid) EMAIL INTAKE. SAMPLE: Driscoll order includes 3 dropship lines from Cardinal Foods vendor. STATUS: REAL customer email intake orders@ / danielle@ PO# 72622 in body EXTERNAL · INTAKE i SALES ORDER (NS SalesOrd). FIELDS WRITTEN bodyFields.tranid = "1217" bodyFields.otherrefnum = "72622" (customer PO#) THREADING ORIGIN otherrefnum + tranid will both feed Path 3 records downstream STATUS: REAL Sales Order created in NetSuite otherrefnum = "72622" · tranid = "1217" 3 dropship lines D1: transactions + so_lines BACKEND · NS SalesOrd · THREAD START i CLASSIFY LINE — operator identifies dropship line. LOGIC: items.dropship = true OR items.special_order = true ACTION: dispatch so_lifecycle_dropship_path STATUS: REAL (operator) classify line · dropship = true vendor_id = 891 (Cardinal Foods) dispatch so_lifecycle_dropship_path SECURITY · classifier · sub-contract i PURCHASE ORDER CREATED FROM SO — preserves SO ↔ PO link + threads customer PO#. NS RECORD: PurchOrd FIELDS WRITTEN bodyFields.tranid = "PO-7833" bodyFields.createdfrom = 1217 (SO id) bodyFields.memo = "72622" (CUSTOMER PO# THREADING) bodyFields.entity = 891 (vendor: Cardinal Foods) lineFields[].links[0].tranid = "1217 / 72622" (SO tranid + customer PO# combo) THREADING PO.memo carries customer PO# forward lineFields.links[].tranid carries the combo string for vendor reference STATUS: REAL Purchase Order created FROM SO createdfrom = 1217 · tranid = "PO-7833" bodyFields.memo = "72622" (customer PO# thread) lineFields.links[].tranid = "1217 / 72622" MESSAGEBUS · NS PurchOrd · PO# THREAD → i TRANSMIT PO TO VENDOR. TODAY: manual (email PDF to Cardinal Foods) FUTURE STUB: auto-transmit (EDI 850 outbound) STATUS: REAL (manual) · STUB (auto) transmit PO to vendor manual: email PDF to vendor today STUB: EDI 850 outbound Cardinal Foods acknowledges CLOUD · vendor channel i VENDOR SHIPS — directly to customer or to GFS crossdock. EXTERNAL ACTION vendor: Cardinal Foods picks + packs + ships carrier: vendor-managed today STATUS: REAL (external) vendor ships Cardinal Foods picks + ships direct to customer OR crossdock tracking + ETA captured EXTERNAL · vendor side i ITEM RECEIPT — closes the PO line; inherits PO linkage. NS RECORD: ItemRcpt FIELDS WRITTEN bodyFields.createdfrom = "PO-7833" (PO id) bodyFields.status = "Received" bodyFields.received_at = datetime INHERITANCE inherits PO.memo + lineFields.tranid via NS std linkage INVENTORY EFFECT (crossdock case only) inventory_balance.quantityavailable += qty (transient, drops on IF) STATUS: REAL Item Receipt against PO createdfrom = "PO-7833" (PO id) PO.memo "72622" inherits via NS std linkage PO line closes; inventory transient (crossdock) BACKEND · ItemRcpt · PO# threads via PO i CLOSE PO LINE. SQL: UPDATE purchase_orders SET status='Received' WHERE id=7833 STATUS: REAL PO line closed UPDATE purchase_orders status = 'Received' DATABASE · PO close i ITEM FULFILLMENT. FIELDS bodyFields.createdfrom = 1217 (SO id) bodyFields.otherrefnum = "72622" (inherits from SO) STATUS: REAL Item Fulfillment to customer createdfrom = 1217 (SO id) · otherrefnum = "72622" (from SO) BACKEND · item_fulfillments · PO# THREAD i ★ FINANCE ALERT (STUB). EVENT: events.so.finance_alert_fired STATUS: STUB ★ automation alert → Finance events.so.finance_alert_fired · STUB until NS workflow FINANCE · ★ KEY HANDOFF i CUSTOMER INVOICE. FIELDS bodyFields.otherrefnum = "72622" (threads from SO) bodyFields.createdfrom = 1217 STATUS: REAL Customer Invoice otherrefnum = "72622" createdfrom = 1217 BACKEND · CustInvc i MONITOR TERMS · PAST DUE → DUNNING. STATUS: REAL monitor terms v_customer_ar_aging bucket tracking DATABASE · AR aging i PAST DUE → ar_aging_action_plan. STATUS: REAL dunning loopback ar_aging_action_plan SECURITY · HITL i CUSTOMER PAYMENT APPLIED. STATUS: REAL Customer Payment CustPymt · appliedto DATABASE · CustPymt i SO CLOSED. STATUS: REAL SO → Closed status = 'Closed' BACKEND · close i VENDOR BILL ENTERED — parallel to customer-side invoice cycle. NS RECORD: VendBill FIELDS WRITTEN bodyFields.tranid = "1217 / 72622" bodyFields.initialtranid = "1217 / 72622" bodyFields.memo = "72622" (customer PO# threading) bodyFields.createdfrom = "PO-7833" (PO id) bodyFields.entity = 891 (Cardinal Foods) THREADING (all three fields carry customer PO#) memo = "72622" tranid = "1217 / 72622" initialtranid = "1217 / 72622" STATUS: REAL Vendor Bill entered (Cardinal Foods) bodyFields.memo = "72622" bodyFields.tranid = "1217 / 72622" bodyFields.initialtranid = "1217 / 72622" createdfrom = "PO-7833" MESSAGEBUS · VendBill · CUSTOMER PO# THREAD i VENDOR BILL PAID per vendor terms. NS RECORD: VendPymt FIELDS bodyFields.appliedto = "VB-2244" bodyFields.amount = vendor cost (lower than customer invoice) STATUS: REAL Vendor Bill paid VendPymt · per vendor terms appliedto = "VB-2244" DATABASE · VendPymt i VENDOR SIDE COMPLETE. event: vendor_bill.paid STATUS: REAL vendor side complete event: vendor_bill.paid CLOUD · vendor cycle done i vendor-side parallel cycle ↓ LEGEND Path 3 dropship lanes (customer + vendor) ★ Finance handoff (STUB)

NS records created / updated · field-level detail (Path 3)

StepNS recordFieldSample valueStatus
2SalesOrdbodyFields.otherrefnum (thread start)"72622"REAL
2SalesOrdbodyFields.tranid"1217"REAL
4PurchOrdbodyFields.createdfrom1217 (SO id)REAL
4PurchOrdbodyFields.memo — customer PO# threading"72622"REAL
4PurchOrdlineFields.links[].tranid — SO+PO# combo"1217 / 72622"REAL
4PurchOrdbodyFields.entity — vendor891 (Cardinal Foods)REAL
7ItemRcptbodyFields.createdfrom"PO-7833"REAL
7ItemRcpt(inherits) memo via NS std linkage from PO"72622"REAL
9ItemShipbodyFields.createdfrom1217 (SO id)REAL
9ItemShipbodyFields.otherrefnum"72622"REAL
10(event)events.event_type"so.finance_alert_fired"STUB
11CustInvcbodyFields.otherrefnum"72622"REAL
16VendBillbodyFields.memo — customer PO# threading"72622"REAL
16VendBillbodyFields.tranid"1217 / 72622"REAL
16VendBillbodyFields.initialtranid"1217 / 72622"REAL
16VendBillbodyFields.createdfrom"PO-7833"REAL
17VendPymtbodyFields.appliedto"VB-2244"REAL

Customer PO# threading on Path 3 (PO + vendor side)

Path 3 carries the most threading fields of any path. The customer PO# ("72622") appears in 7+ NS field positions across 5 NS records:

Single-grep recipe across the dropship chain: grep "72622" across transactions.otherrefnum + purchase_orders.memo + customer_invoices.otherrefnum + vendor_bills.memo + vendor_bills.tranid lights up every record — customer side and vendor side.

Sub-contract structured detail

CTR so_lifecycle_dropship_path · risk 3 REAL

Sub-contract dispatched from the master when an so_line classifies as dropship_item or special_order. Carries the most customer PO# threading of any path: PO + Vendor Bill both inherit/carry the thread on multiple fields.
Fan-out targets
create_po · vendor_transmit · item_receipt · item_fulfillment · finance_invoice_review · invoice_customer · payment_apply · vendor_bill_enter · vendor_bill_pay · close_so
Tables touched
purchase_orders · item_receipts · item_fulfillments · customer_invoices · customer_payments · payment_applications · vendor_bills · vendor_payments · transactions · events
Vendor-side
runs parallel to customer-side invoice/payment; separate cash cycle
Threading verify_check
VendBill.memo == PO.memo == SO.otherrefnum — verify_check enforces customer PO# threading invariant end-to-end