๐Ÿ“‹ Inventory Kardex Detail

User Guide โ€“ Field Definitions (Transaction-by-Transaction)

Introduction

The Inventory Kardex Detail report shows every inventory movement (transaction-by-transaction) for each product and store, including the opening balance, running balances, and cost information. This document explains the meaning of each field in the InventoryKardexDetailDto so that users can correctly interpret what they see on the screen or in exported reports.

1. Product & Location Information

Field Description
Product Id Internal system ID of the product (ProductId from the Products table). Used for linking the Kardex row to the product master.
Product Name The descriptive name of the item as defined in the product master (for example, "Coca Cola 330ml").
Lookup Code Internal product code / SKU used inside QBM for searching and scanning (often printed on labels or used at POS).
UPC / SKU External barcode or universal product code. This may be the numeric barcode printed on the package.
Category Id Identifier of the category to which this product belongs. It corresponds to the Product Category in your inventory master. This is empty when the product is not assigned to any category.
Category Name The short name of the product category (for example, "Soft Drinks" or "Electronics"). This allows grouping and filtering by category in the report.
Store Id Internal numeric ID of the store / branch / warehouse where the movement happened.
Store Name The name of the store, branch, or warehouse (for example, "Main Store" or "Warehouse 1").

2. Transaction Details

These fields describe the individual inventory transaction (movement) represented by each row.

Field Description
Transaction Id Internal ID of the inventory transaction row. This usually links to the [Inventory Transactions] table. For the opening balance row, this value is set to 0.
Transaction Date The date (and time) when the transaction is recorded. For normal rows this is the actual transaction date. For the opening balance row, the date is set to one second before the selected From Date so that it always appears as the first row.
Row Type Indicates whether the row is an opening balance or an actual movement:
  • 0 โ€“ Opening Balance: Starting quantity & value at the beginning of the period.
  • 1 โ€“ Movement: A real transaction (purchase, sale, transfer, adjustment, etc.).
Transaction Type Id Numeric identifier of the transaction type (for example, Purchase, Sale, Transfer, Adjustment). Combined with Row Type, it determines the document type label shown in the Kardex grid.
Document Number The main number of the source document (invoice number, GRN number, adjustment number, etc.). This may be numeric or alphanumeric depending on how the document is configured.
Transaction Reference Secondary reference for the transaction (for example, external reference, customer or supplier reference, or any additional code provided by the user).
Description Free-text description of the transaction, such as remarks from the document or additional information entered by the user.

3. In & Out Quantities and Amounts

Each movement row splits the effect into separate In and Out fields. Incoming and outgoing movements are always shown as positive numbers to make analysis easier.

Field Description
In Quantity Quantity received or added to stock on this transaction. Examples: purchases, returns from customers, transfers in, production output, or positive adjustments. For pure outbound transactions this value is 0.
In Amount Monetary value of the incoming movement. Usually based on the asset value of the transaction (TransactionAssetValue) or a fallback calculation using quantity and cost.
Out Quantity Quantity issued or removed from stock on this transaction. Examples: sales, returns to suppliers, transfers out, consumption in production, or negative adjustments. This is always stored as a positive number, even if the underlying transaction quantity in the database is negative.
Out Amount Monetary value of the outgoing movement, stored as a positive number. This represents the cost of items leaving the inventory for this row.

4. Transaction Unit Cost

Field Description
Transaction Unit Cost The cost per unit for this particular transaction. It is calculated as:
If InQuantity > 0 โ†’ InAmount รท InQuantity
Else if OutQuantity > 0 โ†’ OutAmount รท OutQuantity
If there is no movement (for example, the opening balance row), this field is empty.

5. Running Balances

Running balances show the cumulative quantity and value after applying each row, starting from the opening balance at the beginning of the period.

Field Description
Balance Quantity Quantity on hand after this row is applied. It starts from the opening quantity and then adds all incoming quantities and subtracts all outgoing quantities row by row.
Balance Amount Total inventory value after this row. It starts from the opening value and then adds incoming amounts and subtracts outgoing amounts for each transaction.
Avg Cost Running average unit cost at this point in time, calculated as:
Balance Amount รท Balance Quantity
If the balance quantity is zero (no stock), this value is left empty.

6. Cumulative Totals (Period-to-Date)

These fields show the total quantity and value moved during the selected period, separately for incoming and outgoing movements.

Field Description
Cumulative In Quantity Total quantity received in the selected period from the first row up to this row. The opening balance row does not contribute to this total.
Cumulative In Amount Total value of all incoming movements in the period up to this row.
Cumulative Out Quantity Total quantity issued in the selected period up to this row.
Cumulative Out Amount Total value of all outgoing movements (issue / consumption) in the period up to this row.

7. Sequence & Analysis Fields

Field Description
Row Seq Sequential row number within each product and store combination. Starts from 1 for the opening balance row and increases by 1 for each subsequent movement. This makes it easy to refer to a specific line in support cases or analysis.
Days Since Previous Number of days between this row and the previous Kardex row for the same product and store. It is calculated using the transaction dates. For the first row (opening balance), this field is empty.
  • 0 days: multiple movements on the same day.
  • Large number of days: long period without activity (potential slow mover).

8. Data Quality Flag

The system includes a flag to help identify suspicious situations where stock levels may be incorrect.

Flag Meaning
Is Negative Balance Indicates whether the running balance quantity becomes negative after this row:
  • False (0): Balance quantity is zero or positive.
  • True (1): Balance quantity is negative โ€“ this is a data problem because physically negative stock is impossible. Check missing purchases, wrong quantities, or incorrect adjustments.

9. Practical Tips for Using the Kardex Detail

๐Ÿ”Ž Trace discrepancies: If the summary report looks wrong, use Kardex Detail to follow each transaction row-by-row and see exactly where the balance changes unexpectedly.
โš ๏ธ Investigate negative balances: Filter rows where Is Negative Balance is true. These indicate missing or incorrect entries that should be corrected to keep your inventory accurate.
๐Ÿ“… Analyze activity gaps: Look at Days Since Previous to find periods with no movements โ€“ these may indicate slow-moving or dead stock that needs management attention.
๐Ÿ“Š Combine with Summary: Use Kardex Summary for high-level balances and KPIs, then open Kardex Detail for the same product and store when you need full audit trail.