Stock tracking
Stock tracking tells you how much of each product is where, and how it got there. For each product (or variant) and location, Modulix keeps the quantity on hand, the quantity reserved for sales orders, and what is available. Every change is recorded as a numbered movement in a ledger that is never edited afterwards.
Before you begin
- The Inventory module must be enabled, with at least one warehouse.
- Only catalog products with Track inventory turned on have stock. Services never do. See Product catalog.
- To view stock you need
inventory.stock.read. To receive, issue and adjust stock by hand you needinventory.stock.adjust. See Permissions.
Key concepts
| Quantity | Meaning |
|---|---|
| On hand | Physically at the location. |
| Reserved | Promised to confirmed sales orders and not delivered yet. |
| Available | On hand minus reserved: what you can still promise. |
Movements. Every change to on-hand stock is a movement with a number (MV-000001), one of four types:
| Type | Created by |
|---|---|
| Receipt | Receiving a purchase order, or Receive on the Stock tab. |
| Shipment | Delivering a sales order, or Issue on the Stock tab. |
| Adjustment | Adjust on the Stock tab, with a reason. |
| Transfer | Shipping and receiving a stock transfer. |
Quantities and units. Quantities must fit the product's unit of measure: whole numbers for Each or Box, up to 3 decimals for Kilogram, Liter or Meter, and so on.
How documents move stock
Purchase order ──Receive──▶ Receipt ──▶ On hand ▲
Sales order ──Confirm──▶ Reserved ▲ (Available ▼)
──Deliver──▶ Shipment ──▶ On hand ▼, Reserved ▼
Transfer ──Ship──▶ leaves source (in transit) ──Receive──▶ arrives at destination
- Purchase orders. Receiving a purchase order adds stocked items to the order's warehouse, at its default location. The movement's document is the purchase order number. See Purchase orders.
- Sales orders. Confirming a sales order reserves its stocked items in the order's warehouse, as much as is available, location by location (the warehouse's default location first). Reserve again tries again after new stock arrives. Delivering ships the items, taking the reserved stock first, and records a shipment with the order number. Cancelling an order releases what was reserved for it. See Sales orders.
- Transfers move stock between places without changing your total. See Stock transfers.
Use Receive, Issue and Adjust on the Stock tab only for stock that comes in or goes out without an order.
View stock levels
- Select Inventory in the main menu. The Stock tab opens.
- Find what you need:
- Search by product or SKU.
- Filter by Warehouse.
- Use the Stock filter: Nothing available shows rows with nothing left to promise; Below zero shows negative stock.
- Sort by On hand, Reserved or Available.
Each row is one product (or variant) at one location, with its SKU, Warehouse, Location, On hand (with its unit), Reserved and Available. Negative quantities are shown in red. Rows with nothing on hand and nothing reserved are hidden. Select a product name to open its page.
Stock on a product page
Each stocked product's page has a Stock section with its total On hand, Reserved and Available, a table per warehouse and location (and per variant, if it has variants), and Reserved for, the orders holding its stock. Select View movements to open the ledger.
Receive stock without a purchase order
Use this for opening stock, customer returns, or items found.
- On the Stock tab, select Receive.
- In Receive stock, choose the Warehouse (leave empty for the default warehouse) and, optionally, a Location (otherwise the warehouse's Default location).
- Enter a Reference, for example a delivery note number.
- For each item, choose the product or variant and enter the quantity. Select Add an item for more lines.
- Optionally add a Note, then select Save.
You see how many movements were recorded, for example 3 movements recorded.
To load your opening stock, receive all items in one go per warehouse with a reference such as Opening stock.
Issue stock without a sales order
Use this for samples, internal use or other stock leaving without an order.
- On the Stock tab, select Issue.
- In Issue stock, choose the Warehouse, an optional Location and a Reference.
- Add the items and quantities, and an optional Note.
- Select Save.
An issue cannot take more than is on hand at the location unless negative stock is allowed (see Settings).
Adjust stock
Adjust stock to correct it after a count, damage or a loss. Every adjustment is recorded with its reason.
- On the Stock tab, select Adjust.
- In Adjust stock, choose the Warehouse and, optionally, the Location.
- Choose a Reason: Stock count, Damaged, Lost, Stolen, Found, Expired, Correction or Other.
- Choose how to enter quantities:
- Add or remove: enter the change. Positive adds, negative removes (for example
-2for two damaged items). - Quantity counted: enter what you counted. Modulix records the difference with what is on hand.
- Add or remove: enter the change. Positive adds, negative removes (for example
- Add the items, an optional Note, and select Save.
If every count matches the stock, nothing is recorded and you see Nothing to record: the counts match the stock.
The movements ledger
The Movements tab is the stock ledger: every receipt, shipment, adjustment and transfer, newest first.
| Column | What it shows |
|---|---|
| Date | When the movement happened. |
| Number | MV-000001, MV-000002… |
| Type | Receipt, Shipment, Adjustment or Transfer. |
| Product | The product or variant. |
| Quantity | Negative for stock leaving a location. |
| From / To | The locations (or warehouses) the stock left and entered. |
| Reason | For adjustments. |
| Document | The purchase order, sales order, transfer or reference it came from, for example PO-00012. |
| By, Note | Hidden by default; add them with the column chooser. |
Search with Search by number, product, SKU or document, filter by Type, save views and export the ledger. Movements cannot be edited or deleted. To correct a mistake, record an adjustment.
Negative stock
By default, a shipment, issue, adjustment or transfer that would take more than is on hand at a location is refused, with a message such as Only 4 ea of Widget on hand at STOCK. Receipts are never refused.
If your organization sometimes ships before stock is recorded, an administrator can allow stock to go below zero (see Settings). Negative quantities then appear in red, and the Below zero filter on the Stock tab finds them.
Settings
An administrator with inventory.manage can change this in Settings (in the administration menu), on the Inventory tab:
| Setting | Default | Effect |
|---|---|---|
| Allow stock to go below zero (otherwise shipments and adjustments beyond what is on hand are refused) | Off | When off, shipments, issues, adjustments and transfers that would take more than is on hand at a location are refused. When on, they are allowed and stock can become negative. |
Rules that protect stock history
- Only products that track stock can move. A service, or a product with Track inventory off, is refused.
- Products, variants, warehouses and locations that stock has moved through cannot be deleted. Make them inactive instead.
- Inactive warehouses and locations cannot be used for new movements.
Permissions
| Permission | What it allows | Granted by default to |
|---|---|---|
inventory.stock.read | View stock, movements, transfers, warehouses and locations | Admin, Member |
inventory.stock.adjust | Receive, issue and adjust stock | Admin |
inventory.manage | Manage warehouses, locations and inventory settings | Admin |
Receiving purchase orders needs purchasing.order.receive, and delivering sales orders needs sales.order.fulfill, not inventory.stock.adjust. Both are granted to members by default, so warehouse staff can work orders without being able to adjust stock freely.