Files
SGF/packages/inventory-write
2026-11-02 20:29:34 +02:00
..
2026-11-02 20:29:34 +02:00
2026-11-02 20:29:34 +02:00
2026-11-02 20:29:34 +02:00

Receipt movement writer

ReceiptMovementWriter is the single extracted writer for a new accepted physical receipt line. Source code comes from the former insert in Purchasing ReceiptWorkflow; versioned artifacts are distributed locally, verified by manifest and never replaced with different contents.

The host owns the company lock, current actor/policy/conflict checks, order eligibility, quantities/units/quality, explicit warehouse/item mapping, lots, downstream signals and audit. It must call the writer within that same transaction, with an authorisation callback. The writer is not a public receipt intake API and must not be used to reconstruct/backfill historical effects or bypass ReceiptWorkflow.

The writer reads the scoped receipt/line, checks physical acceptance and original receiver, freezes a source hash, locks/revalidates that hash and writes one receipt_in using the existing unique goods_receipt_item_id. It preserves the original snapshot and adds origin hash/reference. A compatible receipt with the same hash reuses its movement. A stale hash or a legacy/incompatible existing movement is refused; old rows are never rewritten/adopted automatically. Parent final status/number are excluded from the hash because native finalisation occurs later in the same transaction.

No independent commit, second balance or audit engine is introduced. Failure after insert rolls back with the host's receipt/lots/audit. Stock issues, transfers, corrections, consumption, payments and accounting are not implemented here. Tested on isolated PostgreSQL; no other-driver or deployment claim.

See delivery and evidence.