A physical pick raised one-for-one from an allocation line, capped at that line's PendingPickingQuantity; it can only exist with an allocation-line parent, which the handler enforces on insert. Saving it posts a Picked ledger row that moves the quantity out of the InventoryStock Allocation bucket into Picked — stock is reclassified, not shipped. ConfirmPicking is the step that makes it real: it overwrites Quantity with what was actually picked, records the shortfall in CancelQuantity, sets IsPickingConfirmed, and may re-point the lot, bin or stock bucket from the operator's payload. Confirmation gates both CancelPicking and PickedDelivery, and cancellations are negative rows linked through ParentInventoryFulfilmentPickingLineId.
Fields
| Field | Label | Type | Required | What it does |
CancelQuantity | Cancel Quantity | Number | | Written by ConfirmPicking as the shortfall between what the pick was raised for and what was confirmed. It flows back into the parent reservation's PendingPickingQuantity so the missing amount can be picked again. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DeliveryQuantity | Delivery Quantity | Decimal | | Roll-up of the delivery-order lines raised from this pick; the pending delivery figure is Quantity less this less what was returned. |
DocumentDate | Document Date | Date | | Defaults to the UTC construction time of the record rather than being stamped by a handler, so it is a system timestamp, not a warehouse business date. |
ExternalId | External | Text, unique | | |
Id | Id | Guid | Yes | |
InventoryFulfilmentAllocationLineId | Fulfillment Allocation Line | Lookup → InventoryFulfilmentAllocationLine | | The allocation line this pick draws from; the allocation/picking/delivery quantity state machine reconciles through this link. |
InventoryFulfilmentId | Inventory Fulfilment | Lookup → InventoryFulfilment | | |
InventoryLedgerId | Inventory Ledger | Lookup → InventoryLedger | | Stamped with the Picked ledger row, which decrements the InventoryStock Allocation bucket and increments Picked. Its presence is how the platform knows the reclassification already happened. |
InventoryStockId | Stock | Lookup → InventoryStock | | |
IsILPosted | IL Posted | Boolean | Yes | |
IsILPostingApproved | IL Posting Approved | Boolean | Yes | |
IsPickingConfirmed | Picking Confirmed | Boolean | Yes | |
ItemId | Item | Lookup → Item | | |
ItemLotId | Item Lot | Lookup → ItemLot | | Inherited from the reservation, but ConfirmPicking may overwrite it from the operator's payload — that is how a picker records that the goods physically came from a different lot. |
ItemLotTypeId | Item Lot Type | Lookup → ItemLotType | | |
LastModifiedById | LastModifiedBy | Guid | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Document Number | Text | | |
OrderId | Order | Lookup → Order | | |
OrderLineId | Sale Order Line | Lookup → OrderLine | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
ParentInventoryFulfilmentPickingLineId | Inventory Fulfillment Picking Line | Lookup → InventoryFulfilmentPickingLine | | Cancel-picking creates return lines pointing at the picked line they undo via this self-reference; those children are then aggregated back onto the allocation line's picking-return rollup. |
PendingDeliveryQuantity | Pending Delivery Quantity | Calculated (calculated) | | Undelivered picked quantity; the picked-delivery actions require it above zero on the (selected) lines before a delivery order is created. |
PickedByResourceId | Picked By | Lookup → Resource | | Captured only when the ConfirmPicking payload names an operator, so it is blank on picks confirmed in bulk. The JSON property is upper-cased unlike its neighbours, which matters for API payloads. |
PickedQuantity | Picked Quantity | Calculated (calculated) | | |
Quantity | Quantity | Decimal | | The pick amount that actually posts to stock. It starts equal to the requested amount and is then overwritten by ConfirmPicking with what was really picked, so before confirmation it is an intention rather than a fact. |
RecordTypeId | Record Type | Guid, hidden | | |
RequestedQuantity | Requested Quantity | Decimal | | A genuinely stored column here, unlike the transient namesakes on the sibling line entities: the amount the pick was raised for, taken from the reservation's pending picking quantity. ConfirmPicking compares against it to derive the cancelled shortfall. |
ReturnedQuantity | Returned Quantity | Decimal | | Quantity returned from picking on this line; rolls up onto the parent allocation line's pickingReturnQuantity. |
ServiceOrderId | Service Order | Lookup → ServiceOrder | | |
ServiceOrderLineId | Service Order Line | Lookup → ServiceOrderLine | | |
SKUId | SKU | Lookup → SKU | | |
StorageLocationId | Storage Location | Lookup → StorageLocation | | Inherited from the reservation and overridable at confirmation, recording the bin the goods were actually taken from rather than the one planned. |
UIProps | UI Props | Text | | |
UnitPrice | Unit Price | Currency | | Copied from the parent reservation's UnitCost despite the name — for lot allocations that is a lot cost and for stock allocations it is the order line's selling price. |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Blocked once the pick has a non-zero quantity; use CancelPicking on the fulfilment, which writes a reversing negative pick and posts the ledger back. |
DeleteInList | Delete | Delete | Delete |
EditEntity | Edit | Edit | Edit |
EditInLine | Edit | EditInline | Edit |
EditListRow | Edit | Edit | EditListRow |
New | New | New, inactive | Deactivated on purpose. Picks are produced only by the fulfilment's picking actions, and the handler rejects any positive-quantity pick that has no allocation-line parent. |
Validations
| Validation | Applies to | Error message | Notes |
| Quantity Rule Validation | Quantity, Error, inactive | Quantity shouldn't be less than zero | Quantity shouldn't be less than zero |
| Unit Price Rule Validation | UnitPrice, Error, inactive | Unit Price can't be less than zero | Unit Price can't be less than zero |