import uuid from datetime import date, datetime from decimal import Decimal from typing import Optional from pydantic import BaseModel, ConfigDict, Field class ContractFeePaymentCreate(BaseModel): amount: Decimal = Field(ge=0) paid_date: Optional[date] = None verified_date: Optional[date] = None is_paid: bool = False is_verified: bool = False remark: Optional[str] = None class ContractFeePaymentUpdate(BaseModel): amount: Optional[Decimal] = Field(default=None, ge=0) paid_date: Optional[date] = None verified_date: Optional[date] = None is_paid: Optional[bool] = None is_verified: Optional[bool] = None remark: Optional[str] = None class ContractFeePaymentRead(BaseModel): id: uuid.UUID contract_fee_id: uuid.UUID seq: int amount: Decimal paid_date: Optional[date] verified_date: Optional[date] is_paid: bool is_verified: bool remark: Optional[str] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)