The Scenario: “Mama T’s Kitchen”
To demonstrate exactly how StoreHarmony’s Production Module handles the messy reality of a factory floor โ including partial material issuance, supplementary pulls, scrap, and returns โ let’s walk through an actual manufacturing run for a catering business.
Mama T’s Kitchen needs to produce a batch of Large Chicken Pies for a Saturday catering order. Their expected Target Yield is 200 Pies. Here is the theoretical Bill of Materials (BOM):
| Raw Material | Per Unit | Required Total | Unit Cost | Total Expected Cost |
|---|---|---|---|---|
| Flour (kg) | 0.50 | 100 kg | โฆ850 | โฆ85,000 |
| Chicken (kg) | 0.20 | 40 kg | โฆ4,240 | โฆ169,600 |
| Seasoning (kg) | 0.05 | 10 kg | โฆ2,500 | โฆ25,000 |
| Cooking Oil (L) | 0.10 | 20 L | โฆ1,200 | โฆ24,000 |
| Expected Totals | โ | โ | โ | โฆ303,600 |
The problem: The chicken supplier is late. Flour, seasoning, and oil are in stock, but the 40 kg of chicken won’t arrive until tomorrow morning. Mama T can’t wait โ she needs to start prepping the dough today.
This is where partial material issuance comes in. StoreHarmony lets her issue what’s available now and issue the chicken tomorrow.
Step-by-Step Software Execution
Step 1: Creation โ the Draft Stage
The manager opens StoreHarmony, navigates to Production โ Create production order, selects “Large Chicken Pie”, sets the Target Qty to 200, selects the production location, and clicks Submit.
The system resolves the product’s formula (stored in the product’s composition data) and shows the material requirements table:
| Material | Per Unit | Total Needed | In Stock | Status |
|---|---|---|---|---|
| Flour | 0.50 kg | 100 kg | 150 kg | โ Sufficient |
| Chicken | 0.20 kg | 40 kg | 0 kg | โ Shortage |
| Seasoning | 0.05 kg | 10 kg | 12 kg | โ Sufficient |
| Cooking Oil | 0.10 L | 20 L | 25 L | โ Sufficient |
- Order Status:
DRAFT - All Lines:
PENDING - Ledger Impact: None.
info No Inventory Impact Yet
A draft order is just a plan. No stock has been touched and no costs have been committed. You can edit, add lines, adjust quantities, or cancel freely at this stage.
Step 2: First Issuance โ Partial (Day 1, Thursday)
The chicken hasn’t arrived, but Mama T needs to start the dough. The manager opens the draft order and goes to Issue Materials.
The Issue Materials Panel shows all four lines with a “Remaining to issue” column and an editable “Issue now” column:
| Material | Required | Issued So Far | Remaining | Issue Now | Available |
|---|---|---|---|---|---|
| Flour | 100 kg | 0 | 100 kg | [100] | 150 kg |
| Chicken | 40 kg | 0 | 40 kg | [0] | 0 kg |
| Seasoning | 10 kg | 0 | 10 kg | [10] | 12 kg |
| Cooking Oil | 20 L | 0 | 20 L | [20] | 25 L |
The manager sets Chicken to 0 (skip โ not available yet) and leaves the others at their full required amounts. Clicks “Issue Materials”.
- Order Status:
DRAFTโISSUED(first issuance transitions automatically) - Ledger Impact: โฆ134,000 of raw materials deducted from inventory.
| Material | Line Status | Issued Qty | Cost |
|---|---|---|---|
| Flour | FULLY_ISSUED |
100 kg | โฆ85,000 |
| Chicken | PENDING |
0 kg | โฆ0 |
| Seasoning | FULLY_ISSUED |
10 kg | โฆ25,000 |
| Cooking Oil | FULLY_ISSUED |
20 L | โฆ24,000 |
| Totals | โฆ134,000 |
info Deduction Strategy
Each raw material is deducted using its own declared strategy. Flour uses FIFO (oldest batch first). If chicken were a FEFO product, it would use expiry-first ordering. The manager doesn’t choose โ the product declares its own rule.
Step 3: Second Issuance โ Chicken Arrives (Day 2, Friday)
The chicken delivery arrives Friday morning. The supplier invoice is processed through the normal receiving flow (50 kg received at โฆ4,240/kg). The production order is still in ISSUED status โ and it can still accept more materials.
The manager opens the production order and clicks “Issue Materials” again. This time the panel shows:
| Material | Required | Issued So Far | Remaining | Issue Now | Available |
|---|---|---|---|---|---|
| Flour | 100 kg | 100 | 0 kg | โ | (fully issued) |
| Chicken | 40 kg | 0 | 40 kg | [40] | 50 kg |
| Seasoning | 10 kg | 10 | 0 kg | โ | (fully issued) |
| Cooking Oil | 20 L | 20 | 0 L | โ | (fully issued) |
Only the Chicken line is actionable. The manager issues 40 kg. Clicks “Issue Materials”.
- Order Status:
ISSUED(unchanged โ already issued) - Ledger Impact: Additional โฆ169,600 deducted from inventory.
| Material | Line Status | Issued Qty | Weighted Avg Cost |
|---|---|---|---|
| Flour | FULLY_ISSUED |
100 kg | โฆ850/kg |
| Chicken | FULLY_ISSUED |
40 kg | โฆ4,240/kg |
| Seasoning | FULLY_ISSUED |
10 kg | โฆ2,500/kg |
| Cooking Oil | FULLY_ISSUED |
20 L | โฆ1,200/L |
All lines are now FULLY_ISSUED. Total issued value: โฆ303,600.
info Additive Issuance
Each issuance adds to the line’s issued quantity โ it doesn’t replace it. If chicken had been partially available (say 20 kg on Day 1, 20 kg on Day 2), the line would have been PARTIALLY_ISSUED after Day 1 and FULLY_ISSUED after Day 2. The unit cost is recalculated as a weighted average across all issuance events.
Step 4: Start Production
All materials are on the factory floor. The manager clicks Start Production.
- Order Status:
ISSUEDโIN_PROGRESS - Ledger Impact: None. This is a status gate โ it signals that production has begun.
warn Supplementary Issuance Still Allowed
Even after production starts, the manager can issue additional materials if needed. If the dough is too dry and needs 5 kg more flour, they can increase the flour requirement and issue more โ all while the order is IN_PROGRESS.
Step 5: Work In Progress โ the Reality of the Kitchen
Production runs for 8 hours on Friday and Saturday morning. Two significant events occur that must be recorded:
Event A: The Dough Disaster (Supplementary Issuance)
The first batch of dough is too dry. The baker needs 5 kg more flour. The manager:
- Opens the production order (status:
IN_PROGRESS) - Increases flour’s
Required Totalfrom 100 to 105 - Clicks “Issue Materials”
- Issues 5 kg flour (the new remaining amount)
| Material | Required | Issued | Remaining | Issue Now |
|---|---|---|---|---|
| Flour | 105 kg | 100 | 5 kg | [5] |
- Flour Line Status:
FULLY_ISSUED(105 kg total issued) - Flour Cost: Weighted average of Day 1 batches + Day 3 batch
- Order Status:
IN_PROGRESS(unchanged)
Event B: Burnt Trays (Scrap)
A tray of 8 pies burns in the oven. The raw materials in those 8 pies are lost. The manager clicks Record Scrap and enters scrap by material:
| Material | Scrap Qty | Scrap Value |
|---|---|---|
| Flour | 4.0 kg (8 ร 0.5) | โฆ3,400 |
| Chicken | 1.6 kg (8 ร 0.2) | โฆ6,784 |
| Seasoning | 0.4 kg (8 ร 0.05) | โฆ1,000 |
| Cooking Oil | 0.8 L (8 ร 0.1) | โฆ960 |
| Total Scrap | โฆ12,144 |
Event C: Unused Seasoning (Return)
The seasoning was more potent than expected. Only 9 kg was used โ 1 kg remains unopened. The manager clicks Record Return โ Selects Seasoning (Qty: 1).
- Ledger Impact: 1 kg seasoning (โฆ2,500) returns to store inventory. A new batch is created and a flow IN entry is recorded.
The WIP Table at End of Production
| Material | Issued | Scrap | Returned | Consumed |
|---|---|---|---|---|
| Flour | 105 kg | 4.0 kg | 0 | 101 kg |
| Chicken | 40 kg | 1.6 kg | 0 | 38.4 kg |
| Seasoning | 10 kg | 0.4 kg | 1 kg | 8.6 kg |
| Cooking Oil | 20 L | 0.8 L | 0 | 19.2 L |
warn Safety Verification
StoreHarmony prevents users from logging Consumed + Scrap + Returned quantities that exceed the Issued limit. You can never over-consume. The invariant issuedQty = consumedQty + scrapQty + returnedQty is enforced at completion time.
Step 6: Completion โ Final Yield and True Costing
The kitchen produced 192 pies (target was 200, but 8 burnt). The manager clicks Complete Production and enters the Actual Final Yield: 192.
Before transitioning to COMPLETED, StoreHarmony processes the financial reality:
Total Issued Value = โฆ303,600 + โฆ4,250 (supplementary flour)
= โฆ307,850
Less: Returned Materials = โฆ2,500 (1 kg seasoning)
Less: Scrap Value = โฆ12,144
Effective Material Cost = โฆ307,850 โ โฆ2,500 โ โฆ12,144
= โฆ293,206
Unit Production Cost = โฆ293,206 รท 192 pies
= โฆ1,527 per pie
| Metric | Value |
|---|---|
| Theoretical unit cost (200 pies, no waste) | โฆ1,518 |
| Scrap write-off | โฆ12,144 |
| Returned to inventory | โฆ2,500 |
| True final unit cost | โฆ1,527 / pie |
- Order Status:
IN_PROGRESSโCOMPLETED
Step 7: Post to Inventory
The manager clicks Post to Inventory. StoreHarmony:
- Creates a new inventory batch for “Large Chicken Pie”:
- Batch ref:
PROD:PO-2026-0042 - Quantity: 192 pies
- Unit cost: โฆ1,527 (the true production cost)
- Expiry date: based on the pie’s shelf life configuration
- Batch ref:
- Increases the finished product’s aggregate stock by 192
- Creates an IN flow entry (type: production receipt)
- Creates an audit document linking the production order
- Order Status:
COMPLETEDโPOSTED
tip Inventory Updated
192 pies of Large Chicken Pie are now in inventory at a true cost of โฆ1,527 each. When sold at โฆ2,500 retail, the profit margin is โฆ973 per pie (38.9%). This margin is accurate because it reflects actual material costs, scrap, and returns โ not theoretical estimates.
The Partial Issuance Timeline
Here’s a summary of all inventory movements across the three-day production run:
| Day | Event | Materials | Qty | Direction | Order Status |
|---|---|---|---|---|---|
| Thursday | First issuance | Flour, seasoning, oil | 130 kg/L | OUT | DRAFT โ ISSUED |
| Friday AM | Chicken arrives (supply receipt) | Chicken | 50 kg | IN (receiving) | โ |
| Friday AM | Second issuance | Chicken | 40 kg | OUT | ISSUED |
| Friday AM | Start production | โ | โ | โ | ISSUED โ IN_PROGRESS |
| Friday PM | Supplementary flour | Flour | 5 kg | OUT | IN_PROGRESS |
| Saturday | Record scrap | Mixed | 6.8 kg/L | (write-off) | IN_PROGRESS |
| Saturday | Return seasoning | Seasoning | 1 kg | IN (return) | IN_PROGRESS |
| Saturday | Complete production | โ | โ | โ | IN_PROGRESS โ COMPLETED |
| Saturday | Post to inventory | Chicken pies | 192 pies | IN (production) | COMPLETED โ POSTED |
Why Partial Issuance Matters
In the old design, all materials had to be issued at once from the DRAFT state. That meant Mama T would have had to wait until Friday for the chicken before issuing anything โ losing an entire day of prep time.
With partial issuance:
- Issue what’s available now. Flour, seasoning, and oil on Thursday. Chicken on Friday. No waiting.
- Issue more during production. The extra 5 kg flour was pulled mid-production without stopping the order or creating a new one.
- Each line tracks independently. Flour was
FULLY_ISSUEDon Thursday. Chicken wasPENDINGon Thursday,FULLY_ISSUEDon Friday. The order status (ISSUED) tells you “at least one material has been pulled” โ the line statuses tell you exactly which ones. - Costs stay accurate. Each issuance records the actual batch cost at the time of deduction. The weighted average across multiple issuance events gives the true material cost for the production run.
Line Status Reference
| Status | Meaning | When it changes |
|---|---|---|
PENDING |
Material required but nothing issued yet | Set at order creation |
PARTIALLY_ISSUED |
Some quantity issued, more still needed | After partial issuance |
FULLY_ISSUED |
All required material pulled from inventory | When issued qty โฅ required qty |
CONSUMED |
Material used up during production | After recording consumption |
RETURNED |
Unused material sent back to inventory | After recording return |
SCRAPPED |
Material wasted/damaged during production | After recording scrap |
Order Status Reference
| Status | What can happen | Material issuance allowed? |
|---|---|---|
DRAFT |
Edit lines, issue materials, cancel | โ Yes |
ISSUED |
Issue more materials, start production, cancel | โ Yes |
IN_PROGRESS |
Issue supplementary materials, record consumption/scrap/return, complete | โ Yes |
COMPLETED |
Post finished goods to inventory, cancel (reversal) | โ No |
POSTED |
Read-only โ production is done | โ No |
CANCELLED |
Read-only โ may require reversal of issued materials | โ No |