Transferring Stock Between Locations
The Stock Move feature lets you transfer inventory from one location to another, or between zones within the same location. This guide walks through every aspect of the stock move form and how transfers work internally.
Opening the Stock Move Form
You can open the stock move form in several ways:
- Inventory > Stock Moves > New Move from the main menu
- Right-click an item in the Inventory Browser and select "Move Stock"
- From the Reorder Dashboard by clicking "Suggest Transfer" on an alert
- From the Transaction History by double-clicking a Move transaction to view/void it
Form Layout
The stock move form is divided into several sections:
Item Selection
At the top of the form, select the item to move:
- Browse — Opens the Inventory Browser to select an item. Virtual Kits (Bundles) are excluded because they do not hold physical stock.
- Search — Opens a search dialog where you can enter an item ID, name, model, reference, or SKU. The search excludes Virtual Kits (package_type != 1). If multiple results match, a selection dialog appears.
- Item Name — Displays the selected item's name. Pressing Enter in this field triggers the search.
If a disabled item is selected, AccuArk displays a warning: "This item is currently disabled." You can still move disabled items, but the warning ensures you are aware.
From Location and Zone
- From Location — Dropdown listing all locations the current user has access to (with view_transactions = 'y'). Each entry shows the location name and address.
- From Zone — A StorageZonePicker control that loads zones for the selected From Location. This is optional; leave it unselected to move stock from the location level without specifying a zone.
- Current Quantity — Shows the current stock quantity at the selected From Location for the chosen item. Updates automatically when you change the item or location.
To Location and Zone
- To Location — Dropdown listing all accessible locations, same as the From Location dropdown.
- To Zone — StorageZonePicker for the destination. Loads zones when the To Location changes.
- Current Quantity — Shows the current stock at the destination location.
Move Details
| Field | Description |
|---|---|
| Quantity to Move | The number of units to transfer. Supports fractional quantities (e.g., 2.50). Must be a positive number. |
| Move Reference | An optional reference code for tracking (e.g., a transfer request number) |
| Move Date | The date of the transfer. Defaults to today. |
| Notes | Free-text notes about the transfer |
Quantity Previews
As you enter the quantity to move, the form calculates and displays in real time:
- Quantity After Move (From) = Current From Quantity - Quantity to Move
- Quantity After Move (To) = Current To Quantity + Quantity to Move
This helps you verify the impact of the transfer before committing.
Validation Rules
Before saving, AccuArk validates:
- Quantity must be positive — Zero or negative quantities are rejected
- Item must be selected — You cannot save without choosing an item
- Both locations required — From and To locations must be selected
- Different locations or different zones — If the From and To locations are the same, you must select different zones. Moving stock from location A to location A with the same zone (or no zone) is rejected with the message: "Source and Destination locations must be different, or select different storage zones for intra-location moves."
- Sufficient stock — The From Location must have enough stock. If the quantity to move exceeds available stock, the message shows: "Insufficient stock at source. Available: X, Requested: Y"
- Confirmation — A confirmation dialog summarizes the move before executing
How the Transfer Works Internally
Stock moves are processed as an atomic transaction:
- A
the batch processing engineis created - Two inventory updates are queued:
- Negative at the source: item ID + From Location + (-Quantity) + From Zone
- Positive at the destination: item ID + To Location + (+Quantity) + To Zone
- A stock transaction log record is created with type "Move", recording all details including from/to zones
- A database transaction is started
- All updates are executed within the transaction
- The transaction is committed
If any step fails, the entire transaction is rolled back. No partial moves are possible.
Save Options
The form provides two save buttons:
- Save & New — Saves the current move, then resets the form so you can enter another move immediately
- Save & Close — Saves the current move and closes the form
Voiding an Existing Move
When you open a previously saved move (e.g., by double-clicking a Move transaction in the transaction history), the form switches to view/void mode:
- All fields become read-only (item, locations, zones, quantity, reference, date, notes)
- The buttons change to Void & New and Void & Close
- The quantity labels change to "Quantity After/If Void" to show what the stock levels will be if you reverse the move
What Voiding Does
Voiding a move reverses the original transfer atomically:
- Stock is added back to the original From Location and From Zone
- Stock is removed from the original To Location and To Zone
- The original transaction record is updated:
is_voidis set to 'y' and "[VOIDED]" is appended to the notes - All reversals happen in a single database transaction
If the transaction has already been voided (is_void = 'y'), clicking void again shows: "Transaction is already void."
Tips
- Use zone-to-zone moves within a location — Stock moves are not just for cross-location transfers. You can move stock between zones at the same location, which is useful for reorganizing warehouse storage.
- Add references for traceability — Use the Move Reference field to link the transfer to an internal request or approval number
- Check quantities before and after — The real-time quantity previews help prevent over-transferring from a source location
- Void promptly if errors occur — If a move was entered incorrectly, void it as soon as possible to restore accurate stock levels. Do not create a "reverse" move manually; always use the void function to maintain a clean audit trail.
- Virtual Kits cannot be moved — Since Virtual Kits do not track their own stock (their components do), the Stock Move form blocks them automatically