Stock module manual
The Stock module centralizes quantity tracking, stockout and threshold alerts, movements (procurement, sale, transfer, stocktake…), transfer / issue / return notes, locations & warehouses and valuation. It manages three modes : simple, by batch and by batch + expiry date.
Module overview
The Stock module reflects available quantities by item and by stock at all times. Every ERP operation (purchase, sale, transfer, return, stocktake, production) generates a movement that automatically adjusts the levels. Minimum thresholds trigger below-threshold or out-of-stock alerts.
Business goal
- Know available quantities in real time
- Be alerted on stockouts and minimum thresholds
- Trace every movement (in / out)
- Control batches and expiry dates
- Value the stock and returns
Target audience
- Warehouse clerks / logistics — manage levels and stocktakes
- Procurement — transfers and replenishment
- Management — valuation and oversight
The 3 stock management modes
Simple
A single quantity per item. No batch or date tracking. The most common mode.
By batch
Quantities broken down by batch number (production / receipt traceability).
By batch + expiry date
Batch and expiry date. Ideal for food processing and perishable goods.
Only one mode per stock
Each stock has one and only one mode (simple, by batch, OR by batch + expiry date). The mode is chosen when the stock is created and determines the split screens (batches / expiry dates) for transfer, issue and return notes.
The Stock module is fed by sales (issues) and purchases / receipts (receipts). Product records are managed in the Items module.
Access and navigation
Left-hand side menu: Stock. The submenu gives access to levels, movements, stocktakes, transfers, issues, returns, locations and warehouses.
Stocks & levels
The main screen lists the company's stocks with, at the top, summary cards (stocks in shortfall, items in shortfall, out of stock, nearly depleted). Each row carries a label, a type, an update date and a nature (receipt/purchase, or sale).
| Label⇅ | Type⇅ | Update⇅ | Nature | ||
|---|---|---|---|---|---|
| Central Warehouse | Location | 02/06/2026 | Purchasing stock | ||
| Field Seller Stock — M. ORABI 2 | Field seller | 02/06/2026 | Sales stock | ||
| POS Register — Shop 1 | POS register | 01/06/2026 | Sales stock |
Stock list columns
| Column | Description |
|---|---|
| Label | Name of the stock. An orange badge shows the number of items in shortfall for this stock. |
| Type | Field seller, Location or POS register. |
| Updated | Date of the last recorded movement. |
| Nature | Purchasing / receiving stock (main stock) or Sales stock. |
Stock detail: lines & alerts
The detail of a stock shows its lines: item, quantity, minimum threshold, unit price and, depending on the mode, batch and expiry date. The alert level is calculated relative to the threshold.
| Level | Condition | Signal |
|---|---|---|
| Available | Quantity > minimum threshold | None |
| Below threshold | 0 < Quantity ≤ minimum threshold | Needs replenishment |
| Out of stock | Quantity = 0 | Unavailable |
On a stock by batch + expiry date, each line additionally shows the batch number and the expiry date. Expired batches (or those expiring within 2 days) are hidden from selection screens.
Stock movements
Every quantity change generates a timestamped movement, logged with the old and new quantity, the type and the user. It is the complete log of stock in and stock out.
| Stock⇅ | Item⇅ | Old Qty | New Qty | Movement type | Date⇅ | User |
|---|---|---|---|---|---|---|
| Central Warehouse | SMART SUPERVISOR MODULE | 40.000 | 90.000 | Procurement | 02/06/2026 | A. ABDELKEFI |
| Field Seller Stock — M. ORABI | SMART SUPERVISOR MODULE | 20.000 | 8.000 | Sale | 02/06/2026 | A. ORABI |
| Central Warehouse | SMART BUS CABLE 5M | 50.000 | 38.000 | Transfer | 01/06/2026 | A. ABDELKEFI |
| Central Warehouse | SMART SUPERVISOR MODULE | 90.000 | 92.000 | Return note | 01/06/2026 | A. ABDELKEFI |
Movement types
| Code | Type | Direction | Typical origin |
|---|---|---|---|
| 0 | Procurement | In | Purchase / receipt |
| 1 | Sale | Out | Delivery note / invoice |
| 2 | Liquidation | Out | Destruction / write-off |
| 6 | Stocktake | Adjustment | Physical count (section 5) |
| 7 | Transfer | Inter-stock | Transfer note (section 6) |
| 8 | Issue note preparation | Out | Issue note (section 7) |
| 11 | Return note | In | Merchandise return (section 8) |
| 12 | Production | In | Manufacturing order |
Other internal technical codes exist (reservation cancellation, return following credit note, cancellations…) but are not entered manually.
Stocktake
The stocktake compares the virtual quantity (theoretical, calculated by the ERP) against the counted quantity (physical count). The variance follows from this and, on validation, an adjustment movement (type 6) aligns the stock with reality.
| Item | Virtual quantity | Recorded quantity | Variance | |
|---|---|---|---|---|
| SMART SUPERVISOR MODULE | 92.000 | 90.000 | -2.000 | |
| SMART BUS CABLE 5M | 38.000 | 40.000 | +2.000 |
| Column | Description |
|---|---|
| Label | Name of the stocktake campaign. |
| Stocktake date | Date and time of the count (limited to today's date). |
| Virtual quantity | Theoretical stock at the time of the count. |
| Counted quantity | Quantity actually counted by the operator. |
| Status | In progress then validated after adjustment. |
Automatic adjustment — on validation, the variance is applied to the stock via a stocktake movement (type 6). Check the counts before validating: the operation directly corrects the quantities.
Transfer notes
The transfer note moves quantities from a sending stock to a receiving stock (e.g. central warehouse → field seller stock). It generates two movements (type 7): an outbound one on the source side, an inbound one on the destination side.
| Number⇅ | Date⇅ | Receiving Stock | Transfer stock | Responsible | |
|---|---|---|---|---|---|
| BT: N°000087 | 02/06/2026 | Field Seller Stock — M. ORABI | Central Warehouse | A. ABDELKEFI | |
| BT: N°000086 | 30/05/2026 | POS Register — Shop 1 | Central Warehouse | A. ABDELKEFI |
| Column | Description |
|---|---|
| Number | Reference of the transfer note. |
| Date | Date of the transfer. |
| Receiving stock | Destination stock (which receives the goods). |
| Transferring stock | Source stock (which gives up the goods). |
| Responsible | User who initiated the transfer. |
On a stock managed by batch / expiry date, the transfer requires splitting the quantities by batch; only valid (non-expired) batches are offered.
Issue notes
The issue note records a non-sale goods issue (replenishing a stock, correction, preparation, POS register, field mission…). It decrements the stock concerned (type 8 movement).
| Number⇅ | Date⇅ | Type | Seller | Status | |
|---|---|---|---|---|---|
| BS: N°000142 | 02/06/2026 | Stock replenishment | M. ORABI | Synced | |
| BS: N°000141 | 01/06/2026 | Field mission | M. BEN AZIZA | In preparation | |
| BS: N°000140 | 31/05/2026 | Stock correction | — | Pending |
Issue note types
| Type | Usage |
|---|---|
| Stock replenishment | Replenish another stock (e.g. register, field seller). |
| Stock correction | Adjust a quantity outside a formal stocktake. |
| Stocktake | Issue linked to a stocktake adjustment. |
| Field mission / POS register | Assignment to a field mission or a point-of-sale register. |
Possible statuses: Pending, In preparation, Synced. Synchronization propagates the issue to the target stock.
Return notes
The return note records merchandise returned by a field seller. The nature of the return (intact or defective) determines whether the quantity is put back into stock or not (type 11 movement on validation).
| Number⇅ | Date⇅ | Seller | Reason | Nature | Status⇅ | |
|---|---|---|---|---|---|---|
| BR: N°000059 | 02/06/2026 | M. ORABI | Unsold route items | Intact | In progress | |
| BR: N°000058 | 01/06/2026 | M. BEN AZIZA | Transport breakage | Defective | Validated | |
| BR: N°000057 | 30/05/2026 | M. ORABI | Loading error | Intact | Rejected |
Intact (1)
The goods are put back into stock on validation: returned to the seller's stock, a single location (simple mode) or split by batch/expiry date (advanced mode).
Defective (0)
The goods are set aside; they are tracked by value (valuation of defective returns) but do not increase sellable stock.
Return note statuses
| Status | Meaning |
|---|---|
| In progress | Return entered, awaiting processing (status 0). |
| Validated | Return processed; stock put-back done if intact (status 1). |
| Rejected | Return refused, with no stock impact (status 2). |
Stock put-back & issue note — for an intact return, Swifto can generate a put-back issue note to the original seller, or split the quantities directly across stocks/batches/expiry dates (advanced mode).
Locations & warehouses
Locations geographically situate your stocks (governorate, delegation), while warehouses organize physical storage (by item, category, capacity). Together they structure logistics.
Locations
| Label | Governorate | Delegation |
|---|---|---|
| Central Warehouse | Sfax | Sfax Ville |
| North Depot | Tunis | La Marsa |
Columns: Label, Governorate, Delegation.
Warehouses
| Label | Stock | Category | Capacity |
|---|---|---|---|
| Aisle A — Modules | Central Warehouse | Electronics | 500 |
| Aisle B — Cables | Central Warehouse | Accessories | 1200 |
Columns: Label, Stock, Location, Item / Category, Capacity.
Stock valuation
The stock value aggregates, per item, the available quantity multiplied by the ex-works price (cost/valuation price). This indicator feeds the Stock dashboard and the global dashboard.
Formula · Stock value = Σ ( available quantity × ex-works price of the item ).
The ex-works price is set on the item record (module Items). It is also used to value defective returns and procurement movements.
Lifecycle (workflow)
Stock lives in a continuous loop: In → Storage → Out → Stocktake, each step generating traced movements.
flowchart LR A([Purchase / Receipt]):::s --> E[Stock in
Procurement · type 0]:::p R([Intact return note]):::s --> E E --> ST[(Storage
by batch / expiry date)]:::st ST -->|sale · type 1| V([Sales issue]):::ko ST -->|transfer · type 7| T([Other stock]):::p ST -->|issue note · type 8| BS([Non-sale issue]):::ko ST --> I[Stocktake
type 6]:::p I -.->|variance| ST classDef p fill:#f3f1ff,stroke:#7366fe,color:#1f1c3d; classDef s fill:#FEF3C7,stroke:#F59E0B,color:#92400E; classDef st fill:#FFF7ED,stroke:#E07B00,color:#92400E; classDef ko fill:#FEE2E2,stroke:#EF4444,color:#991B1B;
Business rules (batch / expiry date)
A single mode per stock — a stock is either simple, by batch, or by batch + expiry date. The split (transfer, issue, return) exactly follows the target stock's mode.
Expired batches hidden — batches whose expiry date has passed (or expires within 2 days) are hidden from selection screens: you cannot issue an expired batch by mistake.
On-the-fly batch creation — if the returned or transferred item does not exist in the target stock, the line (and the batch) is created automatically on validation.
Intact vs. defective return — only an intact return puts the goods back into stock; a defective one is valued separately without returning to sellable stock.
Threshold alerts — a quantity ≤ the minimum threshold generates a below-threshold alert; a zero quantity generates an out-of-stock alert. The counters are shown in the summary cards.
Roles & FAQ
Roles & permissions
| Action | Warehouse clerk | Procurement | Management | Admin |
|---|---|---|---|---|
| View stocks | ✅ | ✅ | ✅ | ✅ |
| Stocktake / adjustment | ✅ | ✅ | — | ✅ |
| Transfer / issue notes | ✅ | ✅ | — | ✅ |
| Validate a return note | ✅ | ✅ | — | ✅ |
| Valuation / oversight | — | ✅ | ✅ | ✅ |
| Delete a stock | — | — | — | ✅ |
Indicative matrix — depends on the profiles defined in your company.
FAQ & Tips
Why doesn't a batch appear in the selection ?
Its expiry date has passed or it expires within 2 days: Swifto hides these batches to prevent issuing an expired product.
My stock doesn't match the physical count ?
Start a stocktake (section 5): enter the counted quantities and validate — the variance is adjusted automatically.
Tip — watch the summary cards
The "Out of stock" and "Nearly depleted" counters at the top of the list are your daily replenishment radar.