"""Billing response schemas."""
from datetime import date, datetime
from decimal import Decimal
from typing import Optional
from uuid import UUID
from pydantic import BaseModel, ConfigDict


class InvoicePaymentResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: UUID
    invoice_id: UUID
    amount: Decimal
    payment_method: str
    reference: Optional[str] = None
    notes: Optional[str] = None
    created_at: datetime


class InvoiceResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: UUID
    tenant_id: UUID
    invoice_number: str
    record_id: Optional[UUID] = None
    contract_id: Optional[UUID] = None
    status: str
    subtotal: Decimal
    tax: Decimal
    total: Decimal
    amount_paid: Decimal
    balance: Decimal
    due_date: date
    notes: Optional[str] = None
    reminder_count: int
    created_at: datetime
    updated_at: datetime
