Loading

Stock & Inventory

An append-only movement ledger with locations, lots and genealogy, where on-hand is always derived, plus reservations and FIFO valuation.

How Stock Movements Work

Stock is a ledger of movements. Every receipt, issue, transfer, adjustment, count and scrap is a row, rows are never edited or deleted, and on-hand quantity is always worked out from them. The Stock console is where you record movements, look them up and correct them with a reversing movement.

Where to find it

Architect Panel → ERP - Operations:

  • Stock — the console: enquiry, movements, recording, reservations, lots, stocktake, replenishment, quality, Stock vs GL and set-up
  • Stock Movements — the movement ledger, read only
  • Stock Balances — the balance cache, read only and rebuildable
  • Stock Locations — where stock can be

Admin Panel → Inventory & Production:

  • Stock — the same console for storemen and planners who are not architects

Who can use it

ERP: Inventory, ERP: Reporting, ERP: Finance and ERP: Administration can open the console. Recording anything needs ERP: Inventory (or ERP: Administration) and write access to the company; everyone else can enquire. The Stock Movements, Stock Cost Layers, Stock Genealogy and Stock Balances datastores are read only in the generic editor, so a movement can only be made through the console or a document, where the stock rules, cost layers and ledger postings apply.

Recording a movement

  1. Open Stock, choose the Company and go to Record a movement.
  2. Choose the Type: Receipt (stock arriving from outside), Issue (stock leaving to outside), Transfer (between two of the company's locations), Adjust (a gain or a loss at one location), Scrap, Produce or Consume (outside a work order).
  3. Enter the Item and Quantity, and choose From and/or To. The form shows only the location boxes the type needs.
  4. For stock coming in, enter the Unit cost and Currency; blank uses the item's current cost.
  5. For a tracked item, enter the Lot or Serial. On an issue of a lot-tracked item a blank lot is picked first-expiry-first-out. Expiry (new lots) defaults from the item's shelf life.
  6. Set the Date (blank is now) and a Narrative saying why.
  7. Click Record movement. Tick Record as planned (post later) to hold it as a planned movement instead.

The message gives the stock entry number, any lots picked, and whether it posted to the general ledger.

Looking things up

  • Enquiry: enter an item and click Look up for On hand, Reserved, Available to promise, Value and Average unit cost, by location and by lot.
  • Movements: the ledger, newest first, filtered by State (Posted, Reserved, Planned, Cancelled), Type, lot and dates. Each row has Trace; planned rows have Post and Cancel.

Correcting a movement

You never edit a movement. On the Movements tab, click Reverse on the posted row, give a Reason (required) and click Reverse it. A mirror movement is recorded against the original, and its cost layers and ledger journal are reversed too. Both stay visible. Movements made by a work order are reversed in Production, and movements posted by a document (a goods receipt or delivery) are reversed by reversing or cancelling that document; the row tells you which.

The balance cache

On-hand figures are cached so screens load quickly. If the cache ever disagrees with the ledger, the Enquiry tab says so and shows a Cache disagrees pill. Click Rebuild the balance cache: it recomputes from the movements, is safe at any time and loses nothing.

What goes wrong

  • "Only Q of 'X' is at LOC.": stock cannot go negative unless the location allows it.
  • "Lot L of 'X' expired on D and cannot be issued" or "is in quarantine": scrap it, move it, or disposition its non-conformance.
  • "Item 'X' is not in the item master": once a company has items, every movement must use one (see the item master).
  • "Cannot reverse: … has already been issued or consumed": reverse the later movements first, or post an adjustment.
  • " Not posted to the general ledger: …" on the message: the movement is recorded but its journal is not; see posting stock to the ledger.

Worked example

A storeman receives 200 boxes of gloves at 3.10 into UK-MAIN with lot G-2210, then transfers 50 to the van stock location. A week later a count shows one box was booked to the wrong lot. Rather than edit anything, they reverse the original receipt with the reason "wrong lot keyed", which is refused because 50 have already moved on. They instead post an Adjust loss on G-2210 and an Adjust gain on the correct lot, each with a narrative, and the history shows exactly what happened.

Recommendations

  • Always write a narrative; it is the only record of why.
  • Correct with a reversal or an adjustment, never by editing data.
  • Load opening stock as dated receipts with realistic costs, not zero.
  • Rebuild the cache freely if a figure looks wrong; it is safe.

Reservations, Lots and Genealogy

Two questions get confused in stock systems: how much is here, and how much can be promised. Reservations separate them. Lots and serials give a batch or a unit its own identity, and genealogy links it to what consumed it, so a recall can be answered in minutes.

Where to find it

Architect Panel → ERP - Operations:

  • Stock — the console: the Reservations and Lots & traceability tabs, and Trace on any movement
  • Stock Lots — every lot and serial, read only
  • Stock Genealogy — the links between movements, read only

Admin Panel → Inventory & Production:

  • Stock — the same console for storemen and planners

On hand, reserved and available

  • On hand: physically in the location.
  • Reserved: committed and not yet issued.
  • Available to promise: on hand in locations that may be promised, less what is reserved there. Quarantine, scrap, work in progress and transit locations hold none.

A reservation is a movement in the reserved state: it changes what is available, never what is on hand, and it can never exceed what is available.

Reserving and releasing stock

  1. On the Stock console go to Reservations.
  2. Under Reserve stock, enter the Item, choose the From location (only locations whose stock may be promised are offered), enter the Quantity and what it is For (an order or customer reference).
  3. Click Reserve.
  4. To give it back, click Release on its row under Open reservations.

Releasing a work order's reservations happens when it is closed or cancelled.

Lots and serials

Whether an item is tracked is set on the item: Lot / batch tracked or Serial number tracked (see the item master). Once a company's item master is in use:

  • Every movement of a lot-tracked item names a lot; on an issue a blank lot is picked first-expiry-first-out.
  • Every unit of a serial-tracked item has its own serial, recorded as its own movement of one.
  • A lot is created by the first movement that names it, normally the receipt. Its expiry is the expiry entered, or the item's shelf life from the receipt date.
  • Expired and quarantined lots cannot be issued or consumed. They can still be transferred or scrapped.

Goods receipts in Purchasing carry a Lot and a Serial Number on each line, so tracked items can be received against a purchase order; receipts take expiry from the shelf life only.

Lots cannot be edited in the generic editor. Lots are quarantined by failed inspections and released by non-conformance dispositions. To correct a lot's dates, open it on Lots & traceability and use Correct this lot's dates or supplier reference (Expiry, Made, Supplier ref, then Save lot).

Answering a recall

  1. Go to Lots & traceability, enter the Lot or serial (tick Starts with (a batch family) for a range) and click Search.
  2. For each lot, read Where it is now and Every movement of the lot, newest first.
  3. Click Trace on a movement. Consumed into follows it forward into work orders and onward; Came from follows it back. Intercompany shipments of the same serial or lot are followed into the receiving group company, and companies you cannot read are shown as "another group company".

There is no one-click recall or mass quarantine: the trace tells you where the stock went, and you act on it with inspections, non-conformances or movements.

What goes wrong

  • "Only Q of 'X' is available at LOC.": you are reserving more than is available.
  • "LOC is not an available location": reserve from a Stock-type location.
  • "'X' is lot-tracked: name the lot" or "'X' is serial-tracked: every unit needs its serial number."
  • Trace says "Nothing recorded": links are written when an issue consumes a receipt's cost layers, and followed through work orders and intercompany shipments. Movements before tracking began have none.

Worked example

A supplier withdraws flour lot F-4471. Quality searches Lots & traceability for F-4471: 120 kg is still at UK-MAIN, and three consume movements took the rest into work orders. Trace on each shows the bread batches they became, and Trace on those shows two deliveries to customers. Quality raises a failed inspection to quarantine the remaining 120 kg and has the customer list in minutes.

Recommendations

  • Show available, not on hand, wherever a promise is made.
  • Capture lots at receipt, on the goods receipt line.
  • Set shelf life on perishable items so every receipt gets an expiry.
  • Rehearse a trace once before you need it for real.

Valuation and Cost Layers

Every receipt creates a cost layer: this many units, at this cost, on this date. Every issue consumes layers and records the cost it consumed, so the margin on a sale is fixed when the goods leave. How layers are consumed depends on the item's costing method, and a standard-costed item's value can be changed only by a revaluation that posts to the ledger.

Where to find it

Architect Panel → ERP - Operations:

  • Items — each item's costing method and standard cost, and the Cost history tab
  • Stock — the console: Enquiry shows value and average unit cost; Set-up holds the company's default costing method
  • Stock Cost Layers — the layers and what each issue consumed, read only
  • Structures — Cost roll-up, which can also set a new standard

Admin Panel → Inventory & Production:

  • Items — costing method and standard cost
  • Stock — value and average cost by item

The three costing methods

  • FIFO (first in, first out): issues consume the oldest layer first. An issue spanning two layers records both.
  • Moving average: issues are valued at the running average of what is on hand.
  • Standard cost: receipts are valued at the item's standard cost and the difference from the actual price goes to the purchase price variance account; production output goes in at standard and the difference goes to the production variance account.

The method comes from the item; if the item has none, from its item group; and failing that from the company's Default costing method on the Stock console's Set-up tab (FIFO unless changed). The method cannot change while stock is on hand: count the stock out, change it, and count it back in.

Where a cost comes from when none is given

A receipt or a stocktake gain entered without a unit cost is valued at the item's current cost: the standard cost for a standard-costed item, otherwise the average of its layers, then its last receipt, then its standard or rolled-up cost. An item with none of these goes in at zero, and zero-cost opening stock produces spectacular margins until it is used up, so always load realistic costs.

Changing a standard cost

A standard-costed item with stock on hand keeps its standard until that stock is revalued. To change it:

  1. Open Items, open the item and click Edit.
  2. Enter the new Standard cost and tick Revalue stock on hand if it changes.
  3. Click Save changes.

Every open layer is re-priced to the new standard and, where stock posts to the ledger, a revaluation journal is posted: a rise is Dr Inventory / Cr Revaluation, a fall the reverse. The revaluation account is the company's Standard cost revaluation account, or the variance account if that is blank. A group-wide item is revalued in every company that holds it. The save, the revaluation and the journal happen together or not at all. The same can be done from Structures → Cost roll-up with Also make it the item's standard cost and and revalue stock on hand.

Each revaluation is recorded on the Stock Revaluations datastore (old and new standard, quantity, change, journal and reason) and listed under Standard cost revaluations on the Stock vs GL tab.

What goes wrong

  • "Q is on hand at the current standard … Revalue the stock on hand to change it": you changed the standard without ticking the revalue box.
  • "Not revalued - company holds Q of CODE, and you cannot change stock there": someone with access to every company holding the item has to do it.
  • "Not revalued - … no inventory or revaluation/variance account is set" or "… you can change stock but not post journals for this company". Each ends The standard cost was NOT changed.
  • "Costing method … Count it out and back in to change the method.": the method is locked while stock is on hand.

Worked example

A FIFO component is received at 4.10 for 100 units, then at 4.60 for 100. An issue of 150 consumes 100 at 4.10 and 50 at 4.60, so it records 640.00, not 150 × 4.60. The margin on that order is fixed at the moment of issue. Separately, a standard-costed finished item moves from a standard of 22.00 to 23.50 after a cost roll-up; with 80 on hand, ticking the revalue box posts 120.00 to Inventory against the revaluation account in the same save.

Recommendations

  • Choose the costing method per item group before any stock arrives.
  • Never open with zero costs.
  • Change standards with the revalue box ticked, so stock and the inventory account agree.
  • Set a dedicated revaluation account so revaluations are not mixed with purchase price variance.

The Item Master

The item master says what each item is: how it is counted, costed, tracked and planned, and which accounts its stock lives in. Once a company has items, every stock movement, structure and order line must use one of them, so a mistyped code can no longer create a phantom item.

Where to find it

Architect Panel → ERP - Operations:

  • Items — the console: the item list, each item's stock, lots, transactions, where used and cost history
  • Item Groups — families of items sharing a default type, costing method and accounts

Architect Panel → ERP - Reference Data:

  • Units of Measure — the units items are counted in

Admin Panel → Inventory & Production:

  • Items — the same console for inventory staff

Who can use it

ERP: Inventory, ERP: Reporting, ERP: Finance and ERP: Administration can open it. Creating and changing items needs ERP: Inventory or ERP: Administration. Item group accounts are set by ERP: Finance or ERP: Administration.

Switching validation on

Until a company has an item, stock movements may name any code, and the list shows Item validation is not on yet for this company. Creating the first item for that company, or a group item shared by every company, switches validation on. From then on a movement naming an unknown, inactive or another company's item is refused. Load your items before you start recording stock.

Creating an item

  1. Open Items and click New item.
  2. Under The item, enter the Item code and Name. Choose the Company (All companies (group item) shares it with every company), the Item type (Stocked item, Non-stock item, Service, or Kit), the Unit of measure and, optionally, an Item group and Barcode.
  3. Under Inventory and traceability, set Lot / serial control, Shelf life (days) (sets a lot's expiry on receipt) and the Default location (used by work orders and replenishment).
  4. Under Costing and accounts, set the Costing method (blank uses the group or company default), Standard cost, List price, Currency, the sales and purchase tax codes, and any accounts that differ from the group. A blank account falls back to the item group, then the company's stock settings.
  5. Under Planning, set Make or buy (blank decides from the bill of materials), Lot sizing, Lead time (days), Reorder point, Reorder / fixed lot quantity, Safety stock, Minimum order quantity and Maximum stock.
  6. Leave Active (may be received and issued) ticked and click Create item.

An item's own Reorder point applies only at its default location; a location's reorder policy on the Stock console wins over it.

Reading an item

Open an item for its On hand, Available, Reserved, Stock value and costs, and the tabs Stock by location, Lots & serials, Transactions (the latest 50), Where used, Structure and Cost history.

What is fixed once stock has moved

  • The code, company and unit cannot change. Create a new item instead.
  • Lot control cannot change: count the stock out, change it, and count it back in by lot.
  • The costing method cannot change while stock is on hand, and the type cannot become non-stock.
  • An item with history is Deactivated rather than deleted: it stays readable but can no longer be received, issued or put in a structure. An item with no history can be Deleted. To reactivate, edit it and tick Active.

Item groups

Click Item groups on the Items console, then New item group. Give it a Code and Name, a Costing method, and under GL accounts the inventory, cost of sales, revenue, purchases and variance accounts its items fall back to. A group is shared by every company, so each account must exist in every trading company's chart.

What goes wrong

  • "Item X already exists.": codes are unique.
  • "Account X is not in the chart of accounts for this company." or, for a group item, not in the chart of every company.
  • "Changing the item master needs the ERP: Inventory role."
  • There is no import on the console: create items on the form, or have an architect load them.

Worked example

A distributor creates group RAW with FIFO costing and accounts 1300 and 5100, and group FG with standard costing. It then creates item SEAL-40 in RAW as a stocked item counted in EA, lot-tracked with a 365-day shelf life, default location UK-MAIN, reorder point 500 and lead time 14 days. That first item switches validation on, and the next stock movement naming "SEAL40" by mistake is refused instead of creating a stray item.

Recommendations

  • Create item groups first so items inherit accounts and costing.
  • Load every item before recording stock; the first one switches validation on.
  • Decide lot control up front; it is fixed once the item moves.
  • Use group items for anything more than one company stocks.

Stock Locations and Ledger Posting

Before stock can move, a company needs locations; before stock can reach the general ledger, it needs its accounts and the switch that turns posting on. Both live on the Stock console's Set-up tab, and the Stock vs GL tab checks afterwards that the inventory account agrees with the stock valuation.

Where to find it

Architect Panel → ERP - Operations:

  • Stock — the console: Set-up (locations and stock accounting) and Stock vs GL
  • Stock Accounting — the per-company settings; the row with no company is the group default
  • Stock Locations — the locations datastore

Architect Panel → ERP - Reference Data:

  • Location Types — stock, transit, quarantine, scrap, work in progress, customer and supplier

Admin Panel → Inventory & Production:

  • Stock — the same console for inventory and finance staff

Locations

  1. On the Stock console, go to Set-up and click New location on the Stock locations card.
  2. Enter a short Code (for example UK-MAIN) and a Name, and choose the Type: Stock, In transit, Quarantine, Scrap, Work in progress, Customer location or Supplier location.
  3. Optionally choose Inside (a parent location) and an Address reference.
  4. Under Counts as, tick Available to promise and pick, Planned against by MRP and, only if you really need it, May go negative.
  5. Click Create location.

Only Stock-type locations count as available. Keep a Quarantine location for failed inspections. An ERP administrator can make a location Shared by every company, for example goods in transit between companies. The code is fixed once stock has moved through it.

Turning on ledger posting

Stock is always valued, but nothing reaches the ledger until posting is switched on per company. It ships switched off, so a chart without stock accounts does not fill up with posting failures.

  1. On Set-up, in Stock accounting, check the account boxes. Blank boxes show the group default: Inventory 1300, Work in progress 1310, Cost of sales 5100, Goods received not invoiced 2120, Stock adjustments and counts 5150, Scrap and write-offs 5160, Purchase price variance 5990, Labour and overhead absorbed 5170, Purchases (document receipts) 5000 and Revenue 4000. Production variance (work orders) and Standard cost revaluation are blank, falling back to the purchase price variance account.
  2. Set Posting starts on. Movements dated earlier are never posted; opening stock is carried by an opening journal.
  3. Tick Post stock movements to the general ledger and click Save stock accounting.

Stock accounting is set by ERP: Finance or ERP: Administration with write access to the company. Once journals have posted, changing posting, the start date or the inventory, WIP or GRNI account asks you to confirm, and you should move the old account's balance with a journal.

What each movement posts

  • Receipt: Dr Inventory, Cr Goods received not invoiced (a goods receipt on a document credits the purchase account instead).
  • Issue: Dr Cost of sales, Cr Inventory.
  • Consume and Produce: Dr WIP / Cr Inventory, and Dr Inventory / Cr WIP.
  • Count or adjust: against Stock adjustments; Scrap: Dr Scrap and write-offs.
  • Transfers post nothing. A reversal reverses the original journal.

Inventory, cost of sales, revenue, purchase and variance accounts come from the item, then its group, then these settings; the others come from the settings only.

When a posting fails

A ledger failure never undoes the stock movement. The message ends Not posted to the general ledger: with the reason, and the console header shows N movement(s) not yet in the GL. Fix the cause (a missing account, a closed period, or no post access) and click Post to the GL. It needs post access to the company and the ERP: Inventory or ERP: Administration role; a user with ERP: Finance alone can see the backlog but not post it from here.

Checking the ledger agrees

The Stock vs GL tab sets the inventory account balance beside the valuation from the cost layers, today. It shows the GL backlog, entries on the account that did not come from stock, and the Unexplained difference, then breaks it down By inventory account, Inventory by item and By location, with a drill-down into an item's movements and a list of standard cost revaluations. Post the backlog clears unposted movements.

Worked example

A company goes live on 1 October. Finance loads the opening stock value with an opening journal to 1300, sets Posting starts on to 1 October, ticks posting and saves. The storeman's first receipt posts Dr 1300 / Cr 2120. A week later the Stock vs GL tab shows a difference of 340.00 on 1300: the item drill-down reveals a manual journal to the inventory account, which finance reverses.

Recommendations

  • Create a Quarantine and a Scrap location on day one.
  • Agree the accounts with your accountant before ticking posting.
  • Never journal to the inventory account by hand; it breaks the reconciliation.
  • Check Stock vs GL at every month end.

Stocktakes and Replenishment

A stocktake records what was physically counted and posts only the differences, so the count becomes an event in the ledger with a cause. Replenishment compares what is available with each item's reorder point and turns the shortfalls into a purchase requisition. Both are tabs on the Stock console.

Where to find it

Architect Panel → ERP - Operations:

  • Stock — the console: the Stocktake and Replenishment tabs
  • Stock Policies — reorder policies per item and location

Admin Panel → Inventory & Production:

  • Stock — the same console for storemen and buyers

Posting a stocktake

  1. On the Stock console go to Stocktake (shown to users who can record stock).
  2. For each line, enter the Item, choose the Location, name the Lot for a lot-tracked item, and enter what was Counted. Zero is a real count. Use Add line for more.
  3. For a line where you expect a gain, enter Unit cost (gains); a gain with no cost is valued at the item's current cost.
  4. Click Post stocktake and confirm with Post the stocktake.

Each difference is written as a count movement with the narrative "Stocktake: counted X, system Y", and to the ledger against the stock adjustments account when stock posts there. A line that agrees posts nothing. A stocktake can only be undone by reversing its movements.

Count lot-tracked items lot by lot: a lot-tracked line with no lot is refused. Serial-tracked items cannot be counted on this tab; correct them with Adjust movements by serial.

Reorder policies

A reorder policy says when to reorder an item at one location and how much. It wins over the item's own reorder point, which only applies at the item's default location.

  1. On Replenishment, click New policy on the Reorder policies card.
  2. Choose the Item and Location, and enter the Reorder point (reorder when available falls to this; it must be above zero).
  3. Enter a Reorder quantity, or an Order up to (max) level; blank max means point plus quantity.
  4. Optionally set Minimum order qty (MRP never plans less), Safety stock and Lead time (days).
  5. Click Save policy. There is one policy per item and location; saving again updates it.

Raising a requisition from the suggestions

  1. On Replenishment, filter by Location if you want.
  2. Read the suggestions: each item at or below its reorder point, with Available, Reorder point, Safety stock, Lead time, a suggested Order qty you can change, and From (Item's reorder point or Location policy).
  3. Tick the lines to order and click Raise a purchase requisition for the chosen lines.
  4. The message gives the requisition number; submit it from Purchasing (see Transactional Documents).

Suggestions read available, not on hand, because stock already reserved cannot cover a reorder point. The suggested quantity tops up to the maximum, or to the reorder point plus the reorder quantity. Lot sizing and minimum order quantities are MRP's, not replenishment's; see Structures & MRP.

What goes wrong

  • "N line(s) are missing an item, a location or a counted quantity": complete or remove them.
  • "A policy needs a reorder point above zero." (the on-screen hint suggests 0 is allowed; it is refused).
  • "Give a reorder quantity, or a maximum to order up to."
  • No requisition button: you cannot record stock, or the purchase requisition document type is not set up.
  • "Nothing is at or below its reorder point.": either all is well or no policies exist.

Worked example

A warehouse counts its highest-value items monthly. The team counts 40 lines in UK-MAIN, enters them with lots, and posts: "3 adjustments posted from 40 counted lines". On Replenishment, SEAL-40 shows available 380 against a location policy with reorder point 500 and maximum 2,000, suggesting 1,620. The buyer ticks it with two others and raises one requisition.

Recommendations

  • Count by location and lot exactly as stock is stored.
  • Count your most valuable items most often; nothing schedules counts for you, so keep a counting calendar.
  • Set policies per location rather than relying on the item's single reorder point.
  • Review suggestions daily for fast movers; the role centre counts items below reorder point.