"""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
    method: Optional[str] = None
    received_on: Optional[date] = None
    receipt_number: Optional[str] = None
    notes: Optional[str] = None
    recorded_by: Optional[UUID] = None
    created_at: datetime


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

    id: UUID
    tenant_id: UUID
    invoice_number: str
    contract_id: Optional[UUID] = None
    purchaser_name: Optional[str] = None
    purchaser_email: Optional[str] = None
    status: str
    total_amount: Decimal
    paid_amount: Decimal
    balance_due: Decimal
    due_date: Optional[date] = None
    reminder_count: int
    last_reminder_at: Optional[datetime] = None
    stripe_payment_link: Optional[str] = None
    pdf_s3_key: Optional[str] = None
    created_at: datetime
    updated_at: datetime
