Appearance
Inventory field guide
Inventory in OSERP is a controlled quantity and value ledger, not just a list of products. Every on-hand number must be explainable by item, owner, warehouse, bin, batch or serial, status, document, user, date, and cost. Use Demo Retail Group LLC and item DATE-A-5KG while practising.
Item header
Open Inventory → Items → New. Header fields identify the product and its commercial defaults.
| Field | Example | Purpose and impact |
|---|---|---|
| Item code | DATE-A-5KG | Immutable key for documents and APIs |
| Name | Medjool dates Grade A 5 kg | Printed description |
| Item type | Inventory | Enables quantity and valuation |
| Category | Produce | Account and reporting defaults |
| Inventory UoM | KG | Stock ledger unit |
| Sales UoM | Carton | Customer-facing conversion |
| Purchase UoM | Pallet | Supplier conversion |
| Barcode | 6290000042810 | Scan and duplicate check |
| Active | Yes | Future selection; history remains |
| Batch managed | Yes | Receipt and issue require lot |
| Serial managed | No | Set for individually tracked items |
| Expiry managed | Yes | FEFO and blocked expiry |
| Owner | Demo Retail Group | Legal stock ownership |
Do not change UoM or batch policy after transactions without an approved migration. Use a replacement item or conversion record so historic quantities remain interpretable.
Purchasing and sales defaults
Purchasing detail includes preferred supplier, supplier item code, minimum order, lead time days, purchase price list, currency, tax category, incoterm, receiving warehouse, quality requirement, and claim window. Sales detail includes price list, discount group, customer segment, delivery UoM, minimum shelf life, substitution policy, and revenue account.
For a 5-kg carton, define 1 CARTON = 5 KG and 1 PALLET = 40 CARTONS. Conversion must be exact or have controlled rounding. A purchase of 10 pallets therefore creates 200 cartons or 1,000 kg; the document should show both entered and base quantities.
Accounting and valuation
Accounting fields include inventory account, goods-received-not-invoiced account, COGS account, price-difference account, shrinkage account, expiry-write-off account, revenue account, and cost centre. Valuation method may be moving average, FIFO, standard cost, or another configured policy. Store currency, cost version, effective date, and approval.
If a 1,000-kg receipt costs AED 7.20/kg, inventory value is AED 7,200 before landed cost. Freight, duty, and insurance are allocated by approved basis and create a visible landed-cost adjustment. A sale relieves actual or configured cost and debits COGS; it should never use a manually typed cost.
Warehouse and bin fields
Warehouse header fields include code, name, company, branch, address, timezone, ownership policy, valuation scope, active status, and default accounts. Bin fields include zone, aisle, rack, level, capacity, temperature class, hazardous flag, pick sequence, and status.
DXB-FC-01 may contain ambient, chilled, quarantine, returns, and dispatch zones. A batch requiring 2–8°C cannot be put into an ambient bin without an approved override. A closed or blocked bin cannot receive or pick stock.
Batch and serial detail
Batch fields include batch number, manufacture date, expiry/best-before, supplier, country of origin, quality status, certificate, owner, warehouse, quantity, and hold reason. Quality statuses should include quarantine, released, hold, rejected, recalled, and expired. A status change records user, time, reason, evidence, and approval.
Serial fields include serial number, item, batch if applicable, condition, warranty start/end, owner, location, installed asset, status, and lifecycle event. A serial cannot be available in two locations at once. Removal, transfer, installation, return, and disposal remain in history.
Receipt fields
A goods receipt header records supplier, purchase order, company, warehouse, receipt date, delivery note, currency, exchange rate, receiver, and status. Lines record item, ordered quantity, received quantity, UoM, batch/serial, expiry, quality status, bin, price, tax, and discrepancy.
Receiving 480 cartons against an order for 500 must create a shortage or open quantity. Damaged cartons need reason, photos, and claim reference. Posting increases on-hand or quarantine and credits GRNI or receipt accrual. The supplier invoice later clears the temporary account.
Reservations and allocations
A reservation records source order, item, warehouse, batch policy, quantity, UoM, customer or project, priority, expiry, and owner. Reserved quantity is not physically issued; available-to-promise equals usable on-hand less reservations and holds. A hospital order with 180-day shelf-life requirement must not allocate a batch expiring sooner.
Allocation records proposed batch, actual batch, picker, timestamp, override, and reason. FEFO or FIFO policy should be visible. Cancelling an order releases reservation with a status transition and audit event.
Stock movement fields
Movement header includes type receipt, issue, transfer, adjustment, return, or write-off; company, warehouse, date, source document, user, reason, approval, and status. Lines include item, quantity, UoM, batch/serial, source bin, target bin, owner, cost, and dimensions.
An issue to a sales delivery credits inventory and debits COGS. A return reverses the original issue only after inspection. An expiry write-off debits expiry-loss account and credits inventory with reason and approver. A movement without source or reason belongs in an exception queue.
Transfers and ownership
A transfer stores source warehouse, target warehouse, dispatch date, expected arrival, carrier, owner, item, batch/serial, quantity, and status. Source dispatch reduces available stock; target receipt increases stock only when physically received. In-transit quantity explains the difference.
An inter-company transfer additionally needs selling company, buying company, transfer price, currency, tax/export treatment, due-to, due-from, and consolidation reference. A branch move within one legal company must not create artificial revenue.
Counts and adjustments
Count fields include warehouse, zone, count date, counter, witness, blind-count flag, item, batch/serial, book quantity, counted quantity, variance, reason, and approval. Freeze or snapshot rules prevent movement from invalidating the count. Variances over tolerance require investigation.
Never correct the book quantity directly. Post an approved adjustment with count document and journal mapping. The stock-audit report should drill from closing quantity to every movement and source document.
APIs and reporting
API payloads should use immutable item, warehouse, batch, and movement IDs plus external references and idempotency keys. Include tenant, company, and permission scope. Query on-hand by item, warehouse, owner, status, and updated timestamp; use cursor pagination. A repeated receipt request must not duplicate quantity or journal.
Reports should show on-hand, available, reserved, quarantine, in-transit, expired, value, and last movement by item. Reconcile the inventory subledger to GL by company, warehouse, category, currency, and period.
Practice checklist
Create the item with exact UoM conversions, purchase and sales defaults, accounts, a temperature-controlled warehouse, two batches, a partial receipt, a reservation, FEFO allocation, transfer, count variance, return, and expiry write-off. Explain every field’s owner, format, length or precision, status, permission, stock impact, journal, and API ID. Then prove a blocked batch cannot be sold and a client-owned stock movement cannot enter company inventory.
Related: Item Master Atlas, Stock screens, Warehouse replenishment, Advanced GL Mapping, and API cookbook.
Inventory configuration worksheet
Complete this worksheet before opening stock for a new company. The business owner confirms the policy, the warehouse manager confirms the physical behavior, and finance confirms the account and valuation effect.
| Area | Field | What to fill | Demo value | Acceptance evidence |
|---|---|---|---|---|
| Item | Item type | Inventory, service, bundle, or non-stock | Inventory | Quantity is or is not tracked as intended |
| Item | Base UoM | Smallest controlled stock unit | KG | Conversion test is exact |
| Item | Batch/serial | Tracking policy | Batch + expiry | Receipt refuses missing lot |
| Item | Cost method | FIFO, moving average, standard | Moving average | Cost layer report |
| Item | Ownership | Company, customer, supplier, consignment | Company | Ownership report |
| Warehouse | Valuation scope | Company, branch, or warehouse | Branch | Transfer test |
| Warehouse | Timezone | Local operational timezone | Asia/Dubai | Cut-off test |
| Bin | Capacity | Quantity or volume limit | 10,000 kg | Over-capacity refusal |
| Bin | Temperature | Ambient, chilled, frozen | 2–8°C | Batch allocation test |
| Batch | Quality status | Quarantine, released, hold, rejected | Quarantine | Sale is blocked |
| Receipt | Discrepancy rule | Short, excess, damage, substitute | Short open | Supplier claim |
| Reservation | Priority | Customer, project, channel, emergency | Hospital priority | ATP result |
| Movement | Reason | Required business explanation | Expiry write-off | Audit event |
| Count | Blind count | Hide book quantity or not | Yes | Counter independence |
| Accounts | Inventory/COGS | Ledger destinations | 121100/511100 | Journal simulation |
| API | External key | Idempotent source identity | WMS-2026-0918-44 | Replay does not duplicate |
How quantity becomes value
The quantity ledger and value ledger must be read together. A receipt first establishes item, lot, location, ownership, and quantity. Valuation then applies price, currency, cost method, landed cost, and rounding. A transfer inside one legal company changes location or responsibility but not group revenue. A sale reduces usable quantity and posts COGS from the configured valuation method. A write-off reduces quantity and posts to the reason-specific loss account.
Use this trace for the Demo Retail Group date lot:
text
PO-1042 → GR-2088 (1,000 kg, quarantine)
QA-771 → lot DATE-260917-A released
RES-531 → 600 kg reserved for Saudi order
DEL-901 → 600 kg issued, COGS calculated by valuation rule
COUNT-88 → 8 kg variance investigated
ADJ-90 → approved expiry loss, journal postedIf the quantity trail is complete but value does not reconcile, inspect cost, currency, landed-cost allocation, or account mapping. If value reconciles but quantity is wrong, inspect UoM, duplicate events, returns, transfers, or ownership. Do not “fix” both ledgers with one arbitrary adjustment.
Allocation and availability example
Suppose on-hand is 1,000 kg, 200 kg is quarantine, 100 kg is expired, and 300 kg is reserved. Usable on-hand is 700 kg (1,000 − 200 − 100), and available-to-promise is 400 kg (700 − 300). A sales order for 450 kg must remain partially open or trigger an approved alternative; it must not allocate quarantine or expired stock merely to show “confirmed”. The allocation response should expose each exclusion and its reason.
For FEFO, compare expiry dates after quality and ownership filters. For customer-owned stock, filter owner before company stock. For a project reservation, filter project and priority before general demand. Every override records the original recommendation, selected lot, user, reason, and approval.
Controls by lifecycle stage
At master setup, block duplicate codes, invalid UoM conversions, missing accounts, unsupported tracking changes, and absent ownership policy. At receipt, validate purchase order, supplier, warehouse, lot, expiry, quality, quantity, price, and tax. At storage, enforce bin capacity, temperature, hazardous rules, and owner segregation. At allocation, enforce status, FEFO/FIFO, shelf life, reservation priority, and available quantity. At issue, require source document, picker, batch/serial, destination, and approval for exceptions. At return, inspect condition before making stock available. At count, freeze or snapshot movements and require variance reason. At close, reconcile quantity, value, documents, and GL.
What each common status means
Draft means data can change and no stock or journal exists. Released means the item or lot may be selected by policy. Quarantine means physically present but unavailable. Hold means a specific review prevents use. Rejected means disposition is required. Reserved means promised but not issued. Picked means a warehouse task selected stock but ownership has not changed. Issued means the movement posted. In transit means source dispatch occurred and target receipt is pending. Closed means the process is complete, not that history vanished. The status label must agree with quantity and value; a “released” lot with a hold quantity is a control defect or a split-status design that needs explanation.
Inventory API safety pattern
An integration should send immutable IDs, tenant/company scope, external reference, event time, source system, and idempotency key. Validate master data before posting quantity. Use decimal strings for quantities and costs where precision matters. A safe receipt request includes warehouseId, itemId, lotId, quantity, uom, unitCost, currency, sourceDocumentId, and idempotencyKey. A retry with the same key returns the original result; a changed quantity with the same key is rejected as an idempotency conflict. Never accept a client-provided journal ID as authority for stock posting.
Consultant handover package
Deliver the item catalogue, UoM conversion table, warehouse/bin map, ownership rules, batch and serial policy, valuation policy, account-role matrix, reservation priorities, replenishment parameters, count tolerances, API replay tests, and ten reconciled sample movements. Include one accepted receipt, one quarantine, one shortage, one FEFO allocation, one transfer, one return, one write-off, one count variance, one blocked attempt, and one inter-company transfer. For every sample retain document ID, user, timestamp, source, status history, journal, and report output.