Stock
Manage products, warehouses, inventory movements, reorder thresholds, and a public product storefront.
Stock is Leenops's sellable-inventory module. It combines an internal product catalog and movement ledger with warehouse balances, reorder thresholds, CSV import, private share links, and an optional public storefront.
What Stock supports today
- Product catalog — SKUs, descriptions, categories, prices, tax, barcodes, tracking mode, photos, and active/archive state
- CSV import and export — insert new products, attach local or hosted photos, resume interrupted runs, and update photos by SKU
- Warehouse balances — current on-hand quantities by warehouse location, backed by an immutable movement ledger
- Transfers and movements — receipts, shipments, transfers, adjustments, returns, consumption, and production entries
- Reorder thresholds — per-product minimum, maximum, and suggested reorder quantities
- Public storefront — publish selected active products for anonymous browsing, questions, interest capture, and quotation requests
- Private share links — expiring links for a catalog, product, or warehouse without enabling the public storefront
- CRM and Sales handoff — storefront engagement creates or reuses CRM contacts; quote-cart checkout creates a Sales quotation
Navigation
| Page | URL | Purpose |
|---|---|---|
| Overview | /stock | Inventory KPIs, category value, top products, recent movements, and filters |
| Products | /stock/products | Search, filter, edit, import, export, publish, share, and archive products |
| Import products | /stock/products/import | Dedicated CSV import and recovery route |
| Warehouses | /stock/warehouses | Create warehouses and inspect their locations |
| Movements | /stock/movements | Cursor-paginated inventory ledger |
| New transfer | /stock/transfers/new | Move a quantity between two locations |
| Reorder rules | /stock/reorder-rules | Configure min/max thresholds and suggested reorder quantities |
| Settings | /stock/settings | Public storefront, private share links, and archive-all controls |
Recommended setup sequence
- Enable Stock under Settings > Modules.
- Create at least one warehouse and mark the normal receiving location as default.
- Create products manually or use CSV import.
- Record opening quantities as movements or transfers through the appropriate operational workflow.
- Add reorder rules for items that need threshold monitoring.
- If customers should browse inventory, prepare and publish products before enabling the public storefront.
Product and balance model
stock_products owns the SKU catalog. Current on-hand values are maintained in stock_balances and exposed through the stock_levels compatibility view. Every quantity change is also retained in stock_movements, so the current balance and the audit trail stay connected.
Products are archived by setting them inactive rather than deleting them. Their photos, movements, reorder rules, and historical references remain attached.
Cross-module workflows
Procurement receipts
When Procurement records a purchase-order receipt, the Procurement–Stock bridge can create an inbound receipt movement for every received line. Retry-safe idempotency keys prevent duplicate movements.
Storefront quotations
Priced storefront products can be added to a quote cart. Checkout validates that the storefront and products are still public, re-reads prices on the server, creates or reuses a CRM contact, creates a Sales quotation atomically, and sends the visitor an acknowledgement email with an opaque confirmation link. No payment is taken online.
Storefront questions and interest
The public product page exposes Ask about this item or Request price and availability. A submission creates or reuses a CRM contact, records a buy-intent entry, notifies workspace owners and admins, and appears in the product's Storefront engagement panel.
Current boundaries
Stock does not currently provide cycle-count screens, configurable FIFO/AVCO valuation, automatic Finance journal entries, or automatic draft purchase-order creation from reorder rules. Reorder rules currently drive suggestions and the daily low-stock scan; the cron's notification/email fan-out is not yet wired.
Lot and serial fields exist in the data model, but their operational UI is still limited. Treat advanced traceability as an implementation boundary rather than a fully guided workflow.

