One item-level stock change on an adjustment, for one lot, SKU and storage location. AdjustmentType selects both the quantity semantics and the InventoryStock bucket via seeded InventoryLedgerSetting rules: a null type is a plain adjustment whose signed Quantity increments the Adjustment bucket when positive and the AdjustedOut bucket when negative; typed lines (Expired, Damaged, Shortage, Excess, OnHold, OnLoan, Assemble, Disassemble) post to their named buckets, except that the Disassemble rule increments the Assemble bucket. Lines never post on creation - every seeded rule has OnCreate false - so posting happens through the header action or on later edits and deletes. Assemble and Disassemble lines additionally explode the item's bill of materials into child lines with the opposite type. Items with TrackInventory false are rejected and lot-tracked items require an ItemLotId.
Fields
| Field | Label | Type | Required | What it does |
AdjustmentId | Inventory Adjustment | Lookup → Adjustment | Yes | |
AdjustmentType | Adjustment Type | PickList | | Values: Expired, Damaged, OnLoan, Shortage, Assemble, Excess, OnHold, Disassemble. |
ClaimBatchId | Claim Batch | Lookup → ClaimBatch | | |
ClaimId | Claim | Lookup → Claim | | |
ClaimLineId | Claim Line | Lookup → ClaimLine | | The Part to Part claim line whose approved quantity this adjustment line writes back into stock. |
ConversionRatio | Conversion Ratio | Number | | |
ConversionRatio1 | Conversion Ratio 1 | Number | | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
CycleCountLineId | Cycle Count Line | Lookup → CycleCountLine | | Ties the adjustment line to the counted line that produced it: cycle-count release creates one line for the net discrepancy plus separate lines typed Damaged and Expired when those quantities were recorded. |
DamagedQuantity | Damaged Quantity | Calculated (calculated) | | Not an independently entered figure: it is calculated as the line Quantity when AdjustmentType is Damaged and zero otherwise. It exists so the seeded ledger rule for damaged stock has a field to test and post from, which is why entering a quantity here without setting the type has no effect. |
ExcessQuantity | Excess Quantity | Calculated (calculated) | | Calculated as the line Quantity when AdjustmentType is Excess and zero otherwise; it is the field the seeded excess ledger rule tests and posts from, not a separately captured quantity. |
ExpiredQuantity | Expired Quantity | Calculated (calculated) | | Calculated as the line Quantity when AdjustmentType is Expired and zero otherwise; it is the field the seeded expiry ledger rule tests and posts from, not a separately captured quantity. |
ExternalId | External | Text, unique | | |
Id | Id | Guid | Yes | |
ILPostingQuantity | IL Posting Quantity | Calculated (calculated) | | The absolute value of the line quantity, calculated. It gives the ledger a non-negative magnitude to post with, while the direction of the movement is carried by the ledger type and the sign of Quantity. |
InventoryLedgerId | Inventory Ledger | Lookup → InventoryLedger | | Posted marker: inventory posting only picks up lines where this is still empty, then stamps the created ledger row's id here, which makes reposting idempotent. |
IsILPosted | IL Posted | Boolean | Yes | InventoryLedgerId is the field that actually records that the line reached the inventory ledger. |
IsILPostingApproved | IL Posting Approved | Boolean | Yes | |
ItemComponentId | Item Component | Lookup → ItemComponent | | Set on the automatically generated component lines to record which bill-of-materials component the line represents. Generated lines take the opposite adjustment type to their parent and a negated quantity when the parent is an assembly, so the components are consumed as the assembly is built. |
ItemId | Item | Lookup → Item | Yes | |
ItemLotId | Item Lot | Lookup → ItemLot | | |
ItemLotTypeId | Item Lot Type | Lookup → ItemLotType | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Line Number | Text | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
ParentLineId | Parent Line | Lookup → AdjustmentLine | | Points at the Assemble or Disassemble line whose bill of materials was exploded to create this component line. Deleting the parent deletes its children, and only parent lines are user-entered. |
PriceAsOnDate | Price As On Date | Date | | |
PriceListId | Price List | Lookup → PriceList | | |
Quantity | Quantity | Number | | |
RecordTypeId | Record Type | Guid, hidden | | |
Remarks | Remarks | Text | | |
ShortageQuantity | Shortage Quantity | Calculated (calculated) | | Calculated as the line Quantity when AdjustmentType is Shortage and zero otherwise; it is the field the seeded shortage ledger rule tests and posts from, not a separately captured quantity. |
SKUId | SKU | Lookup → SKU | | |
StorageLocationId | Storage Location | Lookup → StorageLocation | | |
TotalCost | Total Cost | Currency | | Derive the line's value from Quantity and UnitCost instead of reading it. |
UIProps | UI Props | Text | | |
UnitCost | Unit Cost | Currency | | Defaulted from the matching price-list rule's price, because an adjustment line is treated as a cost line rather than a selling-price line; a value typed on a brand-new line is respected, but changing the header's price list or price date re-derives it. Lines released from a cycle count instead inherit the counted line's unit cost, which is usually zero. |
UnitCost2 | Unit Cost 2 | Currency | | The secondary price from the same price-list rule that sets UnitCost. It is populated alongside it but nothing in the adjustment posting or valuation path consumes it. |
UOM | UOM | PickList | | Values: Pack, Litres. |
UOM1 | UOM 1 | PickList | | Values: Each. |
UOMQuantity | UOM Quantity | Number | | |
UOMQuantity1 | UOM Quantity 1 | Number | | |
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 |
EditInLine | Edit | Edit | Edit |
EditInLineEntity | Edit | EditInline | Edit |
New | New | New | New |
NewInLine | Quick Add | NewInline | New |
PostInventory | Post Inventory | UIAction | Post from the parent document's Perform Inventory Posting, which picks up every line that has no InventoryLedgerId yet. |
Validations
| Validation | Applies to | Error message | Notes |
| Item Required Validation | ItemId, Error | Selection of Item is Mandatory. | Selection of Item is Mandatory. |
| Quantity Validation On Disassemble | Error, inactive | Quantity can not be positive in case of Disassemble Adjustment Type. | Quantity can not be positive in case of Disassemble Adjustment Type. |
| Restrict Negative Quantity | Quantity, Error, inactive | Quantity must be greater than 0. | Quantity must be greater than 0. |
| Total Cost Rule Validation | TotalCost, Error | Total Cost can't be negative | Total Cost can't be negative |
| Unit Cost Rule Validation | UnitCost, Error, inactive | Unit Cost can't be negative | Unit Cost can't be negative |
Lookup filters
| Filter | Lookup field | Notes |
| Sku For Item | SKUId | |