Korat

Stock, purchase orders and suppliers

The stock in/stock out side of the Korat business console at business.koratland.com — from counting raw materials in a factory/central kitchen to requesting a purchase, approving it, ordering, receiving, and recording payables to a vendor.

The "Factory" module is a separate plugin

Raw materials, bills of materials, production orders, stock history, and stock counts need the "Factory" plugin turned on before these tabs appear in the menu — a shop that doesn't manufacture anything (just buys and resells) can turn on "Procurement" alone instead.

Raw materials

A registry of materials used to make products, unlike "Menu / products" which are the finished items sold to customers. Each material has a current stock level, the date it was last counted, and who counted it — if the last count is over 30 days old, the row shows a yellow warning.

Stock can go negative, and that's normal

The system doesn't force stock to floor at zero — if you sell beyond what's actually in stock, the figure genuinely goes negative, shown as "Negative — sold beyond stock" with a link to the entries that caused it. A real negative number beats a false zero.

Average unit cost is only shown to someone holding the factory.costs permission — without it, the cost column is left blank entirely, not a fake "฿0" or "฿—".

Bills of materials

The recipe/ingredients of a manufactured product — what materials one unit uses and in what quantity. Each recipe has a status (active / draft / archived) and its own version — editing an active recipe creates a new version rather than overwriting the old one, so old production orders can still correctly reference the recipe that was in force at the time.

Production orders

Order actual production based on a set recipe — once production finishes, the system deducts materials from stock automatically per the recipe. If materials are insufficient, the system reports exactly which items are short (short_material) with a link to the "Receive materials" page, not just a bare "Failed".

Variance from recipe — if actual production uses more or less material than the recipe calls for, the system records that gap as a "recipe variance", not "waste" — because the recipe itself can be wrong just as easily as the person doing the work.

Stock history

A time-ordered log of stock in/out for materials and products across the shop — used to check back on what came in or out and when, and who recorded it. Every row always carries the name of the person who recorded it, since the shop has no automatic scale/scanner yet — every number comes from someone typing it in.

Stock counts

Count real stock against the system's figures, then adjust the balance when there's a shortage or surplus — the system won't let you save an adjustment without a reason (variance_reason_required); you must always enter a reason for the variance.

Procurement

Request, approve, and order goods into the shop, unlike "Expense claims" which is employees reimbursing personal spending. The full path is: request → approve → issue purchase order → receive into stock → record payable.

Step by step

  1. Request — any employee can create a purchase request specifying items and quantities
  2. Approve — someone holding purchase.approve approves or rejects it. Which amount requires which permission is configured yourself at "Approval rules" (if nothing is set, purchase.approve is required for every amount by default)
  3. Issue purchase order — someone holding purchase.order issues a purchase order to a vendor chosen from the vendor book
  4. Receive into stock — someone holding purchase.receive confirms the goods actually arrived, then receives them as assets or materials as ordered
  5. Record debt/payment — someone holding purchase.payables continues on "Payables"

These three permissions must be granted by the shop owner explicitly — no one holds them automatically

purchase.approve, purchase.order, purchase.payables aren't held automatically by any role, not even "Manager" — only the shop owner (full * permission) always passes. You must grant these to employees yourself on "Roles and permissions", or every step will sit waiting on the owner alone.

Vendors

The book of vendors/suppliers the shop buys from — used when choosing who to order from, and where payables balances per vendor are tied.

Payables

Amounts the shop still owes vendors, following on from purchase orders that have been received — you need the purchase.payables permission to record a payment or close out a balance. The figures on this page are always tied to real purchase orders, never a separately typed-in amount.

Frequently asked questions

QuestionAnswer
I don't see the materials/bills-of-materials tabs at allTurn on the "Factory" plugin first at the shop's plugin page — these tabs will appear on their own.
Why doesn't material cost show up?You need the factory.costs permission — without it, the cost column is always blank; that's not a bug.
Ordered production and got "not enough materials" — what now?Press the link the system provides to go receive materials into stock first, then come back and order production again.
Can't approve a purchase request, button is missingYou need the purchase.approve permission — ask the shop owner to add it on "Roles and permissions".
Stock count won't saveYou must always enter a reason for the variance first — the system won't let you adjust a balance without one.