# Production Order — ChangeLog

## 1.0.0 — 2026-04-16
- **COMPLETE**: all BOM generation logic tested end-to-end
- `qty_to_produce` written to `llx_prod_bom_mo_qty` as sum of all pack qtys (e.g. 61111×10 + 62133×10 = 20)
- Real pack qty per BOM line saved to `llx_prod_mo_material_overrides`
- SF BOM: `bom.qty = count(packs)`, pack `bomline.qty = 1` (ratio)
- FG BOM: SF parent `bomline.qty = 1 / count(selected FGs)`
- Multi-pack input: `62133×10, 61111×10` — autocomplete with qty notation
- Step 1 layout and CSS polish; filemtime cache-bust on assets

## 0.3.0 — 2026-04-15
- SF→FG multi-BOM wizard: FG children loaded from `form_tool` extrafield
- Golden rule job numbering: SF=N, FG1=N+1, FG2=N+2 (alphabetical by ref)
- FG children checkbox preview in Step 2
- Redirect to SF BOM card; flash message with links to all FG BOMs

## 0.2.0 — 2026-04-14
- `ProductionOrderService::createBom()` — BomLine direct insert, Draft status
- `findSfParent()` via `form_tool` extrafield join
- `createMO()` updated to set `fk_bom`
- Dual MO flow (SF+FG) in POST handler
- BOM label fix: `Field Label is required` resolved

## 0.1.0 — 2026-04-13
- Initial module scaffold
- Wizard Step 1/2, `BomResolver`, `createMO()` basic
- AJAX `get_product_preview.php` — routing + materials preview
- Autocomplete: product ref, pack ref (numeric refs only)
- Pack notation: `61111×10` parsed to product + qty
- `fk_service_product` mapping on `llx_workstation_workstation`
- Dependency: `routingmanager` module for routing data
