Value Entries
GETTable: Value Entry
"Read-only value entries, the cost layer behind every inventory movement. This is the source Business Central's own inventory valuation and cost of goods sold are built on."
Use costAmountActual
costAmountActual is realised cost. Sum it for true COGS and for inventory value: it is the number Business Central posts to the inventory accounts.
costAmountExpected is the cost of quantity received or shipped but not yet invoiced. It is superseded as invoices arrive. Adding the two double counts.
Several rows per movement
One item ledger entry usually has more than one value entry, so group by itemLedgerEntryNumber rather than expecting a single row:
| entryType | when it is written |
|---|---|
| Direct Cost | the original posting |
| Revaluation | someone revalued the item |
| Rounding | costing rounding residue |
| Indirect Cost | overhead applied |
| Variance | standard costing variance |
Margin without a sales document
salesAmountActual and costAmountActual sit on the same row, so gross margin per item, per customer or per location comes straight off this feed with no join to a sales document and no unit-cost approximation.
Deriving cost from the item card unit cost instead gives a figure that changes whenever someone edits the item, and never matches the general ledger.
Reconciling to the G/L
costPostedToGl is how much of the actual cost has reached the general ledger. A gap between it and costAmountActual means Post Inventory Cost to G/L has not been run, and it is the usual reason an inventory valuation report disagrees with the inventory account.
inventoriable is false for costs that never become inventory value, such as an item charge on a sale. Include them in COGS, exclude them from stock value.
Volume
Typically the largest table in Business Central, larger than the item ledger itself. Bound the first load by postingDate or entryNumber, then run incrementally.