Skip to main content Enter
ERP.AI Inventory Management

Inventory Management

Start now
Pricing Frequently asked questions Get started
Build with Proto

Modules

Stock & locationsSee where stock is held, who owns it and what your team can use now. Receiving & putawayRecord each delivery, protect its stock identity and move received goods into the right location. Issues & returnsReserve the right stock, record actual consumption and trace returned goods to their original movement. Stock transfersMove stock between locations while keeping quantities, ownership and in-transit value accounted for.
Counts & adjustmentsCount against a controlled stock snapshot, investigate differences and post corrections with clear authority. ReplenishmentGive buyers a reliable shortage worklist with clear quantities, supplier context and follow-up. Inventory analysisExplain inventory value, consumption, shortages and corrections from the stock evidence behind them.

Inventory Management

Start now
Pricing Frequently asked questions Get started
Build with Proto

Processes

Receive and put awayConfirm the delivery, establish its stock basis and put each received portion into storage. Issue and return stockClaim eligible stock, record actual issue and resolve returns against source goods and reviewed value. Transfer stockAuthorize a move, trace dispatched stock and reconcile every portion at its destination or source.
Count to adjustPlan a controlled count, review the difference and reconcile stock with a traceable correction. Replenish stockTurn current stock shortages into a clear purchasing worklist without losing the basis of each recommendation.

Inventory Management

Start now
Pricing Frequently asked questions Get started
Build with Proto

Industries

Wholesale and distributionKeep warehouse stock, transfers and replenishment aligned with daily demand. Retail and spare partsFind the stock you can use and spot replenishment needs across stores and stockrooms.
Manufacturing stockroomsTrack materials entering, moving through and leaving the stockroom. Service and maintenance teamsKeep parts visible across depots, stores and service locations.

Inventory Management

Start now
Pricing Frequently asked questions Get started
Build with Proto

Reference

Roles and permissionsGive warehouse teams clear responsibilities and the access their work needs. Reports and analyticsUnderstand stock availability, value and the reasons quantities change. Data modelInspect the stock identities, movement history and controls behind the specification.
IntegrationsConnect stock work to purchasing, demand, devices and accounting. ImplementationPlan the first release around trusted quantities, costs and warehouse responsibilities. AI assistants and APIHelp teams prepare stock work and investigate exceptions.

Inventory Management

Start now
Pricing Frequently asked questions Get started
Build with Proto
All systems
Modules
Stock & locationsSee where stock is held, who owns it and what your team can use now.Receiving & putawayRecord each delivery, protect its stock identity and move received goods into the right location.Issues & returnsReserve the right stock, record actual consumption and trace returned goods to their original movement.Stock transfersMove stock between locations while keeping quantities, ownership and in-transit value accounted for.Counts & adjustmentsCount against a controlled stock snapshot, investigate differences and post corrections with clear authority.ReplenishmentGive buyers a reliable shortage worklist with clear quantities, supplier context and follow-up.Inventory analysisExplain inventory value, consumption, shortages and corrections from the stock evidence behind them.
Processes
Receive and put awayConfirm the delivery, establish its stock basis and put each received portion into storage.Issue and return stockClaim eligible stock, record actual issue and resolve returns against source goods and reviewed value.Transfer stockAuthorize a move, trace dispatched stock and reconcile every portion at its destination or source.Count to adjustPlan a controlled count, review the difference and reconcile stock with a traceable correction.Replenish stockTurn current stock shortages into a clear purchasing worklist without losing the basis of each recommendation.
Industries
Wholesale and distributionKeep warehouse stock, transfers and replenishment aligned with daily demand.Retail and spare partsFind the stock you can use and spot replenishment needs across stores and stockrooms.Manufacturing stockroomsTrack materials entering, moving through and leaving the stockroom.Service and maintenance teamsKeep parts visible across depots, stores and service locations.
Reference
Roles and permissionsGive warehouse teams clear responsibilities and the access their work needs.Reports and analyticsUnderstand stock availability, value and the reasons quantities change.Data modelInspect the stock identities, movement history and controls behind the specification.IntegrationsConnect stock work to purchasing, demand, devices and accounting.ImplementationPlan the first release around trusted quantities, costs and warehouse responsibilities.AI assistants and APIHelp teams prepare stock work and investigate exceptions.
Sign in
Sign in Start now
Inventory Management References
Data model3 of 6
  • Roles and permissions1 of 6
  • Reports and analytics2 of 6
  • Data model3 of 6
  • Integrations4 of 6
  • Implementation5 of 6
  • AI assistants and API6 of 6

Data model

Inspect the stock identities, movement history and controls behind the specification.

37 tables · 203 relationships

This page describes the authored Inventory Management model for implementation teams. Its 37 tables preserve physical quantities, ownership, carrying value and the decisions behind stock actions. Application configuration, integrations and API availability must be verified during rollout.

Data model 35 of 37 tables drawn
mastertransactionline itemfinance Products.Category → ProductCategories Products.UOM → UnitsOfMeasure Products.PrimarySupplier → Suppliers Products.MasterChange → MasterChanges ProductCategories.MasterChange → MasterChanges Warehouses.Manager → Users Warehouses.MasterChange → MasterChanges Bins.Warehouse → Warehouses Bins.MasterChange → MasterChanges UnitsOfMeasure.MasterChange → MasterChanges Suppliers.MasterChange → MasterChanges ReorderRules.Product → Products ReorderRules.Warehouse → Warehouses ReorderRules.Supplier → Suppliers ReorderRules.Policy → InventoryPolicies ReorderRules.MasterChange → MasterChanges UserWarehouses.User → Users UserWarehouses.Warehouse → Warehouses UserWarehouses.MasterChange → MasterChanges ProductConversions.Product → Products ProductConversions.FromUOM → UnitsOfMeasure ProductConversions.MasterChange → MasterChanges InventoryPolicies.Warehouse → Warehouses InventoryPolicies.PreparedBy → Users InventoryPolicies.MasterChange → MasterChanges StockSummaries.Product → Products StockSummaries.Warehouse → Warehouses StockSummaries.PrimarySupplier → Suppliers StockSummaries.Policy → InventoryPolicies StockSummaries.ReorderRule → ReorderRules Inventory.Product → Products Inventory.Warehouse → Warehouses Inventory.Bin → Bins Inventory.TransitTransfer → Transfers Inventory.MigrationBatch → MigrationBatches StockMovements.Product → Products StockMovements.FromWarehouse → Warehouses StockMovements.FromBin → Bins StockMovements.Operator → Users StockMovements.Event → StockEvents StockMovements.Position → Inventory GoodsReceipts.Supplier → Suppliers GoodsReceipts.Product → Products GoodsReceipts.Warehouse → Warehouses GoodsReceipts.Bin → Bins GoodsReceipts.UOM → UnitsOfMeasure GoodsReceipts.ReceivedBy → Users GoodsReceipts.Conversion → ProductConversions GoodsReceipts.PostedEvent → StockEvents GoodsReceipts.MigrationBatch → MigrationBatches Issues.Product → Products Issues.Warehouse → Warehouses Issues.Bin → Bins Issues.UOM → UnitsOfMeasure Issues.IssuedBy → Users Issues.Conversion → ProductConversions Issues.MigrationBatch → MigrationBatches Transfers.FromWarehouse → Warehouses Transfers.FromBin → Bins Transfers.Product → Products Transfers.UOM → UnitsOfMeasure Transfers.RequestedBy → Users Transfers.Conversion → ProductConversions Transfers.Policy → InventoryPolicies Transfers.Decision → ApprovalDecisions Transfers.MigrationBatch → MigrationBatches CycleCounts.Warehouse → Warehouses CycleCounts.Coordinator → Users CycleCounts.Lock → CountLocks CycleCounts.Policy → InventoryPolicies PhysicalInventories.Warehouse → Warehouses PhysicalInventories.Coordinator → Users PhysicalInventories.Lock → CountLocks PhysicalInventories.Policy → InventoryPolicies PhysicalInventories.Decision → ApprovalDecisions StockAdjustments.Product → Products StockAdjustments.Warehouse → Warehouses StockAdjustments.Bin → Bins StockAdjustments.RequestedBy → Users StockAdjustments.Position → Inventory StockAdjustments.Transfer → Transfers StockAdjustments.CycleCountLine → CycleCountLines StockAdjustments.PhysicalInventoryLine → PhysicalInventoryLines StockAdjustments.Policy → InventoryPolicies StockAdjustments.Decision → ApprovalDecisions StockAdjustments.PostedEvent → StockEvents StockAdjustments.MigrationBatch → MigrationBatches StockAdjustments.OriginSupplier → Suppliers ReturnAuthorizations.Supplier → Suppliers ReturnAuthorizations.OriginalReceipt → GoodsReceipts ReturnAuthorizations.Product → Products ReturnAuthorizations.Warehouse → Warehouses ReturnAuthorizations.OriginalIssue → Issues ReturnAuthorizations.OriginalMovement → StockMovements ReturnAuthorizations.Bin → Bins ReturnAuthorizations.UOM → UnitsOfMeasure ReturnAuthorizations.AuthorizedBy → Users ReturnAuthorizations.Decision → ApprovalDecisions ReturnAuthorizations.MigrationBatch → MigrationBatches ApprovalDecisions.RequestedBy → Users ApprovalDecisions.Policy → InventoryPolicies MasterChanges.PreparedBy → Users MasterChanges.Decision → ApprovalDecisions StockEvents.GoodsReceipt → GoodsReceipts StockEvents.Issue → Issues StockEvents.Transfer → Transfers StockEvents.Adjustment → StockAdjustments StockEvents.ReturnAuthorization → ReturnAuthorizations StockEvents.MigrationBatch → MigrationBatches StockEvents.PerformedBy → Users StockEvents.Decision → ApprovalDecisions StockEvents.IntegrationEvent → IntegrationEvents StockEvents.CostPolicy → InventoryPolicies StockEvents.StockedProduct → Products Reservations.Position → Inventory Reservations.Issue → Issues Reservations.Transfer → Transfers Reservations.ReturnAuthorization → ReturnAuthorizations Reservations.MigrationBatch → MigrationBatches Reservations.ClaimEvent → StockEvents CostLayers.Product → Products CostLayers.Position → Inventory CostLayers.OriginalReceipt → GoodsReceipts CostLayers.OriginalIssue → Issues CostLayers.Supplier → Suppliers CostLayers.CreatedEvent → StockEvents CostLayers.MigrationBatch → MigrationBatches CostAllocations.Event → StockEvents CostAllocations.Movement → StockMovements CostAllocations.Layer → CostLayers CountLocks.Warehouse → Warehouses CountLocks.CycleCount → CycleCounts CountLocks.PhysicalInventory → PhysicalInventories CountLocks.Coordinator → Users CountObservations.CycleCountLine → CycleCountLines CountObservations.PhysicalInventoryLine → PhysicalInventoryLines CountObservations.Lock → CountLocks CountObservations.AssignedTo → Users ReorderAlerts.Summary → StockSummaries ReorderAlerts.AcknowledgedBy → Users ReorderAlerts.Policy → InventoryPolicies IntegrationEvents.StockEvent → StockEvents IntegrationEvents.AccountingExport → AccountingExports IntegrationEvents.ReconciledBy → Users MigrationBatches.PreparedBy → Users MigrationBatches.Decision → ApprovalDecisions CycleCountLines.Product → Products CycleCountLines.Bin → Bins CycleCountLines.CountedBy → Users CycleCountLines.CycleCount → CycleCounts CycleCountLines.Position → Inventory CycleCountLines.Lock → CountLocks CycleCountLines.FirstObservation → CountObservations CycleCountLines.Decision → ApprovalDecisions CycleCountLines.Adjustment → StockAdjustments PhysicalInventoryLines.Product → Products PhysicalInventoryLines.Bin → Bins PhysicalInventoryLines.CountedBy → Users PhysicalInventoryLines.PhysicalInventory → PhysicalInventories PhysicalInventoryLines.Position → Inventory PhysicalInventoryLines.Lock → CountLocks PhysicalInventoryLines.FirstObservation → CountObservations PhysicalInventoryLines.Decision → ApprovalDecisions PhysicalInventoryLines.Adjustment → StockAdjustments AccountingExports.Policy → InventoryPolicies AccountingExports.PreparedBy → Users AccountingExports.Decision → ApprovalDecisions AccountingExports.IntegrationEvent → IntegrationEvents ProductsmasterSKUCategoryUOM ProductCategoriesmasterCategoryCodeParentCategoryMasterChange WarehousesmasterWarehouseCodeManagerMasterChange BinsmasterBinCodeWarehouseMasterChange UnitsOfMeasuremasterUOMCodeBaseUOMMasterChange SuppliersmasterSupplierCodeMasterChangeCompanyName ReorderRulesmasterProductWarehouseSupplier UsersmasterNameUserIDRole UserWarehousesmasterUserWarehouseMasterChange ProductConversionsmasterProductFromUOMToUOM InventoryPoliciesmasterPolicyNumberStatusWarehouse StockSummariesmasterSummaryNumberProductWarehouse InventorytransactionLotNumberStatusProduct StockMovementstransactionLotNumberStatusProduct GoodsReceiptstransactionReceiptNumberStatusSupplier IssuestransactionIssueNumberStatusProduct TransferstransactionTransferNumberStatusFromWarehouse CycleCountstransactionCountNumberStatusWarehouse PhysicalInventoriestransactionInventoryNumberStatusWarehouse StockAdjustmentstransactionAdjustmentNumberStatusProduct ReturnAuthorizationstransactionRMANumberDispositionStatus ApprovalDecisionstransactionDecisionNumberStatusRequestedBy MasterChangestransactionChangeNumberStatusPreparedBy StockEventstransactionEventNumberStatusGoodsReceipt ReservationstransactionReservationNumberPositionIssue CostLayerstransactionLayerNumberProductPosition CostAllocationstransactionAllocationNumberStatusEvent CountLockstransactionLockNumberStatusWarehouse CountObservationstransactionObservationNumberStatusCycleCountLine ReorderAlertstransactionAlertNumberStatusSummary IntegrationEventstransactionIntegrationNumberStatusStockEvent MigrationBatchestransactionBatchNumberStatusPreparedBy CycleCountLineslineLotNumberStatusProduct PhysicalInventoryLineslineLotNumberStatusProduct AccountingExportstransactionExportNumberStatusPolicy
Data model35 of 37 tables, within two hops of GoodsReceipts

How the model is organized

Products and locations

Products, ProductCategories, Warehouses, Bins, UnitsOfMeasure, ProductConversions and Suppliers establish the controlled masters. Transaction conversions retain the product-specific stocking-unit basis used at the time.

  • Products
  • ProductCategories
  • Warehouses
  • Bins
  • UnitsOfMeasure
  • ProductConversions
  • Suppliers establish the controlled masters

Identity and access

Users identifies actual people; UserWarehouses retains effective site assignments. Child records, reports and service actions inherit the appropriate scope and protected cost restrictions.

  • Users identifies actual people; UserWarehouses retains effective site assignments

Stock and value

Inventory stores the controlled position. StockEvents groups the business effect and StockMovements records its signed position legs. Reservations owns the exact demand claim. CostLayers and CostAllocations preserve remaining carrying value, source lineage and effective consumption or relocation.

  • Inventory stores the controlled position

Operational work

GoodsReceipts retains the external delivery and original arrival. Issues retains demand and actual consumption, Transfers separates departure from arrival and remaining transit, and ReturnAuthorizations links bounded return work to its original movement.

  • GoodsReceipts retains the external delivery
  • original arrival

Counting

CycleCounts and CycleCountLines, PhysicalInventories and PhysicalInventoryLines define assigned work. CountLocks preserves the controlled scope and versions; CountObservations retains first and recount evidence. StockAdjustments records the accepted correction and its posting outcome.

  • CycleCounts
  • CycleCountLines
  • PhysicalInventories
  • PhysicalInventoryLines define assigned work

Governance

InventoryPolicies and StockAdjustmentReasons define applicable conditions. MasterChanges retains proposed sensitive edits; ApprovalDecisions binds the actual reviewer, source version, policy and authority to the decision.

  • InventoryPolicies
  • StockAdjustmentReasons define applicable conditions

Replenishment

ReorderRules supplies product/site settings. StockSummaries includes configured stocked products even at zero quantity; ReorderAlerts retains each active attention episode through acknowledgment and recovery.

  • ReorderRules supplies product/site settings

History and handoff

StockSnapshots retains report cutoffs and populations. AccountingExports tracks approved incremental financial handoff, IntegrationEvents tracks source/action delivery and outcomes, and MigrationBatches preserves reviewed opening positions and historical source mappings.

  • StockSnapshots retains report cutoffs
  • populations

Keys and references

A stock identity includes product, site, bin, applicable lot and serial, owner, custody and any transit transfer. The bin belongs to its warehouse. A serial-controlled product has one positive position and one base unit for that serial; moving or splitting work cannot clone it.

Each movement row affects one position. Paired internal legs preserve total quantity and owned value. Reservations do not create another movement, and a pick does not consume the final issue twice. Cost-layer splits reduce the parent’s remaining quantity as the child receives it, preserving lineage without valuing both for the same units.

Review-time cost proposals do not affect layer balances. Effective allocations belong to a posted stock event, with the approved source version, exact quantities and deterministic value remainder. Supplier currency is descriptive; owned values use the installation valuation currency and retain reviewed external conversion evidence where needed.

Count locks validate the whole affected population, including new identities and cost-pool changes that reach a locked position. Authorized corrections bridge the original count to current versions without posting the same difference again. Other unexplained changes require recovery and fresh evidence.

Migration order

  1. 1 Record source namespaces, cutoff, file digests and stable identities in the migration batch. Agree the external accounting opening balance and how later incremental movements will reconcile to it.
  2. 2 Load product categories, stocking units, products and reviewed conversions; establish warehouses, shallow bins, suppliers and active product/site assortment. Load users and effective warehouse assignments with cost visibility checked.
  3. 3 Activate reviewed policies, adjustment reasons, cost methods and reorder settings through the required independent decisions. Unknown costs or missing conversion evidence remain exceptions.
  4. 4 Load current quantity positions and remaining cost layers once, preserving owner, lot, serial, expiry, holds, picked custody and transit. Do not replay all historic movements and also load the resulting current balance.
  5. 5 Reconcile active reservations and partial receipt, issue, transfer and return documents. Preserve gross historical counters and outstanding source requests as the baseline; later native actions add once without reopening already consumed demand.
  6. 6 Compare full quantity, ownership, serial, value, claim and transit totals with the source. Review representative partial and reversal cases, resolve provider uncertainty, and have a different eligible Inventory Manager approve activation before new work begins.

Tables

37 tables
ProductsSKU master — finished goods, components, consumables, spares.master
FieldTypeRequiredDetails
SKUtextyesStock-keeping unit code
Descriptiontextyes
Categoryreferenceyes→ ProductCategories
ItemTypeselectyesFinishedGood, Component, Raw, Consumable, Spare
UOMreferenceyes→ UnitsOfMeasure
StandardCostcurrencyReviewed current standard in InventoryPolicies.ValuationCurrency per stocking UOM; null until known; mandatory before a Standard-cost posting
CostMethodselectyesStandard, WeightedAverage, FIFO
UnitPricecurrencyInfo only
PrimarySupplierreference→ Suppliers
LeadTimeDaysnumber
ReorderPointnumberFallback when no ReorderRule exists
SafetyStocknumber
LotControlledtoggleyesForces LotNumber on movements
SerialControlledtoggleyesForces SerialNumber
ShelfLifeDaysnumberFallback only for a genuinely new lot with evidenced manufacture/origin date; later receipts/returns never reset established expiry
BarcodetextUPC / EAN
ABCClassselectA, B, C (count cadence)
Activetoggleyes
CostKnowntoggleyesWhether the reviewed applicable cost basis exists; a real zero cost requires explicit evidence
ReorderQuantitynumberFallback fixed order quantity in stocking units
MinimumOrderQuantitynumberFallback supplier minimum in stocking units
OrderMultiplenumberPositive order multiple in stocking units
CostVersionnumberyesEffective reviewed cost/method version; referenced history never recalculated
MergedIntoreference→ Products. Approved surviving identity; immutable historic SKU snapshots remain
MasterChangereference→ MasterChanges
ProductCategoriesHierarchical SKU categories (Electronics → Cables → USB-C).master
FieldTypeRequiredDetails
CategoryCodetextyes
CategoryNametextyes
ParentCategoryreference→ ProductCategories (self)
Activetoggleyes
MasterChangereference→ MasterChanges
WarehousesPhysical warehouse / store / stockroom master.master
FieldTypeRequiredDetails
WarehouseCodetextyes
Nametextyes
Addresstextyes
WarehouseTypeselectyesMain, Branch, Store, Stockroom, Consignment, Quarantine
Managerreference→ Users
TimeZonetext
Activetoggleyes
MasterChangereference→ MasterChanges
BinsNamed storage locations within a warehouse. Flat bin grid — enoughmaster
FieldTypeRequiredDetails
BinCodetextyes
Warehousereferenceyes→ Warehouses
ZoneselectReceiving, Storage, Pick, Ship, Quarantine, Returns
BinTypeselectShelf, Pallet, Bulk, Bench, Other
Activetoggleyes
MasterChangereference→ MasterChanges
UnitsOfMeasureUoM master with conversion factors — items buy in cases, stock inmaster
FieldTypeRequiredDetails
UOMCodetextyesEA, KG, L, M, Box, Case, Pallet
Descriptiontextyes
BaseUOMreference→ UnitsOfMeasure (canonical stocking UoM)
ConversionFactornumberPositive product-independent dimensional factor only; packaging factors require ProductConversions
Activetoggleyes
DimensionselectyesCount, Mass, Volume, Length, Other
PrecisionnumberyesNonnegative allowed decimal places; serial stock is integral
MasterChangereference→ MasterChanges
SuppliersLight supplier master — name, contact, terms. No contracts, nomaster
FieldTypeRequiredDetails
SupplierCodetextyes
CompanyNametextyes
PrimaryContacttext
Emailtext
Phonetext
CurrencyselectUSD, EUR, GBP, CAD, AUD, JPY, CHF, SGD, Other. Supplier information only; does not set inventory valuation currency
PaymentTermsselectNet 15, Net 30, Net 45, Prepaid
Activetoggleyes
MasterChangereference→ MasterChanges
ReorderRulesEffective product/warehouse replenishment rule using eligible owned availability. Produces advice for an external Buyer; no local purchasing order or approval.master
FieldTypeRequiredDetails
Productreferenceyes→ Products
Warehousereferenceyes→ Warehouses
ReorderPointnumberyesEligible current owned available stocking quantity trigger; equality fires
ReorderQuantitynumberyesSuggested order size
MinimumOrderQuantitynumberSupplier MOQ
LeadTimeDaysnumberOverrides Products.LeadTimeDays
MethodselectyesFixedReorderPoint, MinMax, Manual
LastFiredAtdate
Activetoggleyes
TargetQuantitynumberRequired for MinMax; greater than or equal to ReorderPoint
OrderMultiplenumberPositive stocking-unit rounding multiple
Supplierreference→ Suppliers. Optional override of product primary supplier
Policyreferenceyes→ InventoryPolicies
MasterChangereference→ MasterChanges
StockAdjustmentReasonsReason-code master for adjustments — damage, shrinkage, found stock,master
FieldTypeRequiredDetails
ReasonCodetextyes
Nametextyes
DirectionselectyesIncrease, Decrease, Either
RequiresApprovaltoggleyesTrue always requires independent Inventory Manager approval; false permits only eligible policy-qualified automatic execution
GLAccounttextReviewed external accounting offset mapping; local app does not operate the GL
Activetoggleyes
Policyreferenceyes→ InventoryPolicies
MasterChangereference→ MasterChanges
InventoryCurrent controlled stock position; derived from committed StockMovements, never directly edited. Unique product, warehouse, normalised bin, lot, serial, owner, custody state and transit-transfer identity.transaction
FieldTypeRequiredDetails
Productreferenceyes→ Products
Warehousereferenceyes→ Warehouses
Binreference→ Bins
LotNumbertextRequired when Product.LotControlled
SerialNumbertextRequired when Product.SerialControlled
QuantityOnHandnumberyesNonnegative stocking-unit quantity, including held/picked/transit custody; serial position 0 or 1
QuantityAllocatednumberyesRead-only sum of active Reserved or Picked Reservations still attached to this position; exclude consumed/released portions
QuantityAvailableformulayesfx: max(0, QuantityOnHand - QuantityAllocated) only for active owned Stored stock with Status Available, valid expiry and no blocking lock; otherwise 0
UnitCostcurrencyCurrent valuation summary per stocking unit from remaining CostLayers; nullable for third-party custody; not a FIFO layer selector
ExpiryDatedateEstablished lot/serial expiry; immutable source identity unless independently corrected with evidence; actual expiry checked on every availability/issue action
StatusselectyesAvailable, Quarantine, Hold, Expired, Damaged
LastMovementDatedate
LastUpdateddateyes
PositionNumbertextyesStable internal position identity
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesInstallation owner key for Owned; external legal owner key for ThirdParty
CustodyStateselectyesStored, Picked, InTransit
TransitTransferreference→ Transfers. Required exactly when InTransit; Warehouse is carrying/source site until arrival
PositionVersionnumberyesIncremented atomically by every quantity/status/identity/value effect
ValueOnHandcurrencySum remaining owned layer values; third-party custody excluded from owned valuation
UpdatedAtdatetimeyesActual last position update with timezone
LastConsumptionAtdatetimeLast effective SalesPick/InternalUsage final issue; never refreshed by relocation
DaysToExpiryformulafx: whole calendar days from warehouse-local today to ExpiryDate; null when no expiry
MigrationBatchreference→ MigrationBatches
StockMovementsAppend-only signed leg for one exact Inventory position inside a StockEvent. Internal relocation has paired legs; external receipt/issue has one signed stock side. Value-only legs support cost revaluation without changing quantity.transaction
FieldTypeRequiredDetails
Productreferenceyes→ Products
FromWarehousereference→ Warehouses
FromBinreference→ Bins
ToWarehousereference→ Warehouses
ToBinreference→ Bins
LotNumbertext
SerialNumbertext
MovementTypeselectyesReceipt, Putaway, Issue, Transfer, Pick, Adjustment, ReturnIn, ReturnOut
QuantitynumberyesSigned stocking-unit delta for Position; +in or -out; zero allowed for evidenced value-only action or StockStatusChange audit leg
UnitCostcurrencyFrozen carrying cost per stocking unit for this leg; owned value also recorded explicitly for rounding
ReferenceTypeselectGoodsReceipt, Issue, Transfer, CycleCount, PhysicalInventory, Adjustment, Return, Manual
ReferenceIDtextDisplay projection of the validated StockEvents source document; never the deduplication key
MovementDatedateyes
Operatorreference→ Users
MovementNumbertextyesUnique Event plus LegNumber
Eventreferenceyes→ StockEvents
Positionreferenceyes→ Inventory
LegNumbernumberyesUnique sequence within Event
ValueDeltacurrencySigned owned carrying-value effect, in the installation valuation currency
OccurredAtdatetimeyesPhysical/economic evidence timestamp
PostedAtdatetimeyesAtomic local posting time
StatusselectyesPosted. Compensation is another immutable row, never deletion
ReversalOfreference→ StockMovements. Bounded compensation of this original leg; downstream tracing remains mandatory
Reasonreference→ StockAdjustmentReasons
BeforeVersionnumberyesExpected current position version
AfterVersionnumberyesCommitted resulting position version
SourceModeselectyesNative, MigrationBaseline
GoodsReceiptsOne partial delivery for one external PO line and one controlled product identity. Posted arrival quantity, location, cost and source key are immutable; putaway is a separate bounded operation.transaction
FieldTypeRequiredDetails
ReceiptNumbertextyes
ExternalPOReferencetextPO number from the external procurement system
Supplierreference→ Suppliers
Productreferenceyes→ Products
ReceiptDatedateWarehouse-local date derived from actual ReceivedAt; null before arrival
Warehousereferenceyes→ Warehouses
Binreference→ Bins. Immutable arrival/receiving bin, belongs to Warehouse; putaway does not overwrite it
QuantityReceivednumberyesPositive receipt quantity in UOM; frozen on Receipt posting; base quantity derived once
UOMreferenceyes→ UnitsOfMeasure
UnitCostcurrencyReviewed valuation-currency cost per receipt UOM; null while unresolved; protected from Operator editing
LotNumbertextRequired when Product.LotControlled
SerialNumbertextRequired when Product.SerialControlled
ExpiryDatedateEstablished source lot/serial expiry; approved original-date fallback only for new identity, never receipt-date renewal
ReceivedByreference→ Users. Actual confirmed receiving actor; null before confirmation
StatusselectyesDraft, Received, PutAway, Closed, Cancelled
SourceNamespacetextyesExternal/manual source namespace
SourceLineIDtextyesPO line identity, or reviewed non-PO source line
DeliveryIDtextyesSeparate physical partial-delivery identity
SourceVersiontextyesSource revision/content key; duplicate identity with changed content blocks
BaseQuantitynumberyesQuantityReceived times frozen ConversionFactor
Conversionreference→ ProductConversions
ConversionFactornumberyesPositive stocking units per receipt UOM, 1 for same UOM
SourceCurrencytextOriginal supplier cost currency when externally converted
SourceUnitCostcurrencyOriginal cost per receipt UOM before approved external conversion
ConversionEvidencelongtextExternal conversion pair, rate, date and calculation supporting UnitCost; missing conversion blocks owned posting
CostKnowntoggleyesExplicit reviewed cost readiness, including evidenced true zero
CostReviewedByreference→ Users. Buyer or Inventory Manager
CostReviewedAtdatetimeCost evidence confirmation time
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesActual title owner; warehouse label cannot determine title
OriginDatedateManufacture/original lot date used only by approved expiry fallback
ReceivedAtdatetimeActual confirmed arrival; not mere import time
PutAwayQuantityformulayesfx: cumulative effective StockEvents Putaway base quantity for this receipt, bounded by received remaining lineage
ReturnedQuantityformulayesfx: effective vendor-return/receipt-compensation base quantity with original receipt lineage
ContentVersionnumberyesMaterial source revision; posted version immutable
PostedEventreference→ StockEvents
MigrationBatchreference→ MigrationBatches
BaselineQuantitieslongtextImmutable migrated gross document and effective historic quantity/cost counters at cutoff; current projections equal these plus Native deltas, never replayed baseline history
IssuesOutbound consumption — a pick for a sales order, usage for a worktransaction
FieldTypeRequiredDetails
IssueNumbertextyes
IssueTypeselectyesSalesPick, InternalUsage, Sample, Scrap, Other
ExternalDemandReferencetextSales / work order number
Productreferenceyes→ Products
Warehousereferenceyes→ Warehouses
Binreference→ Bins
Quantitynumberyes
UOMreferenceyes→ UnitsOfMeasure
LotNumbertext
IssueDatedateWarehouse-local date of first actual IssuedAt; null while only requested/picked
IssuedByreference→ Users. Actual first final issue actor; null before confirmation
StatusselectyesDraft, Picked, Issued, Cancelled
SerialNumbertextRequired for serial-controlled line; one base unit per serial issue
BaseQuantitynumberyesRequested stocking quantity; frozen conversion from Quantity and UOM
Conversionreference→ ProductConversions
ConversionFactornumberyesPositive frozen stocking units per transaction UOM
IssuedQuantityformulayesfx: migrated gross confirmed issue quantity plus native actual final issues; returns are separately reported and never reopen request authority
ReturnedQuantityformulayesfx: migrated returns plus native evidenced customer returns from original dispatch; does not reduce historical IssuedQuantity
PickedQuantityformulayesfx: current picked claim quantity, never another stock issue
CancelledQuantitynumberyesOnly unissued remaining request released after physical unpick
IssuedAtdatetimeActual first final issue; individual partial events retain their own times
CompletedAtdatetimeAll requested quantity issued or explicitly cancelled
SourceNamespacetextyesDemand source namespace, including Manual
SourceLineIDtextyesExternal order/usage line identity
ContentVersionnumberyesMaterial source revision
MigrationBatchreference→ MigrationBatches
BaselineQuantitieslongtextImmutable migrated gross document and effective historic quantity/cost counters at cutoff; current projections equal these plus Native deltas, never replayed baseline history
TransfersInter-warehouse / inter-bin transfers. Two-step — `ShipDate` recordstransaction
FieldTypeRequiredDetails
TransferNumbertextyes
FromWarehousereferenceyes→ Warehouses
FromBinreference→ Bins
ToWarehousereferenceyes→ Warehouses
ToBinreference→ Bins (set on arrival)
Productreferenceyes→ Products
Quantitynumberyes
UOMreferenceyes→ UnitsOfMeasure
LotNumbertext
RequestedByreferenceyes→ Users
ApprovedByreference→ Users
ShipDatedate
ArrivalDatedate
StatusselectyesDraft, Approved, InTransit, Received, Cancelled
SerialNumbertextRequired on serial-controlled transfer line
BaseQuantitynumberyesRequested stocking units, positive
Conversionreference→ ProductConversions
ConversionFactornumberyesFrozen positive base units per UOM
ShippedQuantityformulayesfx: effective transfer-departure quantity; retained after arrival
ReceivedQuantityformulayesfx: received at destination, including separately held/damaged arrival quantity
ReturnedQuantityformulayesfx: dispatched transit quantity physically returned to source
LostQuantityformulayesfx: separately approved transit write-off quantity
RemainingInTransitformulayesfx: ShippedQuantity - ReceivedQuantity - ReturnedQuantity - LostQuantity; nonnegative
CancelledQuantitynumberyesApproved unshipped remainder only
CarryingValuecurrencyReviewed owned value of proposed transfer from source layers
Policyreferenceyes→ InventoryPolicies
Decisionreference→ ApprovalDecisions
ContentVersionnumberyesReviewed source revision; destinations, identity, amount or cost changes invalidate review
ShippedAtdatetimeFirst confirmed departure
ReceivedAtdatetimeLast confirmed destination receipt; completion only when all shipped scope resolved
CompletedAtdatetimeNo transit or unshipped unresolved scope
MigrationBatchreference→ MigrationBatches
BaselineQuantitieslongtextImmutable migrated gross document and effective historic quantity/cost counters at cutoff; current projections equal these plus Native deltas, never replayed baseline history
CycleCountsScheduled partial counts — ABC cadence, zone sweeps, or exception-transaction
FieldTypeRequiredDetails
CountNumbertextyes
Warehousereferenceyes→ Warehouses
ZoneselectReceiving, Storage, Pick, Ship, Quarantine, Returns
ScheduledDatedateyes
Coordinatorreferenceyes→ Users
CountTypeselectyesABCCadence, Random, ZoneSweep, Exception
StatusselectyesScheduled, InProgress, PendingReview, Adjusted, Closed, Cancelled
LinesTotalnumberRead-only count of frozen eligible count lines, including newly discovered identities explicitly added under the lock
LinesWithVariancenumberRead-only number with nonzero first submitted variance; later correction does not rewrite accuracy history
PlannedStartdatetimeyesPlanned count window start
PlannedEnddatetimeyesPlanned count window end
StartedAtdatetimeActual lock acquisition/start
ClosedAtdatetimeFinal closure after all lines resolved
Lockreference→ CountLocks
Policyreferenceyes→ InventoryPolicies
TransitReconciliationlongtextSeparate evidence reconciliation for any protected away transit; never part of blind floor counts or LinesTotal
CycleCountLinesPer-bin / per-SKU lines of a CycleCount. Line item of CycleCounts.line item
FieldTypeRequiredDetails
Productreferenceyes→ Products
Binreference→ Bins
LotNumbertext
SerialNumbertext
BookQuantitynumberFrozen at valid count-lock boundary for physically present Stored/Picked stock; blind until first submission; away transit excluded
CountedQuantitynumberFirst submitted stocking quantity, immutable even after recount; accepted correction comes from AcceptedObservation
Varianceformulafx: CountedQuantity − BookQuantity
VariancePercentformulafx: abs(CountedQuantity - BookQuantity) / abs(BookQuantity) times 100; zero if both zero, null plus ReviewRequired if book zero and found positive
CountedByreference→ Users
CountedAtdate
AdjustmentReasonreference→ StockAdjustmentReasons
StatusselectyesAssigned, Counted, Recount, Adjusted, Closed
CycleCountreferenceyes→ CycleCounts
Positionreference→ Inventory. Existing position; null only for newly discovered complete identity
AssignedToreferenceyes→ Users. Actual assigned first counter
AssignedAtdatetimeyesWork assignment time
Lockreference→ CountLocks
SnapshotVersionnumberVersion of existing position under the locked scope
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesExplicit title/custody owner
CustodyStateselectyesStored, Picked, InTransit. Physical-floor lines allow Stored/Picked only; retained InTransit value is separately reconciled, never a zero floor count
UnitCostcurrencyReviewed stocking-unit valuation summary; actual layer allocation controls variance value
CostKnowntoggleyesTrue after protected owned source-cost review, or explicit ThirdParty/no-owned-value review with UnitCost null
FirstObservationreference→ CountObservations
AcceptedObservationreference→ CountObservations. Preserves first count while selecting reviewed recount
ReviewRequiredtoggleyesMaterialised policy decision including absolute tolerances, zero-book, controlled identity, status and claims
Decisionreference→ ApprovalDecisions
Adjustmentreference→ StockAdjustments
SubmittedAtdatetimeFirst actual submission
VarianceValueformulafx: exact first-count signed layer value difference using frozen count cost basis; null until known; accepted correction value is separate
CostSnapshotlongtextFrozen book layer IDs, quantities/values and proposed first-count variance valuation; accepted correction separately retained on StockAdjustments
PhysicalInventoriesWall-to-wall warehouse counts with controlled movement freeze, reviewed local corrections and a separate external accounting reconciliation.transaction
FieldTypeRequiredDetails
InventoryNumbertextyes
Warehousereferenceyes→ Warehouses
StartDatedateyes
EndDatedate
Coordinatorreferenceyes→ Users
FreezeMovementstoggleyesMust be true during a physical count; CountLocks blocks all stock-changing paths in scope, not only Issues/Transfers
StatusselectyesPlanning, Counting, Reconciling, Posted, Closed
TotalAdjustmentValuecurrencyNet local posted adjustment value in valuation currency; accounting export/acceptance is separate
Lockreference→ CountLocks
Policyreferenceyes→ InventoryPolicies
StartedAtdatetimeActual freeze start
PostedAtdatetimeLocal approved count adjustments complete
ClosedAtdatetimeEvery frozen line resolved and lock closed
Decisionreference→ ApprovalDecisions. Independent Inventory Manager physical-inventory close review
TransitReconciliationlongtextSeparate transfer IDs, dispatched/received/returned/lost/remaining quantity and carrying-value proof for away stock; excluded from floor count/accuracy
PhysicalInventoryLinesPer-bin / per-SKU lines of a PhysicalInventory. Line item of PhysicalInventories.line item
FieldTypeRequiredDetails
Productreferenceyes→ Products
Binreference→ Bins
LotNumbertext
BookQuantitynumberFrozen at valid count-lock boundary for physically present Stored/Picked stock; blind until first submission; away transit excluded
CountedQuantitynumberFirst submitted stocking quantity, immutable even after recount; accepted correction comes from AcceptedObservation
Varianceformulafx: CountedQuantity − BookQuantity
VarianceValueformulafx: exact first-count signed layer value difference using frozen cost basis; accepted recount/correction does not overwrite it
CountedByreference→ Users
AdjustmentReasonreference→ StockAdjustmentReasons
StatusselectyesAssigned, Counted, Recount, Adjusted
PhysicalInventoryreferenceyes→ PhysicalInventories
Positionreference→ Inventory. Existing position; null only for newly discovered complete identity
AssignedToreferenceyes→ Users. Actual assigned first counter
AssignedAtdatetimeyesWork assignment time
Lockreference→ CountLocks
SnapshotVersionnumberVersion of existing position under the locked scope
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesExplicit title/custody owner
CustodyStateselectyesStored, Picked, InTransit. Physical-floor lines allow Stored/Picked only; retained InTransit value is separately reconciled, never a zero floor count
UnitCostcurrencyReviewed stocking-unit valuation summary; actual layer allocation controls variance value
CostKnowntoggleyesTrue after protected owned source-cost review, or explicit ThirdParty/no-owned-value review with UnitCost null
FirstObservationreference→ CountObservations
AcceptedObservationreference→ CountObservations. Preserves first count while selecting reviewed recount
ReviewRequiredtoggleyesMaterialised policy decision including absolute tolerances, zero-book, controlled identity, status and claims
Decisionreference→ ApprovalDecisions
Adjustmentreference→ StockAdjustments
SubmittedAtdatetimeFirst actual submission
SerialNumbertextRequired for serial-controlled identity
VariancePercentformulafx: absolute quantity variance / absolute book quantity times 100; zero/zero 0; found positive on zero book null and review
CostSnapshotlongtextFrozen book layer IDs, quantities/values and proposed first-count variance valuation; accepted correction separately retained on StockAdjustments
StockAdjustmentsControlled inventory corrections with explicit cost and quantity evidence; approved policy determines eligible automatic execution or independent Inventory Manager review.transaction
FieldTypeRequiredDetails
AdjustmentNumbertextyes
Productreferenceyes→ Products
Warehousereferenceyes→ Warehouses
Binreference→ Bins
LotNumbertext
QuantityBeforenumberyesCurrent locked exact-position stocking quantity; checked again atomically at posting
QuantityAfternumberyes
QuantityDeltaformulayesfx: QuantityAfter − QuantityBefore
UnitCostcurrencyReviewed stocking-unit summary of exact layer value delta; null until usable cost is known
ValueDeltaformulayesfx: exact proposed owned layer-value sum from CostAllocationProposal before posting, reconciled to posted CostAllocations afterwards; not quantity times current Product cost
Reasonreferenceyes→ StockAdjustmentReasons
SourceDocumentselectCycleCount, PhysicalInventory, Manual, Return, Expiry
RequestedByreferenceyes→ Users
ApprovedByreference→ Users
StatusselectyesDraft, PendingApproval, Approved, Posted, Rejected, Cancelled
AdjustedAtdateWarehouse-local date of actual PostedAt; null until posted
Notestext
SerialNumbertextRequired for serial-controlled identity
Positionreference→ Inventory. Existing source position; found stock creates a separately reviewed identity
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesExplicit owner identity
CustodyStateselectyesStored, Picked, InTransit
Transferreference→ Transfers. Required for transit discrepancy
CycleCountLinereference→ CycleCountLines
PhysicalInventoryLinereference→ PhysicalInventoryLines
CostKnowntoggleyesKnown reviewed owned cost, or explicitly reviewed ThirdParty/no-owned-value basis; unknown owned cost blocks execution
CostEvidencelongtextLayer selection, source valuation and nonzero/true-zero evidence
Policyreferenceyes→ InventoryPolicies
Decisionreference→ ApprovalDecisions
ExecutionModeselectyesUnresolved, PolicyAutomatic, HumanApproved
ContentVersionnumberyesQuantity/cost/reason/identity/source revision; freezes at submission
SubmittedAtdatetimeActual request for review
PostedAtdatetimeActual stock event commit time
PostedEventreference→ StockEvents
ExpectedVersionnumberCurrent exact position revision; new identity checks locked population
MigrationBatchreference→ MigrationBatches
CostAllocationProposallongtextFrozen layer/quantity/value proposal and rounding residual before approval; not an effective posting
OriginSupplierreference→ Suppliers. Known source of found/expiry quantity where documented, otherwise null
ReturnAuthorizationsReturn Merchandise Authorizations — customer returns (stock in) ortransaction
FieldTypeRequiredDetails
RMANumbertextyes
ReturnTypeselectyesCustomerReturn, VendorReturn
Supplierreference→ Suppliers (for VendorReturn)
CustomerReferencetextExternal customer / order number
OriginalReceiptreference→ GoodsReceipts
Productreferenceyes→ Products
QuantityAuthorizednumberyesPositive stocking-unit cap; cumulative effective returned identity cannot exceed original eligible dispatch/receipt quantity
QuantityReceivednumberyesRead-only actual customer returned stocking quantity; not vendor QuantityDispatched
Warehousereferenceyes→ Warehouses
LotNumbertext
ReasonselectyesDamaged, Defective, WrongItem, Overshipment, Warranty, Other
DispositionselectyesRestock, Scrap, ReturnToVendor, Refund, Pending
IssuedAtdateDate of actual AuthorizedAt/issued return authorization; null in preparation
StatusselectyesDraft, PendingApproval, Issued, InTransit, Received, Inspected, Closed, Cancelled, Rejected
OriginalIssuereference→ Issues. Required customer dispatch lineage, including approved imported historic issue
OriginalMovementreference→ StockMovements. Exact original dispatch/receipt lineage; customer return uses eligible original issue cost, vendor return removes current descendant carrying value
Binreference→ Bins. Actual return custody or vendor-dispatch bin
SerialNumbertextExact returned serial; cannot substitute another identity
UOMreferenceyes→ UnitsOfMeasure
ConversionFactornumberyesFrozen positive stocking units per UOM; all cumulative quantity fields use base units
OwnerTypeselectyesOwned, ThirdParty
OwnerReferencetextyesActual title owner; customer-arrival custody is unavailable until decision
QuantityDispatchednumberyesRead-only cumulative effective vendor ReturnOut stocking quantity
QuantityRestockednumberyesRead-only accepted customer return stocking quantity moved from held to eligible stock
QuantityScrappednumberyesRead-only evidenced disposition out of held stock, once
QuantityReturnedToCustomernumberyesRead-only unaccepted physical return out, preserving external customer ownership
AuthorizedByreference→ Users. Inventory Manager; independent of requester/material editor
RequestedByreferenceyes→ Users. Buyer for vendor return, Inventory Manager for customer return
Decisionreference→ ApprovalDecisions
DispositionDecisionreference→ ApprovalDecisions. Inventory Manager title/status/simple condition decision; no formal QMS claim
RequestedAtdatetimeyesActual preparation time
AuthorizedAtdatetimeActual authority decision
ClosedAtdatetimeAll authorized/effected inventory scope resolved, including explicitly unused cancelled remainder
ExternalRefundReferencetextExternal financial follow-up only; never proves payment
FinancialFollowupselectyesNotRequired, Requested, Acknowledged, ConfirmedExternal, Disputed
ContentVersionnumberyesFrozen authorized identity and quantity revision
MigrationBatchreference→ MigrationBatches
BaselineQuantitieslongtextImmutable migrated gross document and effective historic quantity/cost counters at cutoff; current projections equal these plus Native deltas, never replayed baseline history
CommercialReturnValuecurrencyReviewed expected vendor settlement/credit for actual cumulative dispatched scope in valuation currency, with external conversion evidence; not cash or posted GL value
CarryingValueReturnedformulafx: cumulative current carrying value actually removed by native/migrated vendor ReturnOut allocations; no double count of original receipt
ReturnSettlementVarianceformulafx: known CommercialReturnValue for dispatched scope minus CarryingValueReturned; informational external finance difference, null while unknown
SettlementEvidencelongtextOriginal commercial receipt basis, agreed vendor credit scope, currency/rate/date and actual external settlement references; separate from inventory value
UsersAuthenticated actual people with the five declared roles; identities remain stable when roles or employment change.master
FieldTypeRequiredDetails
UserIDtextyesAuthenticated stable person identifier; same person with multiple roles remains one actor
NametextyesDisplay name
RoleselectyesAdmin, Inventory Manager, Warehouse Operator, Buyer, Viewer
RoleslongtextyesApproved set of these same five roles; no extra approval role
ActivetoggleyesDeactivated actors cannot perform new actions
ApprovalLimitcurrencyExplicit finite Inventory Manager adjustment/transfer value limit in valuation currency; missing means no authority
UserWarehousesEffective role-to-site assignment and scope evidence.master
FieldTypeRequiredDetails
Userreferenceyes→ Users
Warehousereferenceyes→ Warehouses
RoleslongtextyesSubset of declared user roles allowed at this warehouse
EffectiveFromdatetimeyesInclusive
EffectiveTodatetimeExclusive
ActivetoggleyesOnly current approved assignments grant action scope
MasterChangereferenceyes→ MasterChanges
ProductConversionsApproved product-specific conversion into the stocking UOM; packaging is never assumed universal.master
FieldTypeRequiredDetails
Productreferenceyes→ Products
FromUOMreferenceyes→ UnitsOfMeasure
ToUOMreferenceyes→ UnitsOfMeasure. Must equal Products.UOM for this version
FactornumberyesPositive stocking units per input unit
EffectiveFromdatetimeyesInclusive version validity
EffectiveTodatetimeExclusive
MasterChangereferenceyes→ MasterChanges
ActivetoggleyesOnly reviewed nonoverlapping version used by new documents
InventoryPoliciesImmutable approved installation/site control version, in one explicit inventory valuation currency.master
FieldTypeRequiredDetails
PolicyNumbertextyesVersioned policy identifier
Warehousereference→ Warehouses. Null means installation default
ValuationCurrencytextyesOne ISO currency per installation; all owned inventory costs/limits/exports use it
CurrencyPrecisionnumberyesDecimal rounding precision, with deterministic final-line residual
QuantityTolerancenumberyesNonnegative absolute stocking-unit tolerance
PercentTolerancenumberyesNonnegative absolute percentage tolerance; default may be 2 only if approved
AutomaticValueLimitcurrencyyesNonnegative maximum absolute owned adjustment value; equality eligible only if every other condition passes
AutomaticTransferstoggleyesWhether eligible within-limit standard transfers can be policy-authorised
TransferValueLimitcurrencyyesFinite maximum for automatic transfer; equality eligible; missing cost blocks
AutomaticAdjustmentstoggleyesAllows eligible low-risk execution, never a human approval
PolicyDetailslongtextyesEligible reasons, ownership, status, standard-cost basis, return controls, expiry cutoffs, accounting mappings and rounding
ReorderCooldownHoursnumberyesMinimum reminder interval; outstanding alert identity is reused
ABCCutoffslongtextyesReviewed cumulative positive issue-value cutoffs and deterministic ties; zero-history class treatment
EffectiveFromdatetimeyesInclusive activation time
EffectiveTodatetimeExclusive supersession
PreparedByreferenceyes→ Users
ApprovedByreference→ Users. Independent Admin, not preparer/material editor
ApprovedAtdatetimeActual reviewed activation
StatusselectyesDraft, Submitted, Active, Superseded, Rejected
MasterChangereference→ MasterChanges
ApprovalDecisionsImmutable review or explicit policy-execution evidence bound to exact content and actual actors.transaction
FieldTypeRequiredDetails
DecisionNumbertextyesUnique target/revision/decision identifier
KindselectyesAdjustment, CountReview, Transfer, ReturnAuthorization, ReturnDisposition, PhysicalClose, Migration, AccountingExport, MasterActivation, StockStatusChange, TitleChange
TargetTabletextyesValidated declared target table appropriate to Kind
TargetIDtextyesExisting stable target identity, never an unvalidated display number
ContentVersionnumberyesReviewed revision
ContentHashtextyesExact quantities, cost layers, identity, reason, destinations and relevant limits
RequestedByreferenceyes→ Users
MaterialEditorslongtextyesAuthenticated actual person IDs excluded from independent human approval
CounterIDslongtextFirst and recount actors excluded from approval of their own count
DecidedByreference→ Users. Null only for PolicyAutomatic; human kinds require eligible independent declared role
ModeselectyesHuman, PolicyAutomatic
Policyreferenceyes→ InventoryPolicies
ReviewedValuecurrencyAbsolute reviewed owned value in valuation currency; third-party quantity-only custody has reviewed zero owned effect, not a made-up unit cost
LimitSnapshotcurrencyFinite eligible actor/policy limit used
DecisionAtdatetimeyesActual decision/execution qualification timestamp
StatusselectyesApproved, Rejected, RecountRequired, Invalidated
RationalelongtextyesEvidence and checks; no reused approval after material revision
MasterChangesControlled master/configuration/identity change with immutable old/new evidence.transaction
FieldTypeRequiredDetails
ChangeNumbertextyesStable change identifier
TargetTabletextyesValidated master table
TargetIDtextyesStable record identity
OldValueslongtextyesExact prior values/version
NewValueslongtextyesExact proposed values/version
PreparedByreferenceyes→ Users
MaterialEditorslongtextyesActual person IDs
ApprovedByreference→ Users. Independent Admin; cannot be preparer or material editor
RequestedAtdatetimeyesActual request
EffectiveAtdatetimeReviewed activation time; never retroactive repricing
StatusselectyesDraft, Submitted, Approved, Applied, Rejected, Superseded
ReasonlongtextyesBusiness reason; merges preserve original IDs/history and compatible stock identity
Decisionreference→ ApprovalDecisions
StockEventsAtomic inventory business action containing signed position legs and cost allocations.transaction
FieldTypeRequiredDetails
EventNumbertextyesUnique economic/action identity
ActionselectyesReceipt, Putaway, Reserve, Pick, Unpick, Issue, TransferShip, TransferReceive, TransferReturn, TransitLoss, CountAdjustment, ManualAdjustment, CustomerReturnReceive, ReturnDisposition, VendorReturnShip, ReceiptCompensation, IssueCompensation, CostRevalue, WeightedAverageRebalance, OpeningBaseline, StockStatusChange, TitleChange
GoodsReceiptreference→ GoodsReceipts
Issuereference→ Issues
Transferreference→ Transfers
Adjustmentreference→ StockAdjustments
ReturnAuthorizationreference→ ReturnAuthorizations
MigrationBatchreference→ MigrationBatches
SourceNamespacetextyesManual or authenticated external source
SourceActionIDtextyesUnique namespace/document-line/action/partial-operation identity
ContentVersionnumberyesExpected source revision
PayloadHashtextyesChanged payload under the same identity requires review
BaseQuantitynumberyesPositive operated stocking quantity; zero only for value-only actions or a whole-position StockStatusChange with no quantity/value effect
OccurredAtdatetimeyesActual physical/economic evidence time
RequestedAtdatetimeyesAction preparation time
PostedAtdatetimeActual atomic local effect time
PerformedByreferenceyes→ Users. Accountable eligible actor for physical/prepared action; PolicyAutomatic retains proposer plus null human DecidedBy, not a fictional signer
Decisionreference→ ApprovalDecisions
ReversalOfreference→ StockEvents. Bounded compensation, never erasure of original physical history
EvidencelongtextyesActual scan/physical confirmation, source-line identity and before/after versions
StatusselectyesPrepared, Posted, Rejected, Cancelled
SourceModeselectyesNative, MigrationBaseline
IntegrationEventreference→ IntegrationEvents
CostPolicyreferenceyes→ InventoryPolicies. Frozen cost/rounding/limit/account mapping used
StockedProductreferenceyes→ Products. Common product must agree with every source, position and layer
CostProposallongtextyesFrozen planned layer/quantity/value effects and external variance; posting writes only the approved/current proposal
SourcePositionManifestlongtextyesExpected exact source/destination and layer IDs/versions, with lock scope and controlled identity checks
PreparedByreferenceyes→ Users. Actual request preparer; must differ from required independent DecidedBy
ChangeBeforelongtextStockStatusChange/TitleChange exact source-position quantity, status, owner, custody, version and carrying layers
ChangeAfterlongtextReviewed resulting status or title identity, affected quantity and known owned-cost basis; changes no physical arrival history
ReservationsQuantity claim by one Issue, Transfer or vendor return against one exact eligible stock position.transaction
FieldTypeRequiredDetails
ReservationNumbertextyesUnique demand-line/position/claim identity
Positionreferenceyes→ Inventory
Issuereference→ Issues
Transferreference→ Transfers
ReturnAuthorizationreference→ ReturnAuthorizations
QuantitynumberyesPositive stocking quantity initially claimed
ConsumedQuantitynumberyesCumulative final dispatch/issue consumption, bounded by claim
ReleasedQuantitynumberyesCumulative physically reconciled released remainder
RemainingQuantityformulayesfx: Quantity - ConsumedQuantity - ReleasedQuantity; nonnegative
StateselectyesReserved, Picked, Consumed, Released
CreatedAtdatetimeyesActual atomic reservation time
UpdatedAtdatetimeyesActual latest claim state change
ClaimKeytextyesReplay-safe demand/position/action identity
PositionVersionnumberyesExpected position version before claim/update
SourceModeselectyesNative, MigrationBaseline
MigrationBatchreference→ MigrationBatches
PickedAtdatetimeActual hard-pick confirmation
ReleasedAtdatetimeLast physical reconciliation/release
ClaimEventreferenceyes→ StockEvents. Unique reservation/update business effect
LayerClaimslongtextValidated layer IDs and quantities when exact receipt/serial provenance is required; atomically bounded across active claims
CostLayersRemaining stocking quantity and carrying value by receipt/origin and current position; FIFO lineage also supports pooled and standard valuation.transaction
FieldTypeRequiredDetails
LayerNumbertextyesStable origin/split layer identifier
Productreferenceyes→ Products
Positionreferenceyes→ Inventory
OriginalReceiptreference→ GoodsReceipts
OriginalIssuereference→ Issues. Returned issued-cost lineage
Supplierreference→ Suppliers. Original receipt supplier for provenance, never guessed from current primary supplier
ParentLayerreference→ CostLayers. Split/move/return lineage
CreatedEventreferenceyes→ StockEvents
OriginalQuantitynumberyesInitial positive quantity for this layer/split; history immutable
OriginalValuecurrencyyesInitial owned carrying value; zero only with reviewed true-zero basis
RemainingQuantitynumberyesDerived effective layer quantity, nonnegative
RemainingValuecurrencyyesDerived carrying value from effective cost allocations excluding PurchaseVariance; nonnegative, final residual preserved
OriginalUnitCostcurrencyyesFrozen initial value per stocking unit
MethodselectyesStandard, WeightedAverage, FIFO
CostVersionnumberyesReviewed method/standard basis at action
ReceivedAtdatetimeyesOriginal FIFO age preserved on transfer and return
CurrencytextyesInstallation valuation currency
SourceModeselectyesNative, MigrationBaseline
MigrationBatchreference→ MigrationBatches
CostAllocationsImmutable signed effect on a cost layer belonging to one atomic stock action.transaction
FieldTypeRequiredDetails
AllocationNumbertextyesUnique event/leg/layer/allocation identity
Eventreferenceyes→ StockEvents
Movementreference→ StockMovements. Matching exact position leg, absent only for classified external variance
Layerreferenceyes→ CostLayers
QuantityDeltanumberyesSigned stocking quantity; value-only rebalancing has zero quantity
ValueDeltacurrencyyesSigned carrying-value change in valuation currency
AllocationKindselectyesCreate, Consume, Move, Return, Compensation, PoolRebalance, StandardRevalue, PurchaseVariance
ReversalOfreference→ CostAllocations. Bounded corresponding original cost effect
CreatedAtdatetimeyesAtomic posting time
SourceModeselectyesNative, MigrationBaseline
StatusselectyesPosted. Proposed allocations live in reviewed source evidence, not effective layer balances
CountLocksExclusive versioned stock-change lock for a warehouse or explicit bin population.transaction
FieldTypeRequiredDetails
LockNumbertextyesStable controlled count boundary
Warehousereferenceyes→ Warehouses
BinslongtextyesValidated bin IDs, or explicit WholeWarehouse; null-bin population explicitly included
CycleCountreference→ CycleCounts
PhysicalInventoryreference→ PhysicalInventories
ScopeHashtextyesFrozen physically counted identity population and versions plus separately identified protected transit/value scope; new physical identities detected
AcquiredAtdatetimeyesActual boundary after in-flight actions resolve
ExpiresAtdatetimeyesRecovery deadline; expiry does not authorise stale adjustment
ReleasedAtdatetimeActual closure/recovery release
Coordinatorreferenceyes→ Users. Inventory Manager
StatusselectyesRequested, Active, RecoveryRequired, Released, Cancelled
RecoveryEvidencelongtextMovement reconciliation and fresh observation requirements before replacement lock
CountObservationsImmutable first/recount evidence, kept separately from accepted count projections.transaction
FieldTypeRequiredDetails
ObservationNumbertextyesUnique line/attempt identity
CycleCountLinereference→ CycleCountLines
PhysicalInventoryLinereference→ PhysicalInventoryLines
Lockreferenceyes→ CountLocks
Attemptnumberyes1 first count, positive successive recount number
AssignedToreferenceyes→ Users
CountedByreference→ Users. Actual person; recount independent of first counter when requested by reviewer
CountedQuantitynumberNonnegative stocking quantity; a specific serial is 0 or 1 only, duplicate/mismatched serials require identity investigation; null before submission
CountedAtdatetimeActual observation time
SubmittedAtdatetimeActual completion time
PopulationHashtextyesLocked scope and expected identity/version hash
StatusselectyesAssigned, Submitted, Accepted, Superseded, Rejected
EvidencelongtextScan/count details without disclosing blind book quantity before submission
StockSummariesCurrent product/warehouse projection generated from the configured stocked population, including never-received and zero stock.master
FieldTypeRequiredDetails
SummaryNumbertextyesUnique Product plus Warehouse
Productreferenceyes→ Products
Warehousereferenceyes→ Warehouses
StockedtoggleyesReviewed product-site assortment; active eligible zero rows retained
QuantityOnHandnumberyesOwned physical stored/picked quantity at site, excluding transit (shown separately)
QuantityAllocatednumberyesOwned active claims on site stock
QuantityAvailablenumberyesSum eligible owned current position availability
TransitQuantitynumberyesOwned inbound transfer outstanding to this site; disclosed separately, excluded from reorder trigger
ThirdPartyQuantitynumberyesCustody only, excluded from owned valuation and replenishment
ValueOnHandcurrencyyesCurrent owned nontransit layer value at site
UnitCostcurrencyValueOnHand / owned on-hand, null at zero quantity
ReorderPointnumberEffective active rule then product fallback
ReorderQuantitynumberEffective configured fixed order quantity
SuggestedQuantitynumberPolicy method result in stocking units; advice, not PO creation
PrimarySupplierreference→ Suppliers
LeadTimeDaysnumberRule then product fallback; unknown stays unknown
ReorderStateselectyesNormal, Low, OutOfStock, Manual, Unconfigured
LastMovementDatedateLatest physical movement for operational reference
LastConsumptionAtdatetimeLatest eligible final consumption only
DaysSinceConsumptionnumberDays since last demand consumption; null if never consumed
NeverConsumedtoggleyesNo eligible observed consumption history
AsOfdatetimeyesProjection cutoff, version and timezone
Policyreferenceyes→ InventoryPolicies
ReorderRulereference→ ReorderRules
StockSnapshotsImmutable dated product/warehouse observation for stockout, valuation and turnover reporting.transaction
FieldTypeRequiredDetails
SnapshotNumbertextyesUnique scope/cutoff/version
Summaryreferenceyes→ StockSummaries
AsOfdatetimeyesExact accounting/operating cutoff
LocalDatedateyesWarehouse-local reporting day
StockedtoggleyesFrozen eligible assortment flag
QuantityAvailablenumberyesCurrent eligible owned available at cutoff
OwnedQuantitynumberyesOwned stored/picked plus separately identified transit quantity
OwnedValuecurrencyyesOwned layer carrying value, including transit once
TransitValuecurrencyyesSubset carried at source until arrival; never also destination valued
CurrencytextyesInstallation valuation currency
LayerManifestlongtextyesExact layer IDs, quantities, values and versions, with hash
Policyreferenceyes→ InventoryPolicies
StatusselectyesDraft, Frozen, Superseded
CoverageselectyesComplete, Incomplete
CapturedAtdatetimeyesActual capture time
ReorderAlertsOne ongoing low/out-of-stock episode per product and warehouse, with acknowledgment and bounded reminders.transaction
FieldTypeRequiredDetails
AlertNumbertextyesUnique summary/episode identity
Summaryreferenceyes→ StockSummaries
OpenedAtdatetimeyesFirst threshold crossing or first eligible observation
LastEvaluatedAtdatetimeyesLatest current quantity evaluation
AcknowledgedByreference→ Users. Buyer or Inventory Manager
AcknowledgedAtdatetimeActual acknowledgment
ResolvedAtdatetimeRecovery above threshold; future crossing starts new episode
StatusselectyesOpen, Acknowledged, Resolved, Suppressed
SuggestedQuantitynumberLatest proposal with policy basis, not approved procurement
ExternalPOReferencetextBuyer's external follow-up, not local ordering authority
LastNotifiedAtdatetimeActual verified delivery time
Policyreferenceyes→ InventoryPolicies
AccountingExportsExternal accounting handoff of unique unexported stock value deltas; snapshots reconcile control balances and never repost full inventory.transaction
FieldTypeRequiredDetails
ExportNumbertextyesUnique installation/period/batch identity
PeriodtextyesReviewed external accounting period
CurrencytextyesInstallation valuation currency
Policyreferenceyes→ InventoryPolicies
MovementManifestlongtextyesUnique movement/cost-variance IDs, mapped accounts and signed amounts, source hashes; no ID accepted twice
ControlSnapshotManifestlongtextyesExact StockSnapshots IDs and previous/current inventory control reconciliation
AmountcurrencyyesNet inventory-account delta, not full closing inventory value
PreparedByreferenceyes→ Users. Inventory Manager
Decisionreference→ ApprovalDecisions. Independent Inventory Manager release, not preparer/editor
PreparedAtdatetimeyesActual preparation
RequestedAtdatetimeOutbound request timestamp
AcceptedAtdatetimeAuthoritative accounting acceptance only
ExternalJournalIDtextVerified destination journal identity
DeliveryKeytextyesStable same-payload destination action key
StatusselectyesDraft, Submitted, Approved, Sent, Uncertain, Accepted, Rejected, Corrected
Correctsreference→ AccountingExports. Referenced bounded corrective delta, not duplicate original journal
IntegrationEventreference→ IntegrationEvents
IntegrationEventsAuthenticated inbound identity and outbound intent/acknowledgment, separate from stock evidence.transaction
FieldTypeRequiredDetails
IntegrationNumbertextyesStable source/destination event identity
DirectionselectyesInbound, Outbound
SystemtextyesConfigured authenticated source/destination
ActiontextyesReviewed operation contract; no implied universal endpoint
ExternalIDtextyesExternal event/idempotency identity
PayloadHashtextyesSame key changed content is a conflict, not another effect
ReceivedAtdatetimeyesActual ingress or prepared intent time
AuthenticatedtoggleyesInbound verified before effect processing
StatusselectyesPrepared, Verified, Applied, Sent, Acknowledged, Uncertain, Rejected, Conflict
StockEventreference→ StockEvents
AccountingExportreference→ AccountingExports
ExternalResultIDtextAuthoritative accepted object/effect identity
AcknowledgedAtdatetimeActual provider acknowledgment
ReconciledByreference→ Users. Eligible domain owner after uncertainty lookup
EvidencelongtextyesContract version, source watermarks, actual result and repeat-effect reconciliation
MigrationBatchesIndependently approved opening cutover with explicit source identity and no ordinary-reason approval exemption.transaction
FieldTypeRequiredDetails
BatchNumbertextyesUnique source/cutoff/install migration identity
SourceNamespacetextyesRetained original source and stable item IDs
CutoffdatetimeyesAgreed effect cutoff; old/new system boundary
ManifestlongtextyesVersioned source rows and hashes for positions, layers, owners, serials, holds, claims, transit and partial documents
ControlTotalslongtextyesQuantity/value by product/site/owner/status/currency; external GL opening agreement
SourceWatermarkslongtextyesAlready processed source actions and unresolved external requests
PreparedByreferenceyes→ Users. Inventory Manager
Decisionreference→ ApprovalDecisions. Different Inventory Manager, not preparer/editor/counter
PreparedAtdatetimeyesActual preparation time
ActivatedAtdatetimeAfter all controls and representative partial operations checked
StatusselectyesDraft, Validated, Submitted, Approved, Activated, Rejected
ReconciliationlongtextyesNo duplicate historic stock/accounting/outreach effects; opening details agree with one external GL baseline
ERP•AI workspace

Start now Inventory Management

Create your ERP.AI account and get started with Proto.

Start now Download agent
Previous · reference 2 of 6Reports and analyticsNext · reference 4 of 6Integrations

Customize Inventory Management. With Proto, your desktop AI agent.

Ask Proto to help you customize Inventory Management.

Customize
Inventory Management.
Ask: “Adapt Stock & locations.”
ProtoYour desktop AI agent
Download nowFree install · ~1 GB · AI usage extra
macOSWindowsLinux

Bring your first idea to Proto.

Keep this page open while you install Proto. Connect your account and model, then paste this into a new chat.

AI usage is paid separately. You can edit the prompt before copying.

ERP.AI

Business apps and the Proto desktop agent.

  • Business Apps
  • Proto
  • Workflows
  • Headless SaaS
  • Enterprise
  • Pricing
  • Contact
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
© 2026 ERP•AI. All rights reserved.
System status

Your Privacy, Your Choice

We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy

Manage Your Cookie Preferences

We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.

Learn more about how we use cookies

These cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.

These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.

These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.

These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.