An approved supply request can still run short before the items are issued. Staff need to see what can be supplied now, and a failed issuance must leave stock and request history consistent.
Approval does not consume stock
Approval records the requested quantities without deducting or reserving stock. Issuance checks availability again. This lets demand be approved while keeping the final stock decision at the point the items leave inventory.
Commit the whole request together
The service updates the request, deducts its items and records the audit entry inside one database transaction. If the second item is unavailable, the first deduction must roll back too.
The fulfillment regression tests make this concrete: requesting three paper reams and nine ink units fails when only eight ink units remain. Both original stock counts must survive unchanged. The suite also covers repeat fulfillment.
- 01Approve demand
- 02Recheck available stock
- 03Commit issuance or roll back
Make available stock explicit
The inventory view separates on-hand stock, quantities held aside and what can be issued. Request rows show shortages before an operator opens the detail view. Approval and stock availability remain separate states.

Keep checks reproducible
CI provisions PostgreSQL, applies migrations and runs integration and browser checks. A runner compatibility fix pins Ubuntu 24.04 for Playwright, keeping the test environment reproducible as hosted runner images change.
Demo scope
The public entry opens a private, 24-hour workspace with seeded records. The screens were inspected without issuing stock; the transaction behavior above is supported by source and regression tests, not a completed live issuance run. Historical project attribution remains in the repository.