Files
service-finder/backend/app/schemas/finance.py
2026-07-27 08:39:18 +00:00

71 lines
1.8 KiB
Python

# /opt/docker/dev/service_finder/backend/app/schemas/finance.py
"""
Finance-related Pydantic schemas for API requests and responses.
"""
from pydantic import BaseModel, ConfigDict
from datetime import datetime
from typing import Optional, Any, Dict, List
import enum
class IssuerType(str, enum.Enum):
"""Kibocsátó típusok (jogi forma)."""
KFT = "KFT"
EV = "EV"
BT = "BT"
ZRT = "ZRT"
OTHER = "OTHER"
class IssuerResponse(BaseModel):
"""Response schema for Issuer entities."""
id: int
name: str
tax_id: Optional[str] = None
type: IssuerType
revenue_limit: float
current_revenue: float
is_active: bool
api_config: Dict[str, Any]
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)
class FinancialLedgerResponse(BaseModel):
"""Response schema for FinancialLedger admin listing."""
id: int
user_id: Optional[int] = None
person_id: Optional[int] = None
amount: float
currency: Optional[str] = None
transaction_type: Optional[str] = None
entry_type: Optional[str] = None
wallet_type: Optional[str] = None
status: Optional[str] = None
details: Optional[Dict[str, Any]] = None
created_at: Optional[datetime] = None
# Joined user info
user_email: Optional[str] = None
user_name: Optional[str] = None
model_config = ConfigDict(from_attributes=True)
class FinancialLedgerListResponse(BaseModel):
"""Paginated response for FinancialLedger admin listing."""
total: int
page: int
page_size: int
items: List[FinancialLedgerResponse]
class IssuerUpdate(BaseModel):
"""Update schema for Issuer entities (PATCH)."""
is_active: Optional[bool] = None
revenue_limit: Optional[float] = None
api_config: Optional[Dict[str, Any]] = None
model_config = ConfigDict(from_attributes=True)