PalmStat ERP · Operations
Palm Stationery Manufacturers (Pty) Ltd · Cape Town
12 Industria Crescent, Epping 2, Cape Town, 7460
Tel +27 21 534 0000 · ops@palmstat.co.za

WIP Status Report · Standard Operating Procedure

Step 4 of 8 · live work-in-progress snapshot for stand-up & month-end valuation
APPROVED
SOP-WIP-004
v1.0 · Last reviewed 2026-05-08
← Previous: Job Card · Index · Next: Tally Sheet →
Lifecycle step
Step 4 of 8
Module owner
Production Management · Finance
Trigger event
Daily stand-up + month-end close
Approval matrix
Production Manager + Ops Director

1. Purpose

The WIP Status Report is the single-page snapshot of every batch currently between issued raw-material and posted finished-goods. It is generated on demand, read for the daily production stand-up, and locked into PDF at month-end as the formal WIP-valuation source for finance. The report combines four data slices: per-machine occupancy, in-flight batches, idle BOM templates, and a 4-stage flow strip showing units & rand value at RAW → WIP → FG → DISPATCH.

The PalmStat WIP Report mirrors the Sage X3 "WIP Valuation Report", the Syspro "WIP Report by Job", SAP CO-PC "Order WIP" and NetSuite Manufacturing "WIP by Work Order". A built-in variance flag highlights any IN_PROGRESS batch whose elapsed cycle time exceeds plan by more than 20% — the same threshold used in the Sage X3 efficiency dashboard.

Unlike the other 6 SOPs in this binder, the WIP Report is not signed by the floor team — it is a management read-out. The Production Manager and Operations Director sign the printed copy when it is filed at month-end as the WIP valuation tie-out for the GL.

2. When to use

3. Data sources

The WipReport spec (frontend/js/erp-templates/wip-report.js) aggregates four live slices into one document. Every row below is wired to a real query.

Field on documentAPI endpointDB table.columnExample value
Report Ref No.generated client-side · buildRefNo()(stamped on print)WR-20260508-1442
Report date / periodlocal time(stamped on print)2026-05-08 (Day of)
Prepared bylocalStorage userusers.full_name / emailBrent Reddy
WIP units (total)sum across batchesSUM production_batches.planned_qty WHERE status IN (PLANNED, IN_PROGRESS)62 480
WIP value (R)sum × unit costSUM(planned_qty × items.std_cost)R 1 248 700.00
Batches in flightGET /api/production-batches?status=IN_PROGRESS + PLANNEDCOUNT(production_batches)14
Machines occupied / totalGET /api/machinesdistinct production_batches.machine_id / machines.id11 / 18
Avg cycle timecompleted batches sampleavg(completed_atstarted_at)6.8 h
Idle BOMsGET /api/bom?is_active=1bom_headers minus active fg_product_id22
Per-machine WIP · machine code, dept, current batchGET /api/machinesmachines.code, departments.code, production_batches.batch_refRUL_4 / RULING / BATCH-2026-0481
Per-machine WIP · statusderivedRUNNING / QUEUED / IDLE / BREAKDOWN (from machines.status + batch state)RUNNING
Per-machine WIP · hrs runningcomputed(now − started_at) / 36003.6 h
In-flight batch · ref, FG, planned, complete %GET /api/production-batchesproduction_batches.batch_ref, fg_product_idproducts.code, actual_qty/planned_qtyBATCH-0481 · A4_72PG_FM · 5 000 · 62%
In-flight batch · operatorvia labourlabour_assignments.employee_clock_noP. Mokoena (1042)
In-flight batch · variance flagderivedelapsed > planned_cycle_hours × 1.2OVER (+38%)
Idle BOM · ref / FG / last activityGET /api/bombom_headers.id, products.code, bom_headers.updated_atBOM-A5_48PG_FM · 2026-04-30
Idle BOM · RM stock statuscross-ref to inventoryv_inventory_summary.stock_statusOK / SHORT
4-stage flow · RAW units / valuev_inventory_summary WHERE type=RMSUM inventory.qty_on_hand × items.std_cost180 000 KG · R 3.32m
4-stage flow · WIP units / valuederived (above)same query, batches in flight62 480 · R 1.25m
4-stage flow · FG units / valuev_warehouse_value WHERE type=FGSUM(qty × std_cost)148 200 · R 4.41m
4-stage flow · DISPATCH unitsGET /api/sales-orderssales_order_lines.qty_produced − on-hand72 100 · R 2.06m

4. Step-by-step workflow

  1. Open WIP Tracking page — navigate to /wip-tracking. View hydrates from API.productionBatches.list(), API.machines.list(), API.bom.list() in parallel.
  2. Auto-refresh subscription — the page subscribes to the production realtime channel (via RT.subscribe) and re-fetches whenever a batch is started, completed or cancelled.
  3. Visual triage — the per-machine table colour-codes RUNNING (green), QUEUED (blue), IDLE (grey) and BREAKDOWN (red). Variance banner is red if any batch exceeds 20% over plan.
  4. Click "Print WIP Report" — the frontend calls WipReport.build(batches, machines, boms, flowSnapshot).print(). ErpDoc.render bakes the spec into a self-contained HTML, browser opens print preview.
  5. Live consumption — the Production Manager runs the daily stand-up off the printed copy. Action items get logged in the meeting minutes · ones that need ERP follow-up are turned into notifications rows.
  6. Variance investigation — for any batch flagged OVER, the manager drills into the production_batches detail page (status banner, BOM consumption, machine breakdown links).
  7. Capacity check — the idle-BOM table is reviewed to see if any FG can be added to the next shift's plan. Planner schedules an MR & Job Card if so.
  8. Email distribution — manager clicks "Email report"; the system calls WipReport.build(…).toEmailHtml() and sends to the production distribution list. Sender mailbox is captured in audit_log.
  9. Month-end print & sign — on the last working day of the month, the report is printed at 17:00, signed by the Production Manager and Operations Director, scanned and uploaded as the WIP valuation tie-out (documents.kind=OTHER, retained 7 years).

5. Roles & permissions

ActionAdminProduction MgrPlannerSupervisorFinance
Generate this doc
Approve / sign off (month-end)
Email externally
Reprint historical
Edit the underlying batches
Delete archived report✓ (with audit reason)

Reading WIP requires the JWT to carry any role bound to verifyToken on /api/production-batches; printing is purely client-side after data is fetched.

6. Common scenarios

Scenario A · All green stand-up

Happy path: 14 batches in flight, no variance flags, 11 of 18 machines occupied. Manager prints, signs, distributes. 5-minute stand-up.

Scenario B · Cycle-time variance flagged

Happy path: Variance banner fires for BATCH-2026-0473 at +38% over plan. Manager drills in, sees a machine_breakdowns row at H+2. Notes the breakdown, confirms remedy, signs report. Lessons-learned posted to maintenance.

Sad path: Variance banner ignored for 3 consecutive days. Customer SO slips. Recovery: implement a daily SLA on variance closure and flag escalation in the notifications queue.

Scenario C · Month-end valuation tie-out

Happy path: 17:00 on month-end, WIP value reads R 1.25m. Manager prints, signs, finance signs. Number is reconciled to GL account "Inventory · WIP" with no variance. Report is scanned, uploaded, retained.

Sad path: Manual GL adjustment of R 80k was made without a corresponding ERP transaction. Report shows R 1.25m, GL shows R 1.33m. Recovery: identify the orphan adjustment, reverse + re-post it through proper ERP transactions before month-end signs off.

Scenario D · Insurance / fire claim

Happy path: A fire damages a portion of WIP stock. The most-recent printed WIP Report is provided to the insurer as the inventory-at-risk record at the moment of loss. Each in-flight batch is itemised with rand value.

7. Related documents

Upstream  ·  STEP 1: GRN (RAW totals)
Upstream  ·  STEP 3: Job Card (in-flight batches)
   →  STEP 4: WIP Status Report · this document
Cross-ref  ·  v_inventory_summary view (drives RAW + FG totals)
Cross-ref  ·  machine_breakdowns for BREAKDOWN flags
Cross-ref  ·  v_warehouse_value for FG totals
Downstream  ·  STEP 5: Tally Sheet (drills into specific batch)
Downstream  ·  STEP 6: FGRN (closes in-flight batches one by one)

8. Approval signatures

Document Owner
Production Manager — ____________
Signed: ____ / ____ / ______
Quality Lead
Finance Controller — ____________
Signed: ____ / ____ / ______
Operations Director
Ops Director — ____________
Signed: ____ / ____ / ______

9. SLA & escalation

Cadence Trigger Owner Distribution
07:00 daily Morning stand-up Production Manager Floor supervisors + planners
14:00 daily Cross-shift handover Day Supervisor Night Supervisor
17:00 last working day of month Month-end close Production Manager + Finance GL tie-out file (signed PDF)
On variance flag fire Any batch > +20% cycle time Supervisor Production Manager · raise investigation
On insurance event Fire / flood / theft Operations Director Insurer + finance

10. Glossary