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.
| Input | Check basis | Expected |
|---|---|---|
| Transfer8; accept5; reject1; pending2 | destination already stocks SKU | destination available+5 |
| Never shipped2; cancellation approved | between owned locations | record source return; not destination receipt |
| 2 short units later found | correct original receipt record | no second independent receipt |
Supplier acceptance procedure
- Record source, destination, transfer/shipment ID and per-SKU event ownership before testing sync.
- Reconcile accepted, rejected, cancelled and outstanding quantities; do not equate all received units with available units.
- 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