Every delivery and batch now writes a signed movement entry instead of
directly incrementing/decrementing spice.quantity. The balance is always
the sum of all movements. Existing data is backfilled in the migration.
Rohstoff edit page shows the full movement history (Lagerbewegungen tab).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add size_id, units_produced, quantity_g to batches table
- quantity_g auto-calculated from units × packing size on save
- Batch model deducts spice quantities on create, reverses on delete,
recalculates on update when relevant fields change
- Batch form shows live total weight preview
- Chargen table shows units + grams produced
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>