Inventory Report Builder
Route: /org/inventory/reports · Permission: Open the inventory report builder (view) / Manage saved reports
Module: org_inventory_reports · Menu: Inventory Reports (under Inventory)
1. What the Inventory Report Builder is
A drag-and-drop report designer over the selected project's inventory. You choose the dataset (Products, Stock Movements, Production Orders or Raw Materials), drag fields into Rows, Columns, Measures and Filters, press Run, and read the result as a pivot table or a chart. Reports can be saved for reuse, privately or shared with the project.
It is the same builder as Task Reports and its siblings, pointed at inventory data.
Stock (balance) on Products and Raw Materials reads the materialised current_stock — the
balance the product pages show. The Stock Movements dataset reads the signed ledger
(positive = stock in, negative = out) — the movement history. Summing ledger movements does not
have to equal today's balance (imports, product edits and order flows also touch balances), so the
builder labels them differently and you should never present them as the same figure.
2. How a report is put together
3. Building and running a report — step by step
Step 1 · Pick the dataset
Products (catalog shape, prices, stock balances, ratings), Stock Movements (the signed ledger: purchases, sales, production, consumption, adjustments, transfers, wastage), Production Orders (planned vs produced, yield, cycle time) or Raw Materials (balances and reorder levels). Switching clears the canvas (the page asks first).
Step 2 · Drag fields into the zones
Same interaction as the other builders. Filter pickers offer the project's categories, units, products and raw materials (multilingual names shown in English), the fixed 7 transaction types and 4 production statuses, and project members for "Posted By".
Step 3 · Run, read, drill
- Table — pivot with totals; two or more row dimensions become collapsible groups with subtotal rows.
- Chart — bar (stacked with a pivot column or a second row dimension), line (best with a date grain), pie.
- Drill-down — click any number: a drawer lists the underlying rows (products, ledger entries, orders or materials). Inventory rows deliberately carry no deep links — the product detail page requires the edit permission, and ledger/production rows have no routable detail.
Step 4 · Save, share, templates, export
Identical to the other builders: private saves with a Share with project toggle, Save as, a Templates menu (Products by Category, Out-of-Stock Products, Stock Movement by Month × Type, Purchase Value by Month, Wastage by Item, Production Yield, Low Stock Raw Materials…), CSV download, and print-to-PDF.
4. Field reference
| Dataset | Dimensions | Measures | Notable filters |
|---|---|---|---|
| Products | Product, Category (primary), Unit, Publishable, Preorder, Internal Only, Out of Stock, Created date | Count, Sum/Avg Stock (balance), Avg/Min/Max Base Price, Avg Rating, Reviews | Name contains, any dimension |
| Stock Movements | Transaction Type (7 fixed), Item Kind (product / raw material), Item, Product, SKU, Posted By, Batch #, Posted / Expiry date (grain) | Count, Sum Net Quantity (signed), Quantity In, Quantity Out, Movement Value ( | qty |
| Production Orders | Status (DRAFT / IN_PROGRESS / COMPLETED / CANCELLED), Finished Good, Created/Started/Completed date | Count, Sum Planned/Produced Qty, Avg Yield %, Avg Cycle Hours | Any dimension |
| Raw Materials | Material, Unit, Low Stock, Created date | Count, Sum Stock (balance), Reorder Level, Avg Last Purchase Price | Name contains |
Semantics worth knowing
| Field | Meaning |
|---|---|
| Category | The product's primary category (multi-category products count once — no double counting) |
| Net Quantity | The signed ledger delta: PURCHASE/PRODUCTION_IN positive, SALE/CONSUMPTION_OUT/WASTAGE negative |
| Movement Value | ` |
| Low Stock | current_stock ≤ reorder_level (reorder levels exist on raw materials only) |
| Yield % | produced ÷ planned × 100 per production order |
| Stock Movements scope | Includes legacy ledger rows that carry no project, like the app's ledger view |
5. The admin contract
| Prerequisite | Without it |
|---|---|
| Open the inventory report builder permission | No access to the page |
| Inventory Reports menu permission | No sidebar entry |
| Manage saved reports permission | Run and export only — no Save / Share / Delete |
| A selected project with inventory data | Empty datasets |
| Unit costs on ledger entries | Movement Value reads zero |
| Reorder levels on raw materials | Low Stock never triggers |
6. Downstream
Read-only over inventory data. The only thing a report writes is its own saved definition. Shared
reports are also readable (and runnable) through the Orbit public API
(developers.<your-domain> — Orbit Inventory → Inventory Reports, scope
inventory:report:read, shared reports only). Private reports are never exposed there.
7. Don't confuse this with…
| Screen | Route | Shows |
|---|---|---|
| Inventory Report Builder (this page) | /org/inventory/reports | Reports you compose, saved and shared |
| Ledger | /org/inventory/ledger | Individual ledger entries, filterable, exportable |
| Products list | /org/inventory/products | Individual products, editable |
| Production board | /org/inventory/production | Individual production orders, actionable |
| Task Reports | /org/tasks/reports | The same builder over tasks |
8. Troubleshooting
| Symptom | Cause |
|---|---|
| Ledger totals ≠ product stock balances | The two stock truths — balances are also touched by imports/edits/orders, not only the ledger |
| Movement Value is zero | The entries were posted without a unit cost |
| A product counts in one category only | The Category dimension uses the primary category by design (no fan-out double counting) |
| Wastage shows positive numbers | Use Quantity Out for magnitude; Net Quantity is signed (wastage is negative) |
| Run is disabled | A report needs at least one row/column dimension and one measure |
| A filter seems ignored | It has no value yet — half-filled filters are skipped, not applied |
| A saved report is read-only | Shared by someone else — Save as makes your own copy |
Related
- Ledger — the movement history this builder aggregates
- Task Report Builder — the same builder over tasks