Purchases and inventory
Map of the purchase → stock chain: PO, GRN, supplier bill, payment, and inventory rules.
Business Suite · Purchases
Cesta: Store → Purchases · Store → Inventory
Definice
Store → Purchases | Store → Inventory (Starter+)
Purchases manages supplier orders and receiving. Inventory shows sellable stock health and adjustments. This page is the overview map — use the PO, GRN, and related articles for field-by-field steps.
Plan & access
- Minimum plan: Starter+ with inventory capability enabled on Billing.
- Staff need purchases / inventory permissions from the store owner.
- Create a supplier party before you create a PO (Purchase Order).
- Professional+ adds multi-warehouse balances and transfers on top of the same purchase flow (Warehouse A → Transfer → Warehouse B).
Read Core concepts and Getting started first. Then use this page to choose Flow A or Flow B and open the dedicated articles for details.
What posts where
- GRN (Goods Receipt Note) → stock increases (warehouse / inventory movement + sellable quantity).
- Supplier bill → accounting entries (payable / inventory or expense as configured) — not the same as a stock movement by itself on Flow A.
- Supplier payment → cash / bank decreases via journal.
- Each posted document creates its own inventory movement and/or accounting journal as designed — inventory and books stay related but separate ledgers.
Flow A (recommended)
Supplier (party) → PO (Purchase Order) → GRN (Goods Receipt Note) → stock in → Supplier bill → journal (payable) → Supplier payment → journal (cash/bank)
Recommended path: create and send the PO, receive with a GRN to post stock, bill what arrived, then pay the supplier.
Important: Bill without GRN (Flow B)
Supplier (party)
→ PO (Purchase Order)
→ Supplier bill → stock posted for unreceived billed qty
→ line qtyReceived increased
→ PO status → partially_received or received
→ Supplier payment Business rule: if you post a supplier bill against a PO without a linked GRN, BonikBiz stocks in only the billed quantity that was not already received, increases qtyReceived on those PO lines, and refreshes PO status so a later GRN cannot double-count the same quantity.
Do not also receive that same quantity on a GRN afterward.
Quick start (Starter+)
- Create a supplier under Store → Parties (supplier role).
- Open Store → Purchases → New PO; add lines (qty, unit cost, tax/discount).
- Move document status: draft → submitted → approved → sent.
- Open the PO → Receive to create a GRN and post stock (Flow A).
- Create a supplier bill, then record payment.
- Verify quantities under Store → Inventory (and Warehouse on Professional+).
PO status: document workflow vs receive progress
One PO.status field (BonikBiz): Document workflow (you change these): draft → submitted → approved → sent Receive progress (system sets from qtyReceived — GRN or Flow B bill): sent (still open; qtyReceived = 0) → partially_received (some lines received) → received (all lines fully received) Later: closed | cancelled There is no separate “ordered” status. sent ≠ supplier acceptance — it means the PO was sent/released for receive.
Document workflow and receive progress share the same status field, but you only patch draft → sent yourself. Receive progress is system-derived from line qtyReceived — never mark “received” manually.
GRN is allowed after approve/send (not while draft/submitted). Cancel is blocked once any qtyReceived > 0.
Inventory integrity: quantity is movement-derived
- Business rule: when quantity tracking is on, sellable stock is movement/ledger-derived — not typed over on the product form.
- Adjust on-hand with Stock Adjustment / Movement.
- Do not overwrite quantity on the product edit form to “fix” stock — that breaks data integrity.
Inventory view
- Filter by stock health: all / low / out / healthy.
- Use stock movements to adjust on-hand.
- Untracked products (track quantity off) can stay sellable online even at zero.
- Professional+: multi-warehouse balances and transfers (advanced — separate from the Starter purchase loop).
Online / POS sales and stock return paths
- Sale (online or POS), when quantity is tracked: decreases sellable stock.
- Cancel order: restores stock that was reserved/decremented for that order (when restore applies).
- Refund (order/payment marked refunded): restores stock when the refund path restores inventory.
- Return (for example shipment returned with stock restore): restores stock when that return path runs.
PO cancel after receive
Cancel on a PO is blocked after any quantity has been received.
To unwind, reverse or adjust stock first (void GRN / stock reverse as your store allows), then cancel if still needed.
Canonical end-to-end flows
Normal: Supplier → PO → GRN → Stock → Bill → Payment
Exception: Supplier → PO → Bill → Stock/Received → Payment
Multi-warehouse: Warehouse A → Transfer → Warehouse B (Professional+)
Sales: Stock → Online/POS sale → stock decrease
→ Cancel / Refund / Return → stock restore (when that path applies) Keep this page as the map. Child articles (PO, GRN, purchase ops, warehouse) hold field-level steps.
Where to go next
Business Suite ├── Getting started ├── Core concepts ├── Purchases & inventory ← you are here (map) │ ├── PO (Purchase Order) │ ├── GRN (Goods Receipt Note) │ ├── Purchase ops (bill / payment / returns) │ ├── Inventory & stock movements │ └── Warehouses & transfers (Professional+) └── Accounting
This page is the overview map of the purchase → inventory chain. Open PO, GRN, purchase ops, and warehouse articles for field-level instructions.