FIELD NOTES · ACCEPTANCE EXERCISES

Transfer receipts need a location-by-location state contract

Moving stock between branches is not a new purchase and not a new sale. Before connecting warehouse data to a website, define which event changes which location. Otherwise a partial receipt can increase the source, destination and storefront simultaneously.

Source-bound fact

The transfer workflow separates accepted, rejected and never-shipped cancelled quantities; partial receipts can remain in progress. Official reference · Checked 17 October 2026.

Filled synthetic acceptance example

Synthetic teaching example, not a client case or a real-store assessment. On narrow screens, scroll to read the complete table.

InputCheck basisExpected
Transfer8; accept5; reject1; pending2destination already stocks SKUdestination available+5
Never shipped2; cancellation approvedbetween owned locationsrecord source return; not destination receipt
2 short units later foundcorrect original receipt recordno second independent receipt

Supplier acceptance procedure

  1. Record source, destination, transfer/shipment ID and per-SKU event ownership before testing sync.
  2. Reconcile accepted, rejected, cancelled and outstanding quantities; do not equate all received units with available units.
  3. Replay an authorised correction and confirm it updates the original receipt instead of creating an extra stock increase.

Interpret the output

Five accepted units and one rejected unit explain six processed units, leaving two open. The fixture checks this count only. It does not emulate reservations at dispatch, concurrent checkouts or app event idempotency. Those need the actual system’s event records.

Explicit limits

Owned-location example; supplier-origin cancellation differs. Acceptance may not make a SKU sellable until stocked at destination. No live stock mutations or logistics service claims.

Replay the finite teaching model

Save both files in one folder. With Node22 or newer, run the command below. JSON contains explicit inputs and expected results. The script processes synthetic data only, with no network, credentials, payment or API calls. Passing proves the finite model only, not a live integration.

Filled inputs and expectations · Inspectable teaching script

node check.mjs transfer-receipt-state-contract.json