Skip to content

Related Applets - Stock Balance

Find out which documents change an item’s on-hand quantity and which only look as if they do. Nobody types a balance in: it is the running total of a stock ledger that grows only when a stock-moving document is finalised, so credit notes, orders, delivery orders and the plain GRN change nothing, whatever their names suggest.

Overview

Stock balance is the quantity BigLedger believes is on hand for one inventory item at one location (and, summed, for one company). It is not typed in anywhere; it is the running total of a signed stock ledger that the server adds to whenever a stock-moving document is finalised. The Stock Balance applet is only the enquiry screen over that total.

This page is the index for everything around that number. It lists which documents actually move the balance (fewer than the old version of this page claimed), how a FINAL reaches the balance, which applets read it when you add a line or run a report, and the background jobs that keep it right. The field-level detail for each screen lives on the applet pages linked below.

There is no “import lines” feature in the Stock Balance applet. Its single menu item is the listing; balances arrive only through the finalised documents and processors described here.

Where it fits

AppletRole for the stock balanceReference page
Stock BalanceThe enquiry: item x company x location grid with ledger quantity, moving-average cost and last purchase cost; batch, scrap and transaction-history views. Reads only.Stock Balance
Stock AvailabilityThe same balance plus the open documents that will change it: Available = balance + sum(open quantity x signum). The main figure counts sales orders not yet invoiced (−) and plain GRNs not yet on a purchase invoice (+); an open purchase order counts only on the Details view. Reads only.Stock Availability
Stock ReportThirteen reports over the ledger, the balance tables and the purchase documents, including Historical Stock Balance (read live from each item’s last ledger line up to the date you choose) and the Stock Balance report family. Reads only.Stock Report
Stock TakeCounts against the ledger’s opening balance and movements for a location; measures the gap but writes nothing to the balance.Stock Take
Stock Adjustment (Internal)The document that corrects a balance up or down (and the only path from a stock-take variance to the ledger). Writes.Stock Adjustment
Stock TransferTransfer Out and Transfer In between locations, through a per-company stock in transit location. Writes.Stock Transfer
Stock ConversionConverts one item into another at a location. Built to post its lines to the same ledger through a processor of its own — but nothing is connected to the run that would start that processor, so a FINAL conversion moves no stock.Stock Conversion
Stock ReservationThe only writer of the reserved quantity column on the balance row.Stock Reservation
Stock ReplenishmentSeeds balance rows with min / max levels for the items and locations in a run; those levels drive the min/max e-mail job.Stock Replenishment
Inventory Item MaintenanceThe item master (the balance is keyed by inventory item); its Location tab edits the per-location min / max levels on the balance row (update-min-max-qty), and its Stock Min Max Import screen loads them in bulk.Inventory Item Maintenance
Doc Item MaintenanceLinks the sales/purchase item to the inventory item; only lines whose item is a basic or alias inventory item (or a serialised coupon) reach the ledger.Doc Item Maintenance
OrganizationCompanies and locations; the branch’s default location is the last fallback when a line has no location.Organization
Sales and purchase document appletsThe writers (invoice, cash bill, return, GRN Stock In, GIN Stock Out, refund notes, consignment) and the readers (orders, quotations, requisitions, delivery orders). See the two tables below.linked per document below
Non Stock and Trade InTrade-in units have their own ledger and balance; they never appear in the inventory balance.Non Stock and Trade In
EcomSyncThe marketplace quantity is derived from the balance minus open marketplace orders and written to a separate marketplace table.EcomSync Related Applets

What a stock balance is

The current figure is kept twice — once per item × location, once per item × company. What is kept, and what only looks as if it is:

  • Kept up to date: the ledger quantity, the reserved quantity, the minimum and maximum levels, the moving-average and weighted-average costs, last purchase cost, landed cost, and the serial, batch and bin detail (per location); the ledger quantity, reserved quantity and moving-average cost (per company), and — where FIFO is switched on — the FIFO cost (per company only).
  • FIFO is a company figure, not a location one. FIFO takes the oldest open receipts for the item across the whole company, so it writes its current cost to the company row and to each document line, never to a location row. The location row’s FIFO columns stay empty; a report that reads them shows zero for a branch whose company FIFO is working. Costing internals explains the register.
  • Never filled in: physical, available, damaged, RMA, e-commerce buffer, open sales-order, purchase-order, work-order and jobsheet quantities, the reorder level, and LIFO cost at either level (LIFO does not run). If a report or an integration shows one of these, it is showing zero, not a measurement.

Every ledger line is applied to the balance exactly once, so a re-run skips a line already counted. Each ledger line also links to the next line for the same item at the same location and company: the balance is always the latest point of that chain, which is what lets a backdated document be inserted mid-chain and the balance recomputed. Current balances are marked CBAL and the historical snapshots HBAL; ledger lines that open a month are BF / CF / OPENING.

The available quantity you see in Stock Availability is not stored: it is worked out when you ask, from the ledger quantity and the open documents. The marketplace quantity is not kept here either: EcomSync stores it on the item’s listing each time it is worked out.

Which documents move the balance

A document moves stock only if its server document type carries a non-zero quantity signum. The signum is fixed in the backend’s data-consistency object for the type; it is not an applet setting, and the applet’s own constant is overwritten by the server on every save. Twenty-five types have a non-zero quantity signum; the ones with a wiki page are:

DirectionDocument (server type)Quantity signumAmount signumReference page
Stock outSales Invoice (INTERNAL_SALES_INVOICE)-1+1Sales Invoice (Internal)
Stock outCash Bill (INTERNAL_SALES_CASHBILL)-1+1POS General
Stock outSales GIN Stock Out (INTERNAL_SALES_GIN_STOCK_OUT)-1+1Sales GIN Stock Out
Stock outPurchase Return (INTERNAL_PURCHASE_RETURN)-1+1Purchase Return (Internal)
Stock outPurchase Refund Note (INTERNAL_PURCHASE_REFUND_NOTE)-1+1Purchase Refund Note
Stock outTransfer Out (INTERNAL_OUTBOUND_STOCK_TRANSFER)-10Stock Transfer
Stock outCustomer Consignment Out (INTERNAL_CUSTOMER_CONSIGNMENT_OUT)-10Customer Consignment, Consignee Stock Transfer
Stock outPurchase Consignment GIN (INTERNAL_PURCHASE_CONSIGNMENT_GIN)-1+1Consignment GIN (Internal)
Stock inPurchase Invoice (INTERNAL_PURCHASE_INVOICE)+1-1Purchase Invoice (Internal)
Stock inPurchase GRN Stock In (INTERNAL_PURCHASE_GRN_STOCK_IN)+1-1Purchase GRN Stock In
Stock inSales Return (INTERNAL_SALES_RETURN)+1-1Sales Return (Internal)
Stock inSales Refund Note (INTERNAL_SALES_REFUND_NOTE)+1-1Sales Refund Note
Stock inTransfer In (INTERNAL_INBOUND_STOCK_TRANSFER)+10Stock Transfer
Stock inCustomer Consignment In (INTERNAL_CUSTOMER_CONSIGNMENT_IN)+10Customer Consignment
Stock inPurchase Consignment GRN (INTERNAL_PURCHASE_CONSIGNMENT_GRN)+1-1Consignment GRN (Internal)
EitherStock Adjustment (INTERNAL_STOCK_ADJUSTMENT)+1 (the line’s Adjust-In / Adjust-Out sign decides the direction)0Stock Adjustment
EitherStock Conversion (own table, not a generic document)per line-Stock Conversion

Without a page yet: Sales GRN Stock In (+1), Purchase GIN Stock Out (-1), Purchase Self-Billed Invoice (+1), Supplier Consignment In / Out (+1 / -1), the INTERNAL_SUPPLIER_RTV document type (+1 — but the Internal RMA applet’s Supplier RTV is by design a return record that moves no stock; the Purchase Return moves it), Consignment Stock Adjustment (+1), Production Order (+1 as declared, but no applet raises one and no job posts one: manufactured stock moves on the process instance’s own lines, below), and the two trade-in types (Purchase Trade-In +1, Sales Trade-In -1 – posted to the trade-in tables, see above).

These do not move stock, whatever their name suggests. Sales / Purchase Credit Note and Debit Note, the plain Sales / Purchase GRN and GIN (as opposed to GRN Stock In / GIN Stock Out), Sales / Purchase Invoice No Stock Out / No Stock In, Sales Order, Purchase Order, Purchase Requisition, Stock Requisition, Quotation, Packing Order, Delivery Order, Goods Delivery Note, Jobsheet and Job Order all carry quantity signum 0. Finalising them changes nothing on the balance; they knock off, reserve, or bill. The earlier version of this page listed the notes and the plain GRN / GIN as feeding the balance – that was wrong.

How a FINAL reaches the balance

  1. You set the document to FINAL. The main posting job starts its follow-on jobs; one of them is the stock job.
  2. The stock job takes every goods line that moves stock and whose item is an inventory item, and writes one signed ledger line per inventory item. The line’s location is the first of: line delivery location, line store, header store, the branch’s default location. Transfers also write the mirror line on the company’s stock in transit location; customer-consignment documents write an opposite mirror line on the document’s second store.
  3. Each ledger line then updates the location and company balances (quantity, moving-average and weighted-average cost) and the last-purchase cost, and the serial / batch / bin detail according to the item’s type.
  4. If the document is backdated (the new line is not the latest in the chain), the balance is recomputed from the true latest point and the FIFO chain is marked for rebuild.
  5. VOID does not delete anything: it writes an opposite copy of every ledger line with transaction code VOID, marks the document’s inventory posting VOID, and refreshes the affected item / location / company balances.

Stock Conversion is built to follow the same path through its own job; that job is not connected — no job is subscribed to its posting run — so a FINAL conversion writes no ledger line (see Stock Conversion). Manufacturing moves stock when a process instance is finalised: its finalisation job writes the input lines out and the output lines in as ledger lines with no document type behind them (see Manufacturing). Trade-in units go into the trade-in ledger instead.

Whether the stock job runs for your tenant is set by BigLedger in your tenant’s job configuration, not by an applet setting. If a FINAL document never shows in the balance, that configuration and the job queue are the first things support checks.

Which applets read the balance

Applets in the current release that read the balance:

AppletWhere you see it
Stock Balance, Stock Availability, Stock ReportThe enquiry and report screens
Stock TakeOpening balance, movements and closing balance on the count report (from the ledger lines)
POS General, Sales Invoice (Internal), Sales Order (Internal), Sales Quotation (Internal), Delivery Order (Internal), Sales Invoice No Stock OutThe Stock Balance column on the line-item picker and line details
Purchase Order (Internal), Purchase GRN (Internal), Purchase Return (Internal), Purchase Requisition (Internal)Line-item balance and reorder checks
Stock Transfer, Stock Adjustment, Stock Requisition (Internal), Consignee Stock Transfer, Customer ConsignmentCurrent company / location balance beside the quantity you enter
Stock Reservation, Stock Replenishment, Warehouse ManagementReserve, replenish and pick against the balance
Inventory Item Maintenance, Doc Item MaintenanceThe item’s Location / Stock Availability tabs
Delivery Installation, Car Workshop, DepositRead the item balance on their line screens

Background jobs

Most of the stock work runs straight after the action that causes it and needs no set-up. Two jobs need a clock: each does nothing until it is scheduled for your tenant in the Scheduler:

Scheduled jobWhat it does
INVENTORY_HISTORICAL_STOCK_BALANCE_PROCESSORCopies the current balances, as they stand when it runs, into the historical balance tables (HBAL). The Historical Stock Balance report does not read this copy: it reads the stock ledger when you run it
MIN_MAX_QTY_STOCK_BALANCE_CRON_NOTIFICATION_PROCESSORE-mails a summary plus CSV of the items whose ledger quantity is below a non-zero minimum level or above a non-zero maximum level, for the locations and recipients set in its properties

When a figure has gone wrong, one item’s balance at one location (and its company) can be rebuilt from the ledger — and the rebuild is a screen as well as a support request: the Data Fix applet’s Stock › Location Stock lists every item and location whose stored balance differs from the sum of its ledger lines (the columns are headed Stock Movement Balance and Stock Availabiliy Balance, the second spelt that way on the screen) and DATA FIX rebuilds the rows you select from those lines. It is an administrator’s applet behind its own permission, so for most readers the request still goes to whoever administers the tenant, or to BigLedger support, with the item and the location named. Nobody types a number in: if the ledger lines are wrong, the fix is still a document.

Troubleshooting

SymptomLikely causeWhat to do
A finalised invoice, GRN Stock In or return never appears in the balanceThe item on the line is not a basic / alias item, or is an alias that points at no inventory item (a basic item with no link is linked for you at posting); or the stock job is not subscribed for the tenant; or the job failed and is waiting in the queueCheck the item type, and an alias’s link, in Doc Item Maintenance; ask support to check the job queue and the tenant’s job-template subscriptions
Stock lands in a location nobody uses (often a deactivated one)Location precedence: line delivery location, line store, header store, then the branch default. A stale default or a line that kept an old location puts the quantity thereCorrect the branch default in Organization; fix the lines and re-post, or move the quantity with a Stock Transfer or Stock Adjustment
Intercompany returns book the quantity at the wrong locationThe return copied the counterpart document’s store / delivery location instead of the receiving locationCompare the store and delivery location on the header and lines with the intended location; adjust and repost
Historical Stock Balance and Stock Summary by Location disagree on a closing figureBoth read the stock ledger when you run them, and both take the closing quantity off the same last ledger line up to the date, so the quantities agree for the same locations and filters. The values can differ: each report prices from a different ledger line, and Historical Stock Balance drops an item that has no ordinary or Reset MA lineCheck the basis before you look for a missing document: Inventory reports sets out the pair
Trade-in units are missing from the balance and the historical reportTrade-in stock is kept in its own tables; the inventory reports do not include it (an enhancement request to show both is open)Use the Non Stock and Trade In applet’s own listing for trade-in units
The min / max e-mail never arrivesThe job needs a non-empty location list and recipient list in its properties, and only rows whose min or max level is greater than zero count; with nothing to report it sends no mailSet min / max on the item’s Location tab or through a replenishment run, and check the job’s properties with support
The same document counted twice after a reprocessShould not happen: the applied-marker table rejects a second application of the same ledger line. If it does, a duplicate ledger line existsSupport: GET .../duplicate-stock-balance on the transaction-line data-fix controller lists duplicates
Available in Stock Availability differs from the balance hereExpected: available = balance plus the signed open sales orders and uninvoiced GRNs. The balance itself only changes on FINAL of a stock-moving documentLook at the Sales Order and GRN tabs on Stock Availability’s Details view

Related documentation

Last updated on