The in-transit leg of a goods movement, held on the receiving side: goods that have left the sender but have not yet been received, parked in the InventoryStock Pipeline bucket until a GoodsReceipt converts them to inward stock. It is the mirror of the sender's DeliveryOrder rather than a duplicate of it - releasing a shipment from a delivery order (or from an invoice) builds a Shipment in which the sender's partner account becomes SupplierAccountId and the receiving account's own Branch becomes BranchId, so one physical movement is an outbound document for the seller and an inbound document for the buying branch. A Shipment can equally stand alone against a PurchaseOrder for ordinary supplier deliveries. Its actions are PerformInventoryPosting (quantities into Pipeline), PerformReleaseReceipt and SelectiveReleaseReceipt (raise the GoodsReceipt), and CancelShipment and SelectiveCancelShipment (write off quantity that will never arrive).
Fields
| Field | Label | Type | Required | What it does |
BranchId | Branch | Lookup → Branch | | The receiving branch, and the branch whose InventoryStock Pipeline bucket the posting fills. When the shipment is released from a delivery order this is resolved as the Branch whose PartnerAccountId equals the delivery's customer account, and the release fails outright when no such branch exists. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DeliveryOrderDate | Delivery Order Date | Date | | |
DeliveryOrderNumber | Delivery Order Number | Text | | To trace a shipment back to the delivery that created it, match on the shipment's generated name, which is the delivery order's name prefixed with SHP-. |
DocumentDate | Document Date | Calculated (calculated) | | Not a stored column: its getter and setter both read and write ShipmentDate, so writing either field changes the same value. It exists so shipments answer the same document-date convention as the other transaction documents. |
ExternalId | External | Text | | |
Id | Id | Guid | Yes | |
InvoiceId | Invoice | Lookup → Invoice | | |
IsDealerShipmentCreated | Is Dealer Shipment Created | Boolean | | |
IsInJobQueue | In Job Queue | Boolean | Yes | |
IsInventoryPosted | Inventory Posted | Boolean | Yes | The reliable posted marker is InventoryLedgerId on the shipment lines, which is also what the goods-receipt rules read. |
IsReceiptReleased | Receipt Released | Boolean | Yes | Intended to mark that a goods receipt has been raised from this shipment, but no code path sets it. Look instead for GoodsReceipt rows linked to the shipment, or at the lines' ReceiptQuantity and PendingQuantity. |
JobInterfaceQueueId | Job Queue | Lookup → InterfaceQueue | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Document Number | Text | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | Partner Account | Lookup → Account | | The receiving company that owns this inbound document. On a shipment released from a delivery order it is the delivery's customer account, and it is validated against BranchId and locked after creation. |
PerformInventoryPosting | Perform Inventory Posting | Boolean | Yes | Nothing writes or reads this column. |
PerformReleaseReceipt | Perform Release Receipt | Boolean | Yes | |
PurchaseOrderId | Purchase Order | Lookup → PurchaseOrder | | The purchase order this inbound shipment answers, for the ordinary supplier flow where the shipment is created directly rather than released from someone else's delivery order. It is empty on shipments generated from a delivery order or an invoice. |
RecordTypeId | Record Type | Guid, hidden | | |
ResourceId | Executive | Lookup → Resource | | |
ShipmentDate | Shipment Date | Date | | The date the goods left the sender, defaulted to the current date and time when the shipment is created. It is the same underlying value as DocumentDate, which is a pass-through alias for it. |
Status | Status | PickList | | Seeded with three active values (Draft, Interface and a misspelled 'Recieved') but never assigned by any code path, so it does not track receipt progress. Use the line-level InventoryLedgerId, ReceiptQuantity and PendingQuantity for machine state. Values: Draft, Interface, Recieved, Partially Cancelled, Cancelled. |
SupplierAccountId | Supplier Account | Lookup → Account | | The account the goods are coming FROM. When the shipment is released from a delivery order this is the delivery's partner account, i.e. the selling company - the party roles are swapped so the same movement reads as inbound from the receiving branch's point of view. |
SupplierInvoiceDate | Supplier Invoice Date | Date | | |
SupplierInvoiceNumber | Supplier Invoice Number | Text | | The sender's own invoice or dispatch document number, captured for reconciliation when the goods are received and billed. It is reference data - the platform does not match it automatically to a Bill. |
TotalPendingQuantity | Total Pending Quantity | Calculated (calculated) | | |
TransporterName | Transporter Name | Text | | |
TransporterReferenceNo | Transporter Reference No | Text | | |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete the selected records. |
CancelShipment | Cancel Shipment | ServerAction (CancelShipment) | Adds each line's remaining PendingQuantity to its CancelledQuantity, closing out stock that will never be received; PendingQuantity then nets the cancellation the same way it nets receipts. It is refused when no line has PendingQuantity above zero. Be aware it does not itself reverse an already-posted Pipeline movement: the shipment line only re-posts to the ledger when Quantity or UnitPrice changes, and CancelledQuantity is not in that trigger set, so a shipment cancelled after PerformInventoryPosting leaves its pipeline stock standing until the line is re-posted. |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete in a list page |
Edit | Edit | Edit | Edit |
EditEntity | Edit | Edit | EditEntity |
EditInDetail | Edit | EditInline | edit |
EditInList | Edit | EditInline | Edit |
Import | Import | UIAction | Import Shipment |
New | New | New | New |
PerformInventoryPosting | Post Inventory | ServerAction (PerformInventoryPosting) | Posts the shipment's unposted lines into the InventoryStock Pipeline bucket, making the goods visible as in-transit before they physically arrive, and stamps InventoryLedgerId on each line - the marker the goods-receipt ledger rules read to decide whether receiving converts pipeline stock or adds fresh inward stock. The quantity posted is Quantity minus CancelledQuantity, and Pipeline is not a cost event, so no cost journal is raised. Note the seeded action row itself is inactive and hidden, so it is normally invoked programmatically rather than from the UI. |
PerformReleaseReceipt | Release Receipt | ServerAction (PerformReleaseReceipt) | PerformReleaseReceipt |
SelectiveCancelShipment | Selective Cancel Shipment | ServerAction (SelectiveCancelShipment) | Same as CancelShipment but limited to the shipment lines named in the args payload under ShipmentLines, each capped by its RequestedQuantity; an empty list or ids that match no line is rejected rather than treated as 'cancel everything'. |
SelectiveGRN | Selective Release Receipt | ServerAction (SelectiveReleaseReceipt) | A second UI entry point for selective goods receipt, not a separate behaviour and not dead: its ServerActionName is SelectiveReleaseReceipt, and handler dispatch resolves on ServerActionName rather than the action name, so it runs the same selective receipt logic as the SelectiveReleaseReceipt action. The two differ only in the layout they open (SelectiveGoodsReceipt versus SelectiveReleaseReceipt) and in the confirmation dialog. |
SelectiveReleaseReceipt | Selective Release Receipt | ServerAction (SelectiveReleaseReceipt) | SelectiveReleaseReceipt |
Lookup filters
| Filter | Lookup field | Notes |
| Branch For Partner Account | BranchId | |
| Only Partner Account | PartnerAccountId | |
| Only sSupplier | SupplierAccountId | |