39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
from pydantic import BaseModel, ConfigDict
|
|
from datetime import date, datetime
|
|
from typing import Optional, List
|
|
|
|
# Bestehendes Einzeilen-Schema bleibt
|
|
class DeliveryBase(BaseModel):
|
|
product_id: int
|
|
amount: int
|
|
price_cents: int
|
|
delivered_at: Optional[date] = None
|
|
supplier: Optional[str] = None
|
|
invoice_number: Optional[str] = None
|
|
created_by: Optional[int] = None
|
|
note: str | None = None
|
|
deposit_return_cents: int = 0
|
|
model_config = ConfigDict(from_attributes=True) # statt orm_mode
|
|
|
|
class DeliveryCreate(DeliveryBase):
|
|
pass
|
|
|
|
class DeliveryOut(DeliveryBase):
|
|
id: int
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
# 🆕 Für die neue Seite (Header + Items + Pfand)
|
|
class DeliveryItemIn(BaseModel):
|
|
product_id: int
|
|
quantity_units: int
|
|
unit_cost_cents: int
|
|
|
|
class DeliveryCreateBulk(BaseModel):
|
|
supplier: Optional[str] = None
|
|
date: Optional[date] = None
|
|
invoice_no: Optional[str] = None
|
|
note: Optional[str] = None
|
|
deposit_return_cents: int = 0 # Netto-Pfand (Cent, positiv)
|
|
items: List[DeliveryItemIn]
|