woodshop/tests
rob 2b76317a3f Phase 6: inventory workflows (purchase / record build / use offcuts)
Wires the ledger into the BOM window via three workflows (Codex's
workflow-first UX), plus an offcut-consuming planner.

- StockPiece gains owned/source; build_cut_plan(available=) seeds the packer
  from owned offcuts (reusing the seeded-packing) so they're consumed before
  buying. Score reports stock_count = pieces to BUY (offcuts free) + owned_count;
  prices.estimate and the Buy list exclude owned pieces.
- BOM header: "Build units", an opt-in "Use shop offcuts" toggle, and
  "Mark purchased…" / "Record build…" buttons.
- PurchaseDialog: confirm qty + price each, opt-in "save prices to price book".
- RecordBuildDialog: shows consumed stock + each offcut with Keep/Burn/Trash/
  Ignore before committing (the moment to correct reality).
- Ledger.record_build takes per-offcut dispositions; used offcuts are consumed
  from the bin; build cost snapshot logged.
- tests: offcut toggle drops buy-count to 0, record-build writes the ledger.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 19:23:24 -03:00
..
test_bom_window.py Phase 6: inventory workflows (purchase / record build / use offcuts) 2026-05-30 19:23:24 -03:00
test_cutlist.py Add plywood (sheet stock) 2026-05-30 12:33:49 -03:00
test_cutplan.py Phase 4: batch builds (quantity N) 2026-05-30 19:14:23 -03:00
test_driver.py Carry conversation history so "yes" / "do that" resolve 2026-05-30 15:42:33 -03:00
test_estimate.py Phase 2: finish costs by kind in the estimate 2026-05-30 19:04:44 -03:00
test_geometry.py Add auto-assembly (Make connection) + feature rotation 2026-05-29 17:15:51 -03:00
test_gui_controller.py Carry conversation history so "yes" / "do that" resolve 2026-05-30 15:42:33 -03:00
test_instructions.py Phase 2: structured build instructions (deterministic + optional AI polish) 2026-05-30 14:36:50 -03:00
test_inventory.py Phase 6: inventory workflows (purchase / record build / use offcuts) 2026-05-30 19:23:24 -03:00
test_jigs.py Address shop-packet review (consistency, determinism, validation, jigs) 2026-05-30 15:11:02 -03:00
test_layout.py BOM window: tabs + cut-layout nesting + print (phase 1 of shop output) 2026-05-30 13:07:49 -03:00
test_materials.py Phase 1: material + finish fields + color resolver 2026-05-30 19:01:28 -03:00
test_prices.py Add cost estimate (Cost tab) with editable Kent NB price book 2026-05-30 16:23:59 -03:00
test_scene.py Phase 1: material + finish fields + color resolver 2026-05-30 19:01:28 -03:00