from uuid import UUID, uuid4
from datetime import datetime
from decimal import Decimal
from pydantic import BaseModel, Field

class BankTransaction(BaseModel):
    id: UUID = Field(default_factory=uuid4)
    bank_account_no: str
    amount: Decimal
    transaction_date: datetime
    description: str
    reconciled: bool = False
    reconciled_invoice_id: UUID | None = None
    created_at: datetime = Field(default_factory=datetime.utcnow)

    def reconcile_with(self, invoice_id: UUID):
        self.reconciled = True
        self.reconciled_invoice_id = invoice_id
