Folks Inventory ERP — Exercise Workbook
Twenty progressive labs that take you from an empty database to a fully-running café-and-bakery chain — buying stock, selling it, transferring it, auditing it, closing the books. Learn by doing, on one continuous case study.
The case study — Al-Murjan Café & Bakery
Al-Murjan is a small two-site café-and-bakery chain: a central HQ Main Store (warehouse + kitchen) that bakes and supplies, and a Branch 2 Café that sells to customers. Across these 20 labs you will stand the whole operation up in Folks Inventory ERP — set up the stores and items, buy ingredients through the procurement pipeline, transfer stock to the branch, sell over the POS, reconcile a stock audit, close the period and post the journal behind it.
How each lab works
Every lab carries a skill level, a time estimate, a goal, and a cross-reference to the manual chapter that explains the concept. Steps are colour-coded so you always know what kind of action you're taking:
DO
An action you perform on screen.
SEE
The outcome you should observe.
NOTE
A value to record for a later lab.
Q
A self-check question.
superadmin / superadmin. Each lab builds on the last — work them in order, and keep your noted values (codes, ids) to hand.Foundation · Labs 1–5
Stand up the stores and items, and learn to read stock.
Orientation & first login
- Open the app and sign in with
superadmin / superadmin. - You land on the Command Center; the sidebar shows the eleven modules.
- Expand each module in the sidebar and note which pillar it belongs to (Workspace, Warehouse, Trade, Assets, Finance, Administration).
- Record the six KPI values on the dashboard — you'll watch them change as you work.
- Which two modules render as solo links (no sub-menu)?
Your first store
- Store Type — add Warehouse and Retail.
- Store Location — add Riyadh — HQ and Jeddah.
- Store — create HQ Main Store (Warehouse / Riyadh, purchase allowed) and Branch 2 Café (Retail / Jeddah).
- Both appear with auto codes
STR0001/STR0002and an Active badge. - Record both store codes.
- Why must HQ Main have "purchase allowed" but the branch need not?
The item master
- Lookups — add an Item Category (Bakery, Beverage), a Brand and a Grade.
- Store Item — create five items: Bread Loaf, Coffee Beans 1kg, Paper Cups, Cappuccino Mix, Water 500ml. Give each a unit and a reorder level.
- Set Coffee Beans reorder level to 8 — you'll trip the low-stock alert later.
- All five list with zero on-hand — items exist but hold no stock yet.
- Why is every item's on-hand zero immediately after creation?
Opening stock via Store Entry
- Store Entry at HQ Main — post opening quantities: Bread Loaf 40, Coffee Beans 20, Cappuccino Mix 30, Water 50.
- Each entry posts a positive movement and the on-hand jumps immediately.
- Leave Paper Cups at zero on purpose — it'll show as Out.
- Could you have typed "20" directly into a balance field instead? Why not?
Read the Stock Balance & dashboard
- Open Stock Balance and read the In / Out / On-hand columns.
- Coffee Beans shows Low if its on-hand sits near its reorder level; Paper Cups shows Out.
- Return to the dashboard — the Items and Low-stock KPIs now reflect your data.
- If In = 20 and Out = 0, what makes Coffee Beans "Low"? (Hint: reorder level.)
Intermediate · Labs 6–13
Run the trade engines — buy stock through the pipeline, sell it on the POS, move it between stores.
Raise a store item requisition
- Store Item Requisition — HQ Main needs 25 Bread Loaf (Each). Save it.
- Requisition #1 is created and listed.
- Record the requisition number — Lab 7 picks it up.
- A requisition is a request, not a purchase. What turns it into one?
Requisition-driven plan & indent
- Purchase Plan — pick requisition #1; item, requested qty and unit auto-fill. Set planned qty 30 and save.
- Plan #2 enters the pipeline as New Request.
- From the plan list, click Generate Indents.
- Status advances to Indent Generated.
- Record the plan number — you'll carry it to Delivered.
Tender & compare quotes
- Vendors — add three with emails: Gulf Foods, Al-Noor Supplies, Desert Trading.
- Create Tender Request — select the indented plan and create the tender.
- Status moves to Tender Created.
- Compare Quotes — capture a quote per vendor (e.g. 6.20 / 6.75 / 7.10) and rank them.
- Which vendor is the system going to recommend, and on what basis?
Award the PO & receive the delivery
- Process PO — award the order to the lowest quote (Gulf Foods).
- Status becomes Delivery Processing.
- Delivery — process logistics and Receive the goods.
- Plan lands on Delivered — and Bread Loaf's stock at HQ Main rises by the received quantity.
- Confirm on Stock Balance that the purchase flowed into on-hand. You just ran the whole pipeline.
Set up point of sale
- Payment Method — add Cash, Card, Wallet.
- POS Terminal — create Branch 2 Till bound to Branch 2 Café, default cashier Layla.
- POS Session — open a session on that terminal with an opening float.
- Branch 2 currently holds little stock. What will you need before you can sell much? (Foreshadows Lab 13.)
Ring POS sales
- New Sale — add items to the cart (e.g. Cappuccino ×2, Croissant ×3), watch the VAT and total compute, take Cash.
- The sale is recorded and the sold items decrement from the session's store stock.
- Ring two more sales so the day-close has something to reconcile.
- Record the running total of the session.
Day close & POS report
- Day Close — count the drawer and close the session.
- Expected vs counted is reconciled; the session is marked closed.
- POS Report — review takings by item and method.
- If counted cash is short, where does the discrepancy surface?
Inter-store transfer
- Transfer — move 15 Bread Loaf from HQ Main (consigner) to Branch 2 (consignee). Post it.
- HQ Main drops by 15, Branch 2 rises by 15 — both legs stamped with the same
TRF-…code. - Transfer Report — confirm both movement legs are listed under one transfer.
- Why is a transfer one transaction rather than a manual exit then entry?
Advanced · Labs 14–20
Exceptions, reconciliation, assets, the money side, access control — and the capstone.
Returns & damage
- Store Returns — bring 2 Water 500ml back into HQ Main.
- Damage Entry — write off 3 Bread Loaf as spoiled, with a reason.
- The return adds back; the damage removes the spoiled quantity from sellable stock.
- Why keep damaged quantity recorded instead of just deleting it?
Stock audit with variance
- Stock Audit — generate an audit batch for Branch 2 (note the
STRAUD…code). - Enter a physical count for Paper Cups that is 4 short of the system figure.
- Variance shows −4, and a Damage row is auto-created linked to the audit id.
- What does this design protect against, compared with letting someone edit the balance directly?
Period close — closing balance
- Closing Balance — click Run Period Close.
- A header per store is written and every on-hand row is snapshotted into the closing-balance detail.
- Note how many detail rows were created — one per stocked item per store.
- Does closing the period stop you trading? Why / why not?
Assets & item-to-asset
- Asset Category / Type — add Kitchen / Equipment.
- Asset Item — register an Espresso Machine with a value and item count.
- It lists with a derived code
AST…and its category name (not an id). - Store Item → Asset — promote a stocked durable into the asset register.
Accounts & a balanced voucher
- Account Master — confirm/add accounts: Cash (Asset), Inventory (Asset), Accounts Payable (Liability), VAT Input (Asset).
- Transaction Entry — record the Lab 9 purchase: Dr Inventory 186, Dr VAT 27.90, Cr Payable 213.90.
- Save stays disabled until debits = credits; once balanced, it posts.
- What is the single rule the system enforces on every voucher?
Roles & access control
- Role Management — create a Cashier role.
- Employee Privilege — grant the Cashier role only the Sales / POS pages.
- A user in that role signs in to a sidebar with only POS — no Accounts, no Purchase.
- Where does the sidebar get its list of pages from?
End-to-end: one item's whole life
Without looking back at the earlier labs, drive a single new item through its entire life. This is your proof of mastery.
- Create a new item (e.g. Chocolate Muffin) and a requisition for it at HQ Main.
- Procure it through the full pipeline to Delivered.
- Transfer some to Branch 2 and sell a few over the POS.
- Audit Branch 2, then run a period close.
- Post the purchase journal in Accounts.
- You have run requisition → delivery → transfer → sale → audit → close → journal for one item, single-handed.
Final assessment
Five multiple-choice, five short-answer and one practical. Aim for 8/10 on the written part and a clean practical run. The trainer key is at the foot of the page.
Part A · Multiple choice
Choose the single best answer.
How does the on-hand quantity on Stock Balance change?
- A You type the new number directly
- B Only by posting a movement (entry, exit, sale, transfer, return, damage)
- C It is fixed at item creation
- D An administrator edits the database
What is the correct order of the procurement pipeline?
- A Plan → Requisition → PO → Tender → Delivery
- B Requisition → Plan → Indent → Tender → Quotes → PO → Delivery
- C Tender → PO → Requisition → Delivery
- D PO → Plan → Delivery → Requisition
An inter-store transfer is best described as…
- A A single exit at the source store
- B A dual-write: exit at the consigner + entry at the consignee, one transaction
- C A purchase order
- D A POS sale between stores
A negative variance in a stock audit results in…
- A Nothing — it's ignored
- B A silent balance edit
- C An auto-created Damage row linked to the audit
- D A new purchase order
Why might a page be missing from your sidebar?
- A The app is broken
- B Your role lacks the privilege for that page
- C The page was deleted
- D Stock is zero
Part B · Short answer
Part C · Practical
Trainer answer key — reveal
A1. B — balances are computed from movements, never typed.
A2. B — Requisition → Plan → Indent → Tender → Quotes → PO → Delivery.
A3. B — a dual-write in one transaction, both legs sharing a TRF-… code.
A4. C — a Damage row is auto-created, linked to the audit id, so the loss is recorded and written off.
A5. B — RBAC; the privilege is granted in Employee Privilege.
A6. Items are descriptions; quantity only exists per-store via movements (entry / delivery / transfer). A new item is zero everywhere until stock is posted.
A7. New Request → Indent Generated → Tender Created → Delivery Processing → Delivered.
A8. It writes a closing header per store and snapshots every StockAtStore row into StoreClossingBalanceDetails — a period-end picture, in one transaction.
A9. Total debits must equal total credits — the voucher must balance.
A10. MainMenu + SubMenu (via DevSP_…_UM_GetMenuDetailsByUserId); the route is "/" + SubMenuName, lower-cased with spaces removed.
Practical. Look for: requisition → plan (New Request) → Generate Indents → Create Tender → Compare → Award PO (Delivery Processing) → Receive (Delivered); Stock Balance up by the received qty; then a POS sale dropping it by one. Full marks if the candidate narrates the status at each hop.