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

Material Requisition · Standard Operating Procedure

Step 2 of 8 · pick-list issued against a planned production batch
APPROVED
SOP-MR-002
v1.0 · Last reviewed 2026-05-08
← Previous: GRN · Index · Next: Job Card →
Lifecycle step
Step 2 of 8
Module owner
Production Planning · Storeroom
Trigger event
Production batch validated → PLANNED
Approval matrix
Picker + Storeman + Supervisor

1. Purpose

The Material Requisition (MR) is the pick-list that the storeroom team uses to issue the exact raw-material quantities required for a planned production batch. Once the planner has raised a batch and validated it against live stock, the system snapshots every BOM line into production_batch_lines with a required quantity = qty_per_unit × planned_qty × (1 + scrap_pct/100). The MR is printed for the floor · picker walks it row-by-row, the storeman countersigns each pick, and the supervisor authorises the issue.

This document mirrors the Sage X3 "Material Issue Voucher", Syspro "Job Issue", SAP MIGO 261 goods-issue against a production order, and NetSuite "Inventory Issue" against a Work Order. Without an MR, no ISSUE inventory transactions can be posted against the batch — the floor cannot legally remove stock from the storeroom.

The MR is the bridge between the planning office and the production floor. Its line totals reconcile (a) what the BOM demands, (b) what the storeroom hands over, and (c) what the Job Card consumes during the run.

2. When to use

3. Data sources

The MaterialReq spec (frontend/js/erp-templates/material-requisition.js) is built from the BOM register and the snapshot taken at batch validation. Each row below maps to a real column.

Field on documentAPI endpointDB table.columnExample value
MR Ref No.generated client-side · placeholderRef()(stamped on print)MR-2026-05080842
Batch refPOST /api/production-batchesproduction_batches.batch_refBATCH-2026-0481
BOM ref / versionGET /api/bom/:idbom_headers.versionv3
FG product codeGET /api/productsproducts.codeA4_72PG_FM
FG product nameGET /api/productsproducts.nameA4 72-page Feint Margin Exercise Book
Planned qty (units)POST /api/production-batchesproduction_batches.planned_qty5 000
RM codeGET /api/items/:iditems.code (FK bom_lines.rm_item_id)MONDI 900
RM descriptionGET /api/itemsitems.descriptionMondi 900mm reel 80gsm offset
Qty / unitGET /api/bom/:idbom_lines.qty_per_unit0.0420
Scrap %GET /api/bom/:idbom_lines.scrap_pct3.50
Required qtycomputedproduction_batch_lines.required_qty217.350
Available qty (validation)POST /api/production-batches/:id/validateproduction_batch_lines.available_qty240.000
Shortfall qtyderivedproduction_batch_lines.shortfall_qty0.000 (OK)
UoMmaster dataitems.uom / bom_lines.uomKG
From warehouseGET /api/warehouseswarehouses.codeRM-MAIN / PSTAT
From binGET /api/inventory/lotswarehouse_locations.bin_codeRM-A12-03
Picked qty (manual)captured on paperposted as inventory_transactions.qty when batch starts217.450
Picker initialscaptured on papernot stored separately · cross-ref to employees.clock_noP.M. (clock 1042)
Requested byreq.userusers.email (FK created_by)planner@palmstat.co.za
Target shiftPOST /api/production-batchesproduction_batches.shiftDAY / NIGHT

4. Step-by-step workflow

  1. Planner raises batchPOST /api/production-batches with fg_product_id, planned_qty and machine_id. Status starts as DRAFT. The system auto-resolves the active BOM via bom_headers.is_active = 1.
  2. Validate against stock — planner clicks "Validate". The endpoint POST /api/production-batches/:id/validate snapshots every BOM line into production_batch_lines and computes required_qty = qty_per_unit × planned_qty × (1 + scrap_pct/100). Status flips to PLANNED if all lines OK, or BLOCKED with blocked_reason populated when shortages exist.
  3. Generate MR PDF — from the batch detail view, planner clicks Print Material Requisition. The frontend calls MaterialReq.build(bom, planned_qty, batch).print(). The 9-column printable lists every BOM line with picked-qty + initials columns left blank for ink-on-paper sign-off.
  4. Picker walks the floor — storeroom picker takes the printed MR aisle by aisle, weighs / counts each RM, writes the actual picked qty and initials in the right-hand columns. Standard tolerance is ±0.5% of required.
  5. Storeman countersign — storeman re-checks the picked totals before authorising the physical transfer to the line side. Variance > 1% requires a supervisor exception note.
  6. Supervisor authorises — production supervisor signs the bottom of the MR, confirming the kit is ready for the floor. This unlocks the next step.
  7. Floor team starts batchPOST /api/production-batches/:id/start. The endpoint loops over production_batch_lines and posts an ISSUE inventory transaction per line (txn_type=ISSUE, from_warehouse_id = the picked-from WH, reference_type='production_batch', reference_id=batch.id). Stock leaves v_inventory_summary; batch status flips to IN_PROGRESS.
  8. Realtime broadcast — the production realtime channel signals: WIP Tracking page updates, dashboard tiles count up, and any open Tally Sheet view refreshes its eligible-batch grid.
  9. Document filing — signed paper MR is scanned and uploaded via POST /api/documents with kind=OTHER; document_links ties it to entity_type='production_batch', entity_id=batch.id.

5. Roles & permissions

ActionAdminPlannerStoreman / WarehouseSupervisorOperator
Generate this doc
Validate batch (snapshot lines)
Pick & sign
Authorise & release
Reprint after batch start
Cancel batch (voids MR)

Permission gate enforced by requireRole('admin','planner','supervisor') on POST /api/production-batches. The validate endpoint accepts the same set; cancellation is admin-only.

6. Common scenarios

Scenario A · All RM in stock, straight pick

Happy path: Validate produces all lines at OK status, MR prints cleanly, picker walks the floor, picks within tolerance, supervisor signs. Batch starts, ISSUE transactions post, IN_PROGRESS within 10 minutes of validation.

Scenario B · Shortage on one line

Happy path: Validate detects 50 KG short on adhesive. Status → BLOCKED with blocked_reason populated. Planner raises a top-up purchase or splits the batch. MR is regenerated only after a fresh GRN posts the missing stock.

Sad path: Planner ignores the BLOCKED status and forces the batch to start. The system rejects with a 422 because production_batch_lines still shows status='SHORT'. Recovery is to either resolve the shortage or re-validate after stock arrives.

Scenario C · Substitute item approved

Happy path: Planner has approved TNPL 1200 in lieu of MONDI 1200 for this run. The MR carries a hand-written note "Substitute approved · TNPL 1200" plus the planner's initials. The Job Card mirror is annotated. Inventory issue posts against the substitute item code.

Scenario D · Picker over-picks

Happy path: Picker over-picks 2.0 KG of paper because of an off-set on the scale. Storeman catches it, scribbles the corrected qty, both initial. Variance is recorded on the FGRN at close-out so unit-cost stays accurate.

Sad path: Over-pick goes unnoticed. Material consumed on the run; FGRN shows a higher RM cost variance. Recovery: post a balancing ADJUST transaction once cycle-count flags the discrepancy.

7. Related documents

Upstream  ·  STEP 1: GRN (built the on-hand RM stock)
Upstream  ·  BOM register (bom_headers, bom_lines)
Upstream  ·  Production batch header (production_batches, status → PLANNED)
   →  STEP 2: Material Requisition · this document
Downstream  ·  STEP 3: Job Card (consumes the same BOM snapshot)
Downstream  ·  inventory_transactions rows of type ISSUE
Downstream  ·  STEP 6: FGRN (reconciles BOM consumption variance)

8. Approval signatures

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

9. SLA & escalation

Stage Target time Owner Escalation if breached
Validate → Print 15 min Planner Production Manager (24h SLA)
Pick & weigh complete 30 min from print Storeroom Warehouse Manager
Supervisor authorise 10 min after pick Supervisor Production Manager
Batch start (auto-issue) 5 min after authorise Supervisor Operations Director
Variance investigation (> 1%) End of shift Supervisor + Planner Quality Manager

10. Glossary