AccountingBookId | Accounting Book | Lookup → AccountingBook | | The book whose method produced this layer. Only the company's primary book actually has layers persisted; a secondary book's inventory value is derived by replaying the same movements and is stored as statement-line deltas, so querying layers for a secondary book returns nothing. |
BranchId | Branch | Lookup → Branch | | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
EffectiveUnitCost | Effective Unit Cost | Currency | | Intended as unit cost plus capitalised landed cost, and it is the figure the valuation statement prefers over UnitCost. In practice the replay always assigns it the plain UnitCost, so today the two never differ. |
Id | Id | Guid | Yes | |
ItemId | Item | Lookup → Item | | |
ItemLotId | Item Lot | Lookup → ItemLot | | Declared as a soft reference to the lot or batch master but never assigned when the engine writes layers; lot identity travels in LotKey instead. Do not join on it to find batch-level cost. |
LandedCostPerUnit | Landed Cost Per Unit | Currency | | Posting a landed-cost voucher books a general-ledger inventory uplift and stamps the per-line allocation on the voucher, but the documented follow-up to push that allocated charge into the cost layers is still outstanding, so engine cost of goods sold excludes freight and duty. |
LotKey | Lot Key | Text | | The lot identity used by Specific Identification, sourced from the movement's ItemLotId; issues must name the same key to draw from this layer. The other methods leave it null. |
Method | Method | Text | | The cost-flow method this layer belongs to, written from the method the valuation policy resolved. Layers are keyed by it, so changing an item's policy makes the engine build a parallel set of rows under the new method name rather than converting the existing ones. |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | Yes | A generated identifier of the form ICL followed by the row's id. It carries no business meaning, is not a document number, and changes every time the scope is replayed. |
OriginalQuantity | Original Quantity | Currency | | The quantity the layer was created with, before any consumption. For MovingAverage and WeightedAverage this is the total quantity received across the whole replayed movement stream rather than a single receipt. |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | Partner Account | Lookup → Account | | The owning company or legal entity, following the finance convention where partner account means the company rather than a trading counterparty. |
ReceiptDate | Receipt Date | Date | | The movement date the layer was received on, and the key FIFO and LIFO consume in order of. For the average methods it holds the date of the first receipt in the replayed stream rather than a meaningful receipt date. |
RecordTypeId | Record Type | Guid, hidden | | |
RemainingQuantity | Remaining Quantity | Currency | | The quantity of this layer still unconsumed under the primary book's method, and the figure the inventory valuation statement multiplies by unit cost. For the average methods the single pool row's value here is the entire on-hand balance for the scope, not a per-receipt residue. |
Sequence | Sequence | LargeNumber | | Declared for ordering layers within a scope but never assigned when layers are written; it is the sibling opening-lot-state rows carried across a period boundary that actually get a sequence. Order layers by ReceiptDate instead. |
SourceLedgerId | Source Ledger | Lookup → InventoryLedger | | A deliberately unenforced reference (no foreign key) to the InventoryLedger inward row that created the layer, and the idempotency anchor that lets a replay rebuild identical rows. The average methods leave it null because their single pool row has no single originating receipt. |
StorageLocationId | Storage Location | Lookup → StorageLocation | | Declared on the layer but never assigned by the engine, which keys a cost scope by book, item, branch and method only. Layers are therefore branch-level, not location-level, regardless of what a policy's CostingLevel says. |
UIProps | UI Props | Text | | |
UnitCost | Unit Cost | Currency | | The receipt cost per unit, taken from the unit cost on the originating InventoryLedger inward row (for a goods receipt that is the purchase order line cost). For the average methods it holds the closing running or period average instead of a receipt price. |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |