Backend: Verbrauchsgegenstand/Einzelstueck sind immer Gegenstaende
product_tracking leitet die Art bisher nur aus der Kategorie ab. Beim Umstellen Lebensmittel -> Verbrauchsgegenstand faellt die (Lebensmittel-)Kategorie weg, sodass der Artikel faelschlich "food" blieb und in der Lebensmittelliste hing. individual/bulk implizieren jetzt "object", unabhaengig von der Kategorie. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,14 @@ def product_tracking(db: Session, product: Product) -> str:
|
|||||||
Ohne Kategorie gilt "food" – so bleibt das Verhalten bestehender
|
Ohne Kategorie gilt "food" – so bleibt das Verhalten bestehender
|
||||||
(reiner Lebensmittel-)Installationen unverändert. Ein Artikel in einer
|
(reiner Lebensmittel-)Installationen unverändert. Ein Artikel in einer
|
||||||
Gegenstands-Kategorie wird als "object" geführt.
|
Gegenstands-Kategorie wird als "object" geführt.
|
||||||
|
|
||||||
|
Einzelstücke und Verbrauchsgegenstände sind immer Gegenstände: Diese Arten
|
||||||
|
gibt es nur bei Gegenständen, sie werden aber (anders als "Menge je Lagerort")
|
||||||
|
über ein Flag am Artikel geführt. So bleibt ein als Verbrauchsgegenstand
|
||||||
|
umgestellter Artikel auch ohne (Gegenstands-)Kategorie ein Gegenstand.
|
||||||
"""
|
"""
|
||||||
|
if product.individual or product.bulk:
|
||||||
|
return CategoryTracking.object.value
|
||||||
if product.category_id is None:
|
if product.category_id is None:
|
||||||
return CategoryTracking.food.value
|
return CategoryTracking.food.value
|
||||||
cat = product.category or db.get(Category, product.category_id)
|
cat = product.category or db.get(Category, product.category_id)
|
||||||
|
|||||||
@@ -75,6 +75,23 @@ def test_gegenstandskategorie_macht_object(db):
|
|||||||
assert product_tracking(db, product) == "object"
|
assert product_tracking(db, product) == "object"
|
||||||
|
|
||||||
|
|
||||||
|
def test_verbrauchsgegenstand_ohne_kategorie_ist_object(db):
|
||||||
|
# Nach dem Umstellen Lebensmittel -> Verbrauchsgegenstand hat der Artikel oft
|
||||||
|
# keine (Gegenstands-)Kategorie mehr. Das Flag muss ihn trotzdem als
|
||||||
|
# Gegenstand führen, sonst rutscht er zurück in die Lebensmittelliste.
|
||||||
|
product = Product(name="Sonnencreme", bulk=True)
|
||||||
|
db.add(product)
|
||||||
|
db.commit()
|
||||||
|
assert product_tracking(db, product) == "object"
|
||||||
|
|
||||||
|
|
||||||
|
def test_einzelstueck_ohne_kategorie_ist_object(db):
|
||||||
|
product = Product(name="Powerbank", individual=True)
|
||||||
|
db.add(product)
|
||||||
|
db.commit()
|
||||||
|
assert product_tracking(db, product) == "object"
|
||||||
|
|
||||||
|
|
||||||
def test_neue_oberkategorie_ist_gegenstand(db):
|
def test_neue_oberkategorie_ist_gegenstand(db):
|
||||||
out = create_category(CategoryCreate(name="Werkzeug"), db, None)
|
out = create_category(CategoryCreate(name="Werkzeug"), db, None)
|
||||||
assert out.tracking == CategoryTracking.object
|
assert out.tracking == CategoryTracking.object
|
||||||
|
|||||||
Reference in New Issue
Block a user