Backend: Verbrauchsgegenstand (Product.bulk) - Gegenstand wie ein Lebensmittel
Neues Flag bulk auf Product: Gegenstand als Charge mit Menge/Einheit/MHD/ Mindestbestand fuehren (z.B. Sonnencreme in ml), ohne eindeutigen Code. Migration (ADD COLUMN), Schemas und Anlege-Pfad ergaenzt. Kernlogik nutzt foodLike = kein Gegenstand ODER bulk; Bestand/Einkaufsliste unveraendert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import pytest
|
||||
|
||||
from app.crud import product_tracking
|
||||
from app.models import (
|
||||
BaseUnit,
|
||||
Category,
|
||||
CategoryTracking,
|
||||
FieldDefinition,
|
||||
@@ -275,3 +276,41 @@ def test_mengen_produkt_zaehlt_weiter_lots(db):
|
||||
object_add(db, product, 5, a.id, None)
|
||||
db.commit()
|
||||
assert current_stock(db, product.id) == 5
|
||||
|
||||
|
||||
# ---- Verbrauchsgegenstand (bulk): wie ein Lebensmittel geführt ----
|
||||
|
||||
def _bulk_product(db, name="Sonnencreme", base_unit=BaseUnit.milliliter, min_stock=500):
|
||||
"""Gegenstand, der als Charge (Menge + Einheit) geführt wird – wie ein
|
||||
Lebensmittel, aber in der Gegenstände-Welt und ohne eindeutigen Code."""
|
||||
cat = Category(name="Pflege", tracking=CategoryTracking.object.value)
|
||||
db.add(cat)
|
||||
db.flush()
|
||||
product = Product(
|
||||
name=name, category_id=cat.id, bulk=True,
|
||||
base_unit=base_unit, min_stock=min_stock,
|
||||
)
|
||||
db.add(product)
|
||||
db.commit()
|
||||
db.refresh(product)
|
||||
return product
|
||||
|
||||
|
||||
def test_verbrauchsgegenstand_zaehlt_ueber_lots(db):
|
||||
# bulk-Gegenstand (individual=False) zählt über Chargen wie ein Lebensmittel.
|
||||
product = _bulk_product(db)
|
||||
assert product.bulk is True and product.individual is False
|
||||
a = _loc(db, "Bad")
|
||||
object_add(db, product, 200, a.id, None)
|
||||
object_add(db, product, 200, a.id, None)
|
||||
db.commit()
|
||||
assert current_stock(db, product.id) == 400
|
||||
|
||||
|
||||
def test_verbrauchsgegenstand_unter_mindestbestand(db):
|
||||
product = _bulk_product(db, min_stock=500) # 500 ml
|
||||
a = _loc(db, "Bad")
|
||||
object_add(db, product, 200, a.id, None)
|
||||
db.commit()
|
||||
# Unter dem Mindestbestand -> gehört auf die Einkaufsliste (wie ein Lebensmittel).
|
||||
assert current_stock(db, product.id) < product.min_stock
|
||||
|
||||
Reference in New Issue
Block a user