Nothing edits a quantity. Receipts, issues, transfers, adjustments and count variances are all movement entries with a reason code, a source document and an actor. Stock on hand at any location and for any batch is the sum of its movements. Every figure can therefore be explained by the entries behind it, and a discrepancy becomes a question with an answer.
Availability is three separate ideas kept separate. On-hand is what is physically there. Reserved is what has been promised to orders. Available-to-promise is on-hand less reserved plus inbound within a lead-time horizon. Sales sees available-to-promise, the warehouse sees on-hand, and the two are never conflated. Conflating them is the specific confusion behind most overselling.
Batch handling is first class. Stock is held per batch with its expiry, and picking allocates first-expiring-first-out by default with an override that must be justified. That single rule is the difference between rotating stock and writing it off.
Counting is a workflow, not an edit. A cycle count creates a task for a location, records counted quantities against the system position, and posts the difference as a variance movement with a reason. Variances are then reportable by location, item and counter — the reporting that turns a recurring discrepancy into a findable cause.