How Stock Works Across Multiple Locations
AccuArk is designed from the ground up for multi-location businesses. Items exist once in the system, but stock quantities are tracked independently at each location. This guide explains the architecture and how it affects your daily operations.
Core Architecture
The multi-location stock model has two layers:
- Global Item Catalog — Each inventory item has one record in the
inventory_itemtable. The item's name, SKU, barcode, price, cost, description, category, class, and settings are shared across all locations. - Per-Location Stock — Each location maintains its own stock quantity in the
inventory_stock_locationtable. This table stores the item ID, location ID, quantity, last cost, and the timestamp of the most recent transaction.
This means:
- You define an item once and it is available at all locations
- Each location has independent stock levels that are tracked separately
- The item's
CurrentStockfield on the master record is an aggregate of all location quantities - Price and cost settings are global (the same item costs and sells for the same amount everywhere, unless overridden by location-specific promotions)
Stock at Location Level
The inventory_stock_location table tracks:
| Field | Description |
|---|---|
| item_id | The inventory item this record belongs to |
| location_id | The location where this stock is held |
| quantity | The current stock quantity at this location |
| last_cost | The cost from the most recent purchase at this location |
| latest_transaction | The date and time of the last stock change at this location |
Each unique combination of item + location creates one record. This means an item stocked at 5 locations has 5 records in this table.
Viewing Stock Across Locations
On the item form, the Stock tab shows a grid labeled "Stock in Locations" (dgvStockInLocations). This grid displays:
- Every location where the item has a stock record
- The quantity at each location
- The total across all locations
This gives you a complete picture of how inventory is distributed across your business.
User Access and Location Visibility
Not every user sees every location. AccuArk uses the user_location_access table to control which locations a user can view and interact with. Specifically, the view_transactions field must be set to 'y' for a user to see a location's data.
This access control affects:
- Location dropdowns — On forms like Purchase Orders, Stock Moves, Stock Adjustments, and Reports, the location dropdown only shows locations where the current user has access with view_transactions = 'y'
- Stock visibility — Users only see stock quantities for their accessible locations
- Transaction history — Transaction logs are filtered by accessible locations
- Reorder alerts — The reorder dashboard only shows alerts for accessible locations
Location Scoping on Key Operations
Every major inventory operation is scoped to a specific location:
| Operation | Location Behavior |
|---|---|
| Purchase Orders | Each PO is scoped to one location. All received stock goes to that location. |
| Stock Adjustments | Each adjustment targets a specific location (and optionally a zone within it). |
| Stock Moves | Transfers require a From Location and a To Location. |
| Cycle Counts | Each count session covers one location. |
| Reorder Rules | Rules are set per-item per-location (e.g., different reorder points at each warehouse). |
| Reports | Reports include a location filter. Selecting "All" shows aggregate data; selecting a specific location shows only that location's stock. |
| POS Sales | Sales deduct stock from the location where the POS machine is registered. |
Item Location Availability
Items have a LocationsAvailability setting that controls where the item can be stocked and sold:
- "a" (All Locations) — The item is available at every location in the system
- Specific Location IDs — The item is restricted to only the listed locations
This is useful for location-specific products that should not appear in other locations' inventory browsers or POS systems.
Tips
- Set up locations before adding items — Having your location structure in place ensures items can be properly stocked from the start
- Grant location access thoughtfully — Only give users access to locations they actually need. This keeps their views clean and prevents accidental operations on the wrong location.
- Use the Stock tab to spot imbalances — Regularly check the Stock in Locations grid to identify locations that are overstocked or understocked relative to demand
- Remember that cost is global, stock is local — The item's WAC cost is a system-wide average. If you need to know the actual purchase cost at a specific location, check the last_cost field on the stock location record.
- Use stock transfers to balance inventory — When one location has excess stock and another is running low, use the Stock Move feature (see Article 67) to redistribute without placing a new purchase order