Skip to main content

Inventory Transactions

Receiving Stock

When parts arrive from a supplier, record a receipt transaction to increase on-hand stock.

Via the UI

  1. In Inventory → Parts, expand the part row.
  2. Click Add Part Transaction (the + icon in the Parts Inventory toolbar).
  3. The Part Inventory Editor opens.
FieldDescription
Inventory LocationThe storeroom location receiving the stock
QtyQuantity received (must be > 0)
Transaction TypeSelect Receipt to inventory
Lot / BatchOptional lot or batch number
NotesOptional reference notes (e.g. PO number)

Click Save. The on-hand balance updates immediately and the transaction is recorded in the history.

Via Script

inventoryTransactionId, err = system.kanoa.inventory.addInventoryTransaction({
'inventoryAssetId': warehouseAssetId,
'partId': partId,
'quantity': 100,
'inventoryTransactionTypeId': receiptTypeId,
'supplierId': supplierId,
'referenceType': 'PO',
'referenceNumber': 'PO-2026-0441',
'unitCost': 3.75,
}, userId)

Issuing Parts

Ad-hoc Issue

To issue parts without a work order (e.g. a one-off repair or adjustment):

  1. Expand the part in Inventory → Parts.
  2. Click Add Part Transaction.
  3. Set Transaction Type to Issue (or the appropriate type for your operation).
  4. Enter quantity, location, and optional notes.
  5. Click Save.

Issue Against a Maintenance Work Order

Parts consumed during a maintenance activity can be tracked directly against the work order event. This provides full traceability between stock consumption and maintenance history.

inventoryTransactionId, err = system.kanoa.inventory.issuePartToWorkOrderEvent({
'partId': partId,
'quantity': 2,
'workOrderEventId': workOrderEventId,
'inventoryAssetId': warehouseAssetId,
'assetId': maintainedAssetId,
'usedBy': technicianUserId,
'unitCost': 3.75,
}, userId)

To retrieve all parts consumed against a set of work order events:

data = system.kanoa.inventory.getPartsUsedByWorkOrderEvents({
'workOrderEventId': workOrderEventId,
})

Transfers and Adjustments

A transfer moves stock from one inventory location to another. Use Transfer in and Transfer out transaction types to record the movement at each end.

If a physical count reveals a discrepancy, use a Positive adjustment or Negative adjustment transaction type to correct the on-hand balance. The transaction history records who made the adjustment and when.

Both operations use Add Part Transaction in the UI or addInventoryTransaction via script with the appropriate transaction type.


Stock Visibility

The expanded part row in Inventory → Parts shows the live stock position at each location:

ColumnDescription
On HandCurrent physical quantity in the storeroom
ReservedQuantity allocated to open work orders but not yet physically removed
On OrderQuantity on open purchase orders not yet received
AvailableOn Hand minus Reserved
Min / MaxPolicy bounds for this location
Reorder PointPolicy reorder trigger
Reorder QtyPolicy reorder quantity
Safety StockPolicy safety buffer
UOMUnit of measure
Cycle CountDays between physical counts
Managed StockWhether a stocking policy is active

Finding Parts Below Reorder Threshold

data = system.kanoa.inventory.getPartInventoryStock({
'inventoryAssetId': warehouseAssetId,
'isStocked': True,
'isBelowReorderThreshold': True,
})

Transaction History

Every stock movement is stored as a transaction. The transaction list visible in the expanded part row shows:

ColumnDescription
IdTransaction ID
TypeTransaction type (Receipt, Issue, Transfer, Adjustment, etc.)
From/To AssetAsset associated with the movement
QtyQuantity moved
Cost CenterFinancial charge code
Transaction DateWhen the movement occurred
Ref #Purchase order, work order, or other reference
Last Updated ByUser who recorded the transaction

Transaction history is immutable — corrections are made via adjustment transactions, not by editing existing records.