Skip to main content

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 need inventory.stock.adjust. See Permissions.

Key concepts​

QuantityMeaning
On handPhysically at the location.
ReservedPromised to confirmed sales orders and not delivered yet.
AvailableOn 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:

TypeCreated by
ReceiptReceiving a purchase order, or Receive on the Stock tab.
ShipmentDelivering a sales order, or Issue on the Stock tab.
AdjustmentAdjust on the Stock tab, with a reason.
TransferShipping 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​

  1. Select Inventory in the main menu. The Stock tab opens.
  2. 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.
Stock on hand, reserved and available per product and location.

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.

A product's stock per location, and what it is reserved for.

Receive stock without a purchase order​

Use this for opening stock, customer returns, or items found.

  1. On the Stock tab, select Receive.
  2. In Receive stock, choose the Warehouse (leave empty for the default warehouse) and, optionally, a Location (otherwise the warehouse's Default location).
  3. Enter a Reference, for example a delivery note number.
  4. For each item, choose the product or variant and enter the quantity. Select Add an item for more lines.
  5. Optionally add a Note, then select Save.

You see how many movements were recorded, for example 3 movements recorded.

tip

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.

  1. On the Stock tab, select Issue.
  2. In Issue stock, choose the Warehouse, an optional Location and a Reference.
  3. Add the items and quantities, and an optional Note.
  4. 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.

  1. On the Stock tab, select Adjust.
  2. In Adjust stock, choose the Warehouse and, optionally, the Location.
  3. Choose a Reason: Stock count, Damaged, Lost, Stolen, Found, Expired, Correction or Other.
  4. Choose how to enter quantities:
    • Add or remove: enter the change. Positive adds, negative removes (for example -2 for two damaged items).
    • Quantity counted: enter what you counted. Modulix records the difference with what is on hand.
  5. Add the items, an optional Note, and select Save.
Adjusting stock after a physical count.

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.

The stock ledger: every movement, never changed afterwards.
ColumnWhat it shows
DateWhen the movement happened.
NumberMV-000001, MV-000002…
TypeReceipt, Shipment, Adjustment or Transfer.
ProductThe product or variant.
QuantityNegative for stock leaving a location.
From / ToThe locations (or warehouses) the stock left and entered.
ReasonFor adjustments.
DocumentThe purchase order, sales order, transfer or reference it came from, for example PO-00012.
By, NoteHidden 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:

SettingDefaultEffect
Allow stock to go below zero (otherwise shipments and adjustments beyond what is on hand are refused)OffWhen 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​

PermissionWhat it allowsGranted by default to
inventory.stock.readView stock, movements, transfers, warehouses and locationsAdmin, Member
inventory.stock.adjustReceive, issue and adjust stockAdmin
inventory.manageManage warehouses, locations and inventory settingsAdmin

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.