The header of a stock movement between branches or partner companies, whose Type decides which of three line collections it uses: Outward (dispatch leg, TransferOutwardLines), Inward (receiving leg, TransferInwardLines) or Single Step (TransferLines, one document that books both effects with no transit leg). A two-step move is therefore two documents, not two line sets: releasing an outward transfer generates a whole new Inward Transfer record plus one inward line per released batch, cross-linked by OutwardTransferId and InwardTransferId. The four Is* flags are calculated over the lines and are the real machine state; Status is only ever written as 'Draft' by the field-sales van-load generator and by its default formula, so it does not track progress.
Fields
| Field | Label | Type | Required | What it does |
BranchId | From Branch | Lookup → Branch | Yes | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DocumentDate | Document Date | DateAndTime | | Stamped with the server's current time when the transfer is inserted. |
ExecutiveResourceId | Executive | Lookup → Resource | | |
ExternalId | External | Text, unique | | |
FieldSalesId | Field Sales | Lookup → FieldSales | | Links the document to a field-sales run: the van-load generator creates an Outward transfer and the take-in generator an Inward transfer, both stamped with this key and both left in Draft. |
Id | Id | Guid | Yes | |
InwardTransferId | Inward Document | Lookup → Transfer | | |
IsILPosted | IL Posted | Calculated (calculated) | | Calculated: true only when the document has lines and every line across all three collections carries an InventoryLedgerId. It is never stamped by the posting code, so it cannot drift from the lines. |
IsInwardPosted | Inward Posted | Calculated (calculated) | | Calculated: true when the document has inward lines and none of them is still missing an InventoryLedgerId — that is, the receiving leg has reached the ledger. |
IsInwardReceived | Inward Received | Boolean | | Flips true when every inward line has been received. Once true, PerformInwardReceive and SelectiveInwardReceive refuse to run again. |
IsOutwardReleased | Outward Released | Calculated (calculated) | | Set true by outward release only when every outward line has no pending release quantity left - a partial (selective) release leaves it false so the document can be released again. PerformOutwardRelease refuses once it is true. |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Document Number | Text | | |
OutwardTransferId | Outward Document | Lookup → Transfer | | On an Inward transfer, points back at the Outward transfer whose release created it (the outward document gets inwardTransferId stamped in the same operation). A transfer with this set was system-generated by PerformOutwardRelease rather than keyed by hand. |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | From Partner Account | Lookup → Account | Yes | The source partner company. |
PerformILPosting | Perform IL Posting | Boolean | | |
PerformInwardPosting | Perform Inward Posting | Boolean | | |
PerformInwardReceive | Perform Inward Receive | Boolean | | |
PerformOutwardRelease | Perform Outward Release | Boolean | | |
PurchaseRequisitionId | Purchase Requisition | Lookup → Requisition | | The purchase Requisition this transfer was raised to satisfy (requisition-driven stock transfers); the individual outward lines link back via their requisitionLineId and aggregate their quantity onto the requisition line's stock-transfer rollup. |
ReceivedResourceId | Received By | Lookup → Resource | | The resource who will receive the stock at the destination. Outward release - full or selective - refuses to run until this is set. |
ReceivedTime | Received Time | Date | | Written by no code path. Receipt is evidenced on the inward lines through IsReceived and ReceivedQuantity, and on the header through the calculated IsInwardReceived. |
RecordTypeId | Record Type | Guid, hidden | | |
Status | Status | PickList | | Values: Draft, Pending Approval - Outward, Approved - Outward, Released, Pending Approval - Inward, Approved - Inward, Received. |
ToBranchId | To Branch | Lookup → Branch | Yes | The destination branch of the movement; the source branch is branchId (whose navigation is named FromBranch). Outward release copies both onto the generated inward document, and destination item-lot clones are created under this branch. |
ToPartnerAccountId | To Partner Account | Lookup → Account | | The destination owning company when a transfer crosses companies. Item-lot clones minted for the destination are owned by this account, falling back to partnerAccountId when empty - so leaving it blank means an intra-company transfer. |
TotalClosedQuantity | Total Closed Quantity | Calculated (calculated) | | |
TotalQuantity | Total Quantity | Calculated (calculated) | | Calculated per document type: inward lines for Inward, outward lines for Outward, otherwise the single-step lines. A document whose lines sit in a different collection than its type implies therefore totals zero. |
TransferredByResourceId | Transferred By | Lookup → Resource | | |
TransferTime | Transfer Time | DateAndTime | | Also stamped with the server's current time on insert; it is not moved forward when the outward release actually happens, so it records document creation rather than dispatch. |
Type | Type | PickList | Yes | Values: Inward, Single Step, Outward. |
UIProps | UI Props | Text | | |
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 | Delete |
DeleteInList | Delete | Delete | Delete |
Edit | Edit | Edit | Edit |
EditEntity | Edit | EditInline | Edit |
EditEntityDetails | Edit | Edit | Edit Entity |
EditInLines | Edit | EditInline | Edit |
New | New | New | New |
PerformILPosting | Post Inventory | ServerAction (PerformILPosting) | Perform Inventory Posting |
PerformInventoryPosting | Post Inventory | ServerAction (PerformInventoryPosting) | This action perform inventory posting. |
PerformInwardReceive | Inward Recieve | ServerAction (PerformInwardReceive) | Receive TransferOutwardLine as InwardLines |
PerformOutwardRelease | Release Outward | ServerAction (PerformOutwardRelease) | Releases Outward Document. |
SelectiveInwardReceive | Selective Inward Receive | ServerAction (SelectiveInwardReceive) | Selective Inward Receive |
SelectiveOutwardRelease | Selective Release Outward | ServerAction (SelectiveOutwardRelease) | Selective Release Outward |
SelectiveTransferPosting | Selective Transfer | ServerAction (SelectiveTransferPosting) | Selective Transfer Posting |
Validations
| Validation | Applies to | Error message | Notes |
| Restrict Inward Create | Type, Error | Inward Document cannot be generated without an Outward Transfer Document. | Restrict Inward Create |
| Branch Rule Validation | BranchId, Error, inactive | Branch can't be same | Branch can't be same |
| XM_DocumentDateChangeValidation | DocumentDate, Error | You cannot change Document Date | You cannot change Document Date |
| XM_ReceivedTimeRuleValidation | ReceivedTime, Error | Received Time should be greater than transfer time | Received Time should be greater than transfer time |
| Required Fields | Error | Selection of To Partner Account and To Branch is mandatory. | Selection of To Partner Account and To Branch is mandatory. |
| XM_TimeValidation | TransferTime, Error | Transfer Time can't be less than received time | Transfer Time can't be less than received time |
Lookup filters
| Filter | Lookup field | Notes |
| FromBranch For Partner Account | BranchId | |
| To Branch For Partner Account | ToBranchId | |