Skip to content

Manufacturing in Depth

Finalising one production step takes its materials out of stock and puts the item it made in, and carries none of the materials’ cost across; nothing in the module posts a journal. This page is what happens behind the four manufacturing applets; the module’s front door is the Manufacturing module page.

What each applet records

AppletWhat it records, behind the screen
Process MaintenanceThe recipe: machines, process types, a process template per step (its input and output items, each with a Ratio) and a job template per finished item, whose groups the backend derives by walking from the templates that output the item down through their inputs. Master data; it moves no stock
Production Planning and MonitoringThe plan: a job order for a quantity of one item, its generated process instances (one per step), its links to the sales-order lines it serves, and stock reservations. Its Production Request screen writes a status on a sales-order line and creates nothing
Manufacturing OperationsThe floor: operators’ work logs against a process instance, the supervisor’s approval of each log, and the supervisor’s FINAL — the one action in the module that moves stock
Packing Order Applet (Internal)The pack: a packing order knocked off from a sales order, the pick-pack queue its Final fills, and the supervisor approval that records the packed bins and releases the sales order’s stock reservation. Quantity and amount signum 0 — it neither moves stock nor posts

Supporting applets, owned by other modules and used here

AppletOwnerWhy manufacturing needs it
Stock BalanceInventoryWhere you see what a FINAL did, and the finished item’s moving-average cost
Stock AdjustmentInventoryReset MA, where the accountant gives a finished item the cost of what went into it
Stock ConversionInventoryLight kitting without a job order — input and output lines on one document at one location
Stock Reservation AppletInventoryThe bin-level reservation the job order’s stock-planning screen writes, and the expiry processor that releases it
Sales Order (Internal)SalesWhere demand comes from: a sales-order line’s MRP tab requests production and links the line to a job order; MRP_MANDATORY_FOR_NON_FINISHED_GOODS (with ENABLE_MRP_JOB_ORDER_LINK) makes the screen require a Requested status — not a job order — on lines without the Fast Moving Goods label
Inventory Item MaintenanceCoreThe item’s Process Template tab lists every template that uses it, with a Replace action
Chart of AccountFinancial AccountingThe WIP tab of the Closing Stock Balance, where a work-in-progress figure for the month goes (see What posts to the ledger)
Bundles and grouped itemsInventoryThe other way an item is made of other items, and the one most businesses meet first: a bundle has no stock of its own, and its availability is the smallest of (each child’s balance at this location ÷ how many the bundle needs). Read it before you reach for a process template — and it is the page that explains “there’s not enough stock for bundle item”, an error that names the parent and never the child that ran out

What moves stock, and at what value

Only one event in the module changes a stock balance: finalising a process instance. The Supervisor PI screen sets the instance to FINAL, which queues the finalisation job. That processor takes every process-instance line marked INPUT out of stock (quantity signum −1) and every line marked OUTPUT into stock (quantity signum +1) at that line’s branch and location, by the line’s actual quantity, as ordinary inventory transaction lines; it then sets the next instances in the job to READY once every instance in the current stage is FINAL, marks the instance POSTED, and releases the bin locks the input bins held.

Each of those transaction lines is written with an amount of zero, but the amount is never read: a process-instance line carries none of the document types whose amount enters the moving average, so every item is costed at its own unit cost at that location. The inputs leave at their running average; the finished item comes in at the unit cost it last carried there — zero only if it has never been costed at that location. Neither unit cost moves. What is lost is the transfer: the inputs’ cost leaves inventory and the finished item never receives it. So the cost of a manufactured item is whatever it carried before the job, and if you want it to carry the cost of what went into it, set it deliberately with Reset MA in the Stock Adjustment applet.

No other document in the module touches stock. The job order (INTERNAL_JOB_ORDER) and the packing order (INTERNAL_PACKING_ORDER) both carry quantity and amount signum 0. A work log records quantities but writes no transaction line; only the totals on the instance lines at finalisation count.

What one FINAL sets off, and what it does not

On a sales or purchase document, Finalise starts a chain: a primary job that fans out into stock, the journal and the other subsystems, after which the cost is written back onto the document’s own lines. A process instance’s FINAL is much smaller, and the difference explains most of what surprises people about this module:

  1. The status is saved first, and the work is queued after it. The screen returns as soon as the instance reads FINAL; the stock has not moved yet.
  2. One finalisation run writes the stock lines, then queues one stock-balance update per line — the same processor every stock document feeds. Stock Balance changes when those have run.
  3. The lines are dated when the run executes, not on the work-log dates and not on the job’s dates.
  4. Nothing else. No journal, no e-invoice, no cost written back: the stock lines point at the process instance, not at a document line.

The date is the one that catches accountants. Two shifts worked on the 30th and finalised on the 2nd are next month’s stock movement: a stock report as at the 30th does not show them, and this month’s close is taken without them. If the period’s production matters to the close, the supervisor finalises the period’s instances before the accountant runs the close — that is an agreement between two people, not a setting. Finalising in time is not quite enough: the dated stock reports and the close pick a finalisation up only from the item’s next ordinary line (Reports).

A job at GadgetSphere Distribution, in ringgit

GadgetSphere Distribution (GSD) assembles a house-brand braided charging cable in a workshop at its Klang Valley warehouse, GS-KV-01 — the job the use cases trace step by step. Here are the numbers a first run of 2,000 cables produces. The figures are illustrative; the mechanism is the one above.

Step finalisedWhat leaves stockWhat enters stock
Cut4,100 m of bulk cable at its running average of RM 0.60/m — RM 2,4602,050 cut lengths at RM 0, because they have never been costed at GS-KV-01
Coil2,050 cut lengths at RM 02,050 coils at RM 0
Pack-test2,000 coils at RM 0; 4,000 connectors at RM 0.20 (RM 800); 2,000 retail boxes at RM 0.02 (RM 40)2,000 finished cables at RM 0

After the last FINAL, Stock Balance at GS-KV-01 holds RM 3,300 less material and 2,000 finished cables valued at nothing, plus 50 spare coils at RM 0. If Sales invoices the 2,000 cables to the corporate customer at RM 4.50 each, the invoice’s cost of goods reads RM 0 and the sale shows a margin of RM 9,000 instead of RM 5,700.

The accountant’s job is to stop that before the invoice. Decide what a finished cable cost — RM 1.65 in materials (RM 3,300 ÷ 2,000), plus labour and overhead if your policy absorbs them — and set it with Reset MA. That resets the item’s moving average across the company and posts its own journal — here RM 3,300, the new total cost less the old one — to the stock account against the company’s RESET_MA account, so it is also the step that puts a value on the finished cables in the ledger. A second run of the same cable then comes in at RM 1.65, the cost it carries by then, whatever its materials cost that time — so revisit the figure when material prices move.

What posts to the ledger

Nothing. Journal posting has no rule for any manufacturing record or for the job order or packing order. There is no absorption of labour or machine time, no standard cost and no variance, and no manufacturing record writes to a work-in-progress or cost-of-goods-manufactured account. The module gives you the quantities, not the values. The only production-related journals in the ledger are the ones a person causes: the Reset MA that costs the finished item, and the month-end closing values below.

Where a work-in-progress figure goes instead

If your accounts carry work-in-progress, BigLedger has a place for the figure — in Financial Accounting, not here. The Chart of Account applet’s Closing Stock Balance has a WIP tab per fiscal year (shown only when SHOW_WIP_STOCK_VALUE is on), and Month End Processing posts the month’s selected WIP value as a closing-stock journal: debit the company’s STOCK_BALANCE_WIP account, credit COGS_WIP. Tick Select Manual and key the value: the close posts only a non-zero WIP value. Map both default GL codes on the company before the first close.

Nothing in the manufacturing module computes that value. The accountant works it out at each month end from the job orders still open, the steps already finalised and what their materials cost, then keys it. Read the journal the first close writes before you rely on it: the close posts the figure you key as it stands, so decide with your auditor whether you key the month’s balance or its movement.

Two further document types exist by name — INTERNAL_PRODUCTION_ORDER and INTERNAL_PLANNED_ORDER — but no applet or posting uses them. They are declared, not implemented; do not plan around them.

Where the production figures come from

FigureWhere you see itHow it is made, and when
The finished item’s unit costStock BalanceNot from the job. Whatever the item carried at that location before the FINAL — RM 0 for a first run — until someone sets it with Reset MA
Planned input and output quantitiesA process instance’s input and output linesStored at the time the instances are generated: each line’s Ratio × the job order’s quantity. Changing the job’s quantity afterwards queues a background re-scale; a template edited later does not reach instances already generated
What left and entered stockStock Balance, after the runThe actual quantities on the instance’s lines — the totals of the bins chosen and declared — not the planned quantities and not the work logs
The date of that movementStock Balance, once the run has finished; the dated reports only from the item’s next ordinary line, and the Stock Movement Report lists no finalisation line at all (why)The moment the finalisation run executes — not the work-log or job dates
Base Qty when choosing an input binManufacturing Operations › Select Bin No.Recomputed each time: the bin line’s quantity less reservations and every active bin lock, including locks this job already holds (physical but not available)
Worklog TotalAn output lineThe sum of Quantity Produced over the work logs not REJECTED or REWORK. It moves no stock
Outstanding and net outstandingThe Outstanding Report, and the Packing Order applet’s Auto Coil SupervisorTwo figures that disagree: the one Auto Coil Supervisor fetches for an output line is the ledger at that line’s location less open quantity on FINAL sales orders; the Outstanding Report’s Outstanding Qty adds every document line of the item (Reports)
Job order statusMaster ListTyped on the form; saving COMPLETED is not checked against the job’s process instances
Work-in-progress on the balance sheetLedger and Balance SheetThe value keyed on the Closing Stock Balance WIP tab, posted by Month End Processing

Statuses and approvals

A job order and each of its process instances carry a process status from one list: REQUESTED, REJECTED, PLANNED, READY, IN_PROGRESS, COMPLETED, ON_HOLD, CANCELLED, EXPORTED, FINAL, PENDING_APPROVAL. The server holds one rule between them — a job order is refused COMPLETED while any of its active process instances is not COMPLETED (“SORRY! NOT ALL PROCESSES ARE COMPLETE …”) — but the rule sits on a separate status route that no screen calls. The job order form in Production Planning and Monitoring saves through the ordinary update, which validates no transition, so a job order can be set to COMPLETED there with instances still open. The check is the planner’s: before completing a job order, open its Process Instance tab and confirm that every row with Active? ticked reads COMPLETED. The word is literal — a finalised instance reads FINAL, which is not COMPLETED, so the supervisor moves each finalised instance on to COMPLETED first.

Each work log carries its own approval status — PENDING, APPROVED, REJECTED or REWORK — set by the supervisor, and each change writes a historical copy of the log. This is the module’s only approval, and the finalisation run does not read it: an instance finalised over a PENDING log moves its lines anyway. The generic approval engine covers Purchase Order, Purchase Requisition and Stock Requisition only, and the packing order’s Workflow Settings screen is the ordinary Workflow Design custom-status mechanism, not an approval.

What the module has no engine for, and who does that job

Written down because most descriptions of an “MRP module” assume these, and because each one is still somebody’s job:

  • Material-requirements planning. “MRP” in BigLedger is the name of the backend package and of the job-order link on a sales-order line. Nothing explodes a bill of materials into purchase requisitions, nets demand against stock, or schedules by capacity. The planner does it: Stock Balance and the Outstanding Report’s Balance Qty against the open sales orders, weekly, and raises the purchases in Purchasing — by hand, or from each location’s minimum and maximum levels through the Stock Replenishment applet.
  • Multi-level bills of materials. A process template’s input items are one level; a job template chains templates. Whoever owns the recipe keeps each level as its own template and checks the chain on the item’s Process Template tab before a job is raised.
  • Costing the output. No step transfers the materials’ cost. The accountant decides the finished item’s cost after each first run, sets it with Reset MA, and confirms it in Stock Balance before the first sale.
  • Work-in-progress, absorption, standard cost and variance. The accountant computes them outside BigLedger from the work logs and the material costs, and keys the month’s WIP value where What posts to the ledger says.
  • Machine capacity, downtime and utilisation. A machine is a master record and a field on a work log. The production supervisor keeps capacity in the schedule they plan from; the work logs give which machine and how long, not what it could have done.
  • Approval of anything but a work log. Whoever holds SHOW_SUPERVISOR_VIEW is the control: keep it to the people who should press FINAL, and agree “no FINAL over a PENDING log” with them.

How the pieces depend on each other

  • Must exist first. Every input, output and finished item in Inventory Item Maintenance; a process template whose output is the finished item, or the job template stops with “No BOM options found for this item”; a job template, or the job order form has no group to offer; bins at the job’s location; the SHOW_SUPERVISOR_VIEW permission for whoever presses FINAL; for packing against a sales order, a Doc Flow row from the sales order to the packing order in Organisation. The Configuration page lists each with its symptom.
  • What a finalised instance makes possible. The finished item is in stock for Sales to deliver and invoice, and for the packing desk to pack; the next stage’s instances turn READY; and the work logs and actual quantities become the only record a manual cost or WIP calculation has to go on.
  • Siblings, and when to choose which. Stock Conversion rather than a job order for a one-step repack or kit with no machine and no operator — no cost passes there either; a job order when there is a route, a machine, a shift and a supervisor. A bundle instead of either when the item is never made, only sold as a set. A stock reservation to hold material, never the job-order temporary reservation, which earmarks part of the output and holds nothing.
  • What breaks elsewhere if this is wrong. A finished item sold before anyone costs it overstates the margin in Sales by the materials’ cost. A job finalised after the close shifts its stock movement into the next month in Financial Accounting. Another item’s group on a job order consumes the wrong materials from Inventory. A packing approval releases the whole sales order’s reservation, so lines still waiting to be packed lose their hold. A scrap lock left unwritten overstates stock until somebody adjusts it out.
  • Used together. Sales Order (Internal), Production Planning and Monitoring, Manufacturing Operations and Packing Order, in that order, on a make-to-order job — alongside Stock Adjustment’s Reset MA after each first run, a Stock Reservation on the day a job starts, and the Closing Stock Balance at month end.

When manufacturing goes wrong

What you seeWhyWhere it is fixed
A manufactured item shows a cost of RM 0, or its sales margin looks too goodFinalisation carries no cost to the output, and it had never been costed at that locationReset MA before the sale — best practice 1
A stock report as at month end leaves out production you know was doneEither the instances were finalised after month end (the stock lines are dated when the finalisation run executes), or they were finalised in time and the item had no ordinary line — a sale, a receipt, an adjustment — between the FINAL and month end: the dated reports and the close take the balance from the item’s last ordinary lineFinalise the period’s instances before Month End Processing; a late one stays in the month it was finalised. For the second cause, run the accountant’s check in Reports before the close
FINAL was pressed and Stock Balance has not movedThe run is queued after the status saves; it has not run yet, or it failed before marking the instance POSTEDReopen the instance: a live FINAL button means it is not yet POSTED — Manufacturing Operations, What FINAL does
A job order reads COMPLETED with instances still openThe Master List form saves the status without checking the instancesMove each active instance to COMPLETED first — best practice 4
Production Request is empty although orders are confirmedA line appears only when its MRP tab reads REQUESTED, and that tab shows only with the Sales Order’s Enable MRP job order link onPlanning applet, Troubleshooting
A drum on the shelf offers less than it holdsReservations and bin locks, including this job’s own, come off Base QtyGo by Base Qty; finish or release the job holding the lock
The reservation was gone when the job ranThe stock reservation the planning screen writes expires by the next dayRe-reserve on the day — best practice 7
Scrap keeps piling up in stockA scrap lock holds the quantity back from the pickers; it is not a write-offAn adjust-out at period end — best practice 10
The balance sheet shows no work-in-progress after the closeNo WIP value keyed, Select Manual not ticked, the value is zero, or the WIP default GL codes are not mappedThe Closing Stock Balance WIP tab in Chart of Account, then Month End Processing again

How you know a job ran

After each FINAL, about a minute:

  1. Reopen the instance on Supervisor PI. FINAL is greyed once the run has marked the instance POSTED. If it is still live, the run has not finished.
  2. Open Stock Balance at the job order’s location. Each input item has fallen, and each output item risen, by the instance’s actual quantities.
  3. Read the finished item’s moving-average cost. RM 0 or last run’s figure means nobody has costed this run yet.
  4. Before you complete the job order, open its Process Instance tab: every row with Active? ticked reads COMPLETED.

At each month end, before the close, the accountant adds two: no instance of the month is still waiting for FINAL, and the WIP value on the Closing Stock Balance is the one you worked out. The module’s three checks worth doing carry the weekly and period-end versions.

Two applets that cannot be installed

An internal kitting applet and a process-monitoring applet exist but cannot be installed from the Applet Store, and are not documented here. A second build of the planning applet also exists; which build your tenant is served is a question for your BigLedger contact — see the planning applet’s page.

Read next

  • Core concepts — template, job order, process instance, work log, packing order.
  • Configuration — what must exist before the first job order finalises cleanly.