RABC fejlesztése és beélesítése hibák kijavításával
This commit is contained in:
@@ -386,6 +386,8 @@ class AssetEventCreate(BaseModel):
|
||||
cost_id: Optional[UUID] = Field(None, description="Associated cost record ID")
|
||||
cost_amount: Optional[float] = Field(None, gt=0, description="Cost amount in the given currency. If > 0, an AssetCost record is auto-created.")
|
||||
currency: Optional[str] = Field(None, min_length=3, max_length=3, description="Currency code (e.g. HUF, EUR). Defaults to HUF on backend.")
|
||||
status: Optional[str] = Field(None, description="Event status (DRAFT, MISSING_TECH_DATA, COMPLETED) - auto-set by backend")
|
||||
linked_expense_id: Optional[UUID] = Field(None, description="Associated AssetCost ID (bidirectional link)")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@@ -402,6 +404,8 @@ class AssetEventResponse(BaseModel):
|
||||
cost_id: Optional[UUID] = None
|
||||
cost_amount: Optional[float] = Field(None, description="Auto-created cost amount")
|
||||
currency: Optional[str] = Field(None, description="Currency code (e.g. HUF)")
|
||||
status: str = "DRAFT"
|
||||
linked_expense_id: Optional[UUID] = None
|
||||
event_date: datetime
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
@@ -410,7 +414,10 @@ class AssetEventResponse(BaseModel):
|
||||
|
||||
@classmethod
|
||||
def model_validate(cls, obj, **kwargs):
|
||||
"""Override to resolve cost_amount and currency from the related AssetCost."""
|
||||
"""Override to resolve cost_amount and currency from the related AssetCost.
|
||||
|
||||
GROSS-FIRST: cost_amount resolves from amount_gross (Bruttó) as primary source.
|
||||
"""
|
||||
data = {}
|
||||
if hasattr(obj, '__dict__'):
|
||||
# Copy ORM attributes
|
||||
@@ -422,7 +429,10 @@ class AssetEventResponse(BaseModel):
|
||||
cost = getattr(obj, 'cost', None)
|
||||
if cost is not None:
|
||||
if data.get('cost_amount') is None:
|
||||
data['cost_amount'] = float(cost.amount_net) if cost.amount_net is not None else None
|
||||
# GROSS-FIRST: prefer amount_gross as the source of truth
|
||||
data['cost_amount'] = float(cost.amount_gross) if cost.amount_gross is not None else (
|
||||
float(cost.amount_net) if cost.amount_net is not None else None
|
||||
)
|
||||
if data.get('currency') is None:
|
||||
data['currency'] = cost.currency
|
||||
return cls(**data)
|
||||
Reference in New Issue
Block a user