Atomare Aus+Ein-Buchung in einer Materialbewegung-Zeile statt zwei Einzelschritten. NOTIF-001 war bereits produktiv umgesetzt, Backlog war nur veraltet - korrigiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
75 lines
1.5 KiB
Python
75 lines
1.5 KiB
Python
import uuid
|
|
from datetime import datetime
|
|
from decimal import Decimal
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from app.models.lager import LagerortTyp
|
|
|
|
|
|
class LagerortCreate(BaseModel):
|
|
name: str
|
|
parent_id: int | None = None
|
|
typ: LagerortTyp
|
|
|
|
|
|
class LagerortUpdate(BaseModel):
|
|
name: str | None = None
|
|
parent_id: int | None = None
|
|
typ: LagerortTyp | None = None
|
|
|
|
|
|
class LagerortRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: int
|
|
name: str
|
|
parent_id: int | None
|
|
typ: LagerortTyp
|
|
|
|
|
|
class LagerplatzCreate(BaseModel):
|
|
lagerort_id: int
|
|
code: str
|
|
bezeichnung: str | None = None
|
|
|
|
|
|
class LagerplatzRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: int
|
|
lagerort_id: int
|
|
code: str
|
|
bezeichnung: str | None
|
|
|
|
|
|
class BestandRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: uuid.UUID
|
|
lagerplatz_id: int
|
|
material_id: int
|
|
menge: Decimal
|
|
|
|
|
|
class EinAuslagernRequest(BaseModel):
|
|
material_id: int
|
|
menge: Decimal
|
|
grund: str | None = None
|
|
|
|
|
|
class UmlagernRequest(BaseModel):
|
|
nach_lagerplatz_id: int
|
|
material_id: int
|
|
menge: Decimal
|
|
grund: str | None = None
|
|
|
|
|
|
class MaterialbewegungRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: uuid.UUID
|
|
material_id: int
|
|
menge: Decimal
|
|
von_lagerplatz_id: int | None
|
|
nach_lagerplatz_id: int | None
|
|
benutzer_id: int
|
|
zeitpunkt: datetime
|
|
grund: str | None
|