Inventory Management System
{{ loginQuote.text }}
β {{ loginQuote.author }}
POWERED BY INVENTORYFLOW v2.0.48
{{ homeUrgentCount ? (homeUrgentCount + ' thing' + (homeUrgentCount === 1 ? '' : 's') + ' need your attention') : 'You are all caught up β pick a job below when you are ready.' }}
No daily tasks for your role. Use Menu for reports or settings.
| Name | Area | Unit | Supplier | Stock Room | On Order | Actions |
|---|---|---|---|---|---|---|
| {{ item.name }} | {{ item.area_names && item.area_names.length ? item.area_names.join(', ') : displayAreaGroup(item.area_group) }} | {{ item.unit_measure }} | {{ item.supplier_name }} | {{ item.stockroom_onhand }} | {{ item.on_order_qty }} |
{{ area.description }}
Full count of an area, or a quick count of selected items.
Choose the area to count completely:
Factory: {{ item.factory_onhand }} | Min: {{ item.factory_min }}
No items found matching "{{ adhocItemSearch }}"
Type to search for items...
| Item | Qty Seen | Unit | Action |
|---|---|---|---|
| {{ getItemName(itemId) }} |
|
{{ getItemUnit(itemId) }} |
No items added yet. Search and add items above.
Check stockroom (mother location) inventory. Choose adhoc (select specific items) or full (all items). Creates a PO for discrepancies.
Stockroom: {{ item.stockroom_onhand }} | Min: {{ item.stockroom_min }}
No items found matching "{{ stockroomItemSearch }}"
Type to search for items...
| Item | Should Be | Actually Found | Unit | Action |
|---|---|---|---|---|
| {{ getItemName(itemId) }} | {{ getStockroomOnhand(itemId) }} | {{ getItemUnit(itemId) }} |
No items added yet. Search and add items above.
No stockroom items available.
| Timestamp | User | Action | Details |
|---|---|---|---|
| {{ entry.timestamp }} | {{ entry.user }} | {{ entry.action }} | {{ entry.details }} |
Checked by {{ sheet.staff_name }} Β· {{ sheet.created_date }} Β· Pending processing
Processed by {{ props.item.issued_by }} at {{ props.item.issued_at }}
Processed: {{ props.item.issued_at }}
Select who this issue is going to, then search and add items.
Stock: {{ item.stockroom_onhand }} | Unit: {{ item.unit_measure || '-' }}
| Item | Qty | |
|---|---|---|
| {{ sel.name }} {{ sel.unit }} |
Created: {{ currentIssueSheet.created_date }}
Issued At: {{ currentIssueSheet.issued_at }}
| Item | Area now | Stockroom | Required | Issue Qty | Unit |
|---|---|---|---|---|---|
|
{{ line.item_name }}
β οΈ {{ line.on_order_qty }} on order with supplier
|
{{ line.area_onhand != null ? line.area_onhand : 'β' }} | {{ line.stockroom_onhand }} | {{ line.required_qty }} |
|
{{ line.unit_measure }} |
No pending purchase orders
Stockroom: {{ item.stockroom_onhand }} | Min: {{ item.stockroom_min }}
| Item | Quantity | Unit Price | Total | Action |
|---|---|---|---|---|
| {{ item.name }} | R{{ (item.qty * item.unit_price).toFixed(2) }} | |||
| TOTAL: | R{{ poTotal.toFixed(2) }} | |||
Supplier: {{ currentPO.supplier_name }}
Date: {{ currentPO.created_date }}
Status: {{ currentPO.status === 'pending' ? 'Awaiting Approval' : currentPO.status === 'approved' ? 'Approved' : currentPO.status === 'cancelled' ? 'Cancelled' : currentPO.status === 'rejected' ? 'Rejected' : currentPO.status === 'partial' ? 'Partial' : currentPO.status === 'complete' ? 'Complete' : currentPO.status }}
* All prices shown are excluding VAT
| Item | Quantity | Unit | Unit Price (Ex VAT) | Total (Ex VAT) | Action |
|---|---|---|---|---|---|
| {{ line.item_name }} | {{ line.qty }} | {{ line.unit_measure }} | R{{ parseFloat(line.unit_price).toFixed(4) }} | R{{ (parseFloat(line.unit_price) * parseFloat(line.qty)).toFixed(2) }} | |
| Subtotal (Ex VAT): | R{{ ((editingPO ? poEditLines : currentPO.items || []).reduce((sum, line) => sum + (parseFloat(line.unit_price) * parseFloat(line.qty)), 0)).toFixed(2) }} | ||||
| VAT (15%): | R{{ (((editingPO ? poEditLines : currentPO.items || []).reduce((sum, line) => sum + (parseFloat(line.unit_price) * parseFloat(line.qty)), 0)) * 0.15).toFixed(2) }} | ||||
| TOTAL (Inc VAT): | R{{ (((editingPO ? poEditLines : currentPO.items || []).reduce((sum, line) => sum + (parseFloat(line.unit_price) * parseFloat(line.qty)), 0)) * 1.15).toFixed(2) }} |
No awaiting deliveries
Supplier: {{ currentReceipt.supplier_name }}
Date: {{ currentReceipt.received_date }}
Status: {{ currentReceipt.status === 'processed' ? 'Delivered' : 'Awaiting' }}
Supplier Invoice: {{ currentReceipt.supplier_invoice_number || 'N/A' }}
| Item | PO Ordered | Received from Supplier | Unit |
|---|---|---|---|
| {{ line.item_name }} | {{ line.expected_qty }} | {{ line.unit_measure }} |
Accept stock that was issued from the stockroom into your area
Issue Sheet #{{ delivery.issue_sheet_id }} Β· {{ delivery.item_count }} item(s) Β· Issued by {{ delivery.issued_by }} Β· {{ delivery.created_date }} Β· Waiting {{ delivery.age_days }}+ days
Nothing waiting β when stockroom issues items to your area, they show up here.
Accepted by {{ props.item.accepted_by }} at {{ props.item.accepted_at }}
Issue Sheet: #{{ currentInternalDelivery.issue_sheet_id }}
Created: {{ currentInternalDelivery.created_date }}
Issued By: {{ currentInternalDelivery.issued_by || 'β' }}
Accepted By: {{ currentInternalDelivery.accepted_by }}
Check quantities:
| Item | Area now | Issued | Received | Unit |
|---|---|---|---|---|
| {{ item.name }} | {{ item.area_onhand != null ? item.area_onhand : 'β' }} | {{ item.issued_qty }} |
|
{{ item.unit_measure }} |
Signature saved
| User | Login | Current Role | Actions |
|---|---|---|---|
| {{ user.name }} | {{ user.login }} | {{ user.role_label }} {{ user.inventoryflow_role }} No role assigned | |
| No users found. Users need a WordPress account first. | |||
Hosting checks for InventoryFlow. WP Rocket exclusions are applied automatically when the plugin is active.
Configure email addresses for system notifications
Send a test email to verify the SMTP configuration is working correctly.
Select which locations this user can perform stock checks and ad-hoc checks for
Generate inventory reports and download as PDF
Complete inventory list of all items with current stock levels
View stock levels for a specific area
Transaction history for a specific item
Average monthly usage and spending for last 6 months
Current stock levels for all stockroom items
Total spend for specific month
| Location | Stock Room | On Order | Min | Reorder |
|---|---|---|---|---|
| π Stockroom | {{ adjustItem ? adjustItem.stockroom_onhand : 0 }} | {{ adjustItem ? (adjustItem.on_order_qty || 0) : 0 }} | {{ adjustItem ? adjustItem.stockroom_min : 0 }} | {{ adjustItem ? adjustItem.stockroom_reorder_qty : 0 }} |
| π {{ loc.name }} | {{ loc.onhand || 0 }} | β | {{ loc.min_qty || 0 }} | {{ loc.reorder_qty || 0 }} |
| No area locations assigned | ||||
β οΈ This will delete ALL data (items, suppliers, purchases orders, etc.) and reset the system.
π Upload a CSV to import new items or update existing ones. Items are matched by Name + Area.
CSV Format (same as Export):
Name,Area,Unit Measure,Supplier,Supplier SKU,Internal SKU,Cost Price,On Hand,Min,Reorder Qty,Default Issue Qty,Active
π‘ Tip: Export first, edit in Excel, then re-import. Each item appears once per area. Use "Stockroom" for the stockroom row.
{{ confirmDialog.message }}
Menu
{{ personaMenuHint }}