Lagerorte: Baum-Picker beim Anlegen; Unter-Ort-Bestand zählt zum Bedarf
- Web: der übergeordnete Lagerort wird beim Anlegen jetzt über den aufklappbaren Baum (CategorySelect) gewählt statt über das flache Dropdown. - Backend: Mindestbestand je Lagerort wird jetzt gegen den Bestand INKL. aller Unter-Lagerorte geprueft. Ein Bedarf auf „Hedingen" gilt also als gedeckt, wenn der Vorrat in „Hedingen -> Keller" liegt. Helfer location_subtree_stock_base; 2 neue Tests, Suite 157 gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -139,14 +139,12 @@ export default function Locations() {
|
||||
</label>
|
||||
<label className="grow">
|
||||
Übergeordneter Lagerort (optional)
|
||||
<select value={parentId} onChange={(e) => setParentId(e.target.value)}>
|
||||
<option value="">– keiner (oberste Ebene) –</option>
|
||||
{locations.map((l) => (
|
||||
<option key={l.id} value={l.id}>
|
||||
{l.parent_id && nameById[l.parent_id] ? `${nameById[l.parent_id]} → ` : ""}{l.name}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<CategorySelect
|
||||
value={parentId === "" ? null : Number(parentId)}
|
||||
nodes={ordered}
|
||||
rootLabel="– keiner (oberste Ebene) –"
|
||||
onChange={(id) => setParentId(id == null ? "" : String(id))}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
<button className="btn primary"><Icon name="plus" size={16} />Hinzufügen</button>
|
||||
|
||||
Reference in New Issue
Block a user