frontend költség beállítások
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# /opt/docker/dev/service_finder/backend/app/schemas/asset_cost.py
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
||||
from typing import Optional, Dict, Any
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
from decimal import Decimal
|
||||
from uuid import UUID
|
||||
|
||||
@@ -34,13 +34,21 @@ class AssetCostBase(BaseModel):
|
||||
return data
|
||||
vat_rate: Optional[Decimal] = Field(None, description="ÁFA kulcs (pl. 27.00)")
|
||||
currency: str = "HUF"
|
||||
date: datetime = Field(default_factory=datetime.now)
|
||||
cost_date: datetime = Field(default_factory=lambda: datetime.now(), validation_alias="date", description="Költség rögzítésének dátuma/időpontja")
|
||||
invoice_number: Optional[str] = None
|
||||
data: Dict[str, Any] = Field(default_factory=dict) # nyugta adatai, GPS koordináták
|
||||
category_id: int # FK a CostCategory táblához
|
||||
mileage_at_cost: Optional[int] = None # Stored inside data JSONB
|
||||
description: Optional[str] = None # Stored inside data JSONB
|
||||
|
||||
# === BESZÁLLÍTÓI ADATOK (B2B expansion) ===
|
||||
vendor_organization_id: Optional[int] = Field(None, description="Beszállító szervezet ID (FK fleet.organizations)")
|
||||
external_vendor_name: Optional[str] = Field(None, max_length=200, description="Szabadon gépelhető beszállító név (ha nincs a rendszerben)")
|
||||
|
||||
# === KÖNYVELÉSI DÁTUMOK ===
|
||||
invoice_date: Optional[date] = Field(None, description="Számla kiállításának dátuma")
|
||||
fulfillment_date: Optional[date] = Field(None, description="Teljesítés dátuma")
|
||||
|
||||
@model_validator(mode='after')
|
||||
def validate_gross_first(self):
|
||||
"""Gross-First validation: ensure amount_gross is the primary source.
|
||||
@@ -86,5 +94,8 @@ class AssetCostResponse(AssetCostBase):
|
||||
category_code: Optional[str] = None # Resolved from CostCategory relationship
|
||||
description: Optional[str] = None # Extracted from data['description']
|
||||
mileage_at_cost: Optional[int] = None # Extracted from data['mileage_at_cost']
|
||||
|
||||
# Enriched vendor name (resolved from vendor_organization_id relationship)
|
||||
vendor_name: Optional[str] = None # Resolved from Organization.name via vendor_organization_id
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
Reference in New Issue
Block a user