import datetime
import decimal
from typing import Any

from _typeshed import Incomplete
from sqlalchemy.orm import DeclarativeBase, Mapped as Mapped, MappedAsDataclass

from abacus_models.core.mixins import (
    AuditMixin as AuditMixin,
    BaseMixin as BaseMixin,
    CreateMixin as CreateMixin,
    SoftDeleteMixin as SoftDeleteMixin,
    UpdateMixin as UpdateMixin,
)
from abacus_models.core.types import NormalizedDate as NormalizedDate

class Base(MappedAsDataclass, DeclarativeBase, BaseMixin): ...

class AbacusOutbox(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    abacus_outbox_id: Mapped[decimal.Decimal]
    target_type: Mapped[str | None]
    target_id: Mapped[decimal.Decimal | None]
    event_type: Mapped[str | None]
    correlation_id: Mapped[str | None]
    payload: Mapped[Any | None]
    status: Mapped[str | None]
    retry_count: Mapped[decimal.Decimal | None]
    max_retries: Mapped[decimal.Decimal | None]
    next_retry_at: Mapped[Any | None]
    error_message: Mapped[str | None]
    processed_at: Mapped[Any | None]
    details: Mapped[Any | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]

class AbacusState(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    abacus_state_id: Mapped[decimal.Decimal | None]
    parent_table_name: Mapped[str | None]
    action_status: Mapped[str | None]
    message: Mapped[str | None]
    action_name: Mapped[str | None]
    parent_table_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    abacus_state_history: Mapped[list['AbacusStateHistory']]

class Account(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_id: Mapped[decimal.Decimal | None]
    oa_owner: Mapped[str | None]
    account_name: Mapped[str | None]
    sap_created_at: Mapped[Any | None]
    sax_interested_party_id: Mapped[str | None]
    sax_currency_abbreviation: Mapped[str | None]
    sax_bank_account_id: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    account_payee: Mapped[list['AccountPayee']]
    account_payment_term: Mapped[list['AccountPaymentTerm']]
    account_tax_info: Mapped[list['AccountTaxInfo']]
    payment_hold: Mapped[list['PaymentHold']]
    report_custom: Mapped[list['ReportCustom']]
    statement_attachment: Mapped[list['StatementAttachment']]
    account_payee_history: Mapped[list['AccountPayeeHistory']]
    account_payment_term_history: Mapped[list['AccountPaymentTermHistory']]
    account_tax_info_history: Mapped[list['AccountTaxInfoHistory']]
    payee_collaborator: Mapped[list['PayeeCollaborator']]
    payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']]
    payment_hold_history: Mapped[list['PaymentHoldHistory']]
    account_contract: Mapped[list['AccountContract']]
    account_contract_vat_detail: Mapped[list['AccountContractVatDetail']]
    ledger_account: Mapped[list['LedgerAccount']]
    ledger_account_contract: Mapped[list['LedgerAccountContract']]
    ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']]
    ledger_deposit: Mapped[list['LedgerDeposit']]
    ledger_vat_summary: Mapped[list['LedgerVatSummary']]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']]
    worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']]
    worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']]
    ledger_account_contract_current_balance: Mapped[
        list['LedgerAccountContractCurrentBalance']
    ]
    ledger_account_current_balance: Mapped[list['LedgerAccountCurrentBalance']]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]
    ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']]
    ledger_contract_flowthrough_current_balance: Mapped[
        list['LedgerContractFlowthroughCurrentBalance']
    ]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]
    ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']]
    worksheet_account_contract_payable_after_tax: Mapped[
        list['WorksheetAccountContractPayableAfterTax']
    ]
    payment_group_payment_account_detail: Mapped[
        list['PaymentGroupPaymentAccountDetail']
    ]
    worksheet_account_contract_payable_details: Mapped[
        list['WorksheetAccountContractPayableDetails']
    ]

class AccountContractDistribution(Base):
    __tablename__: str
    __table_args__: Incomplete
    account_contract_distribution_id: Mapped[decimal.Decimal]
    label_id: Mapped[decimal.Decimal | None]
    account_payment_term_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]

class AccountPayeeKycNotificationHistory(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_kyc_notification_history_id: Mapped[decimal.Decimal]
    account_payee_kyc_notification_id: Mapped[decimal.Decimal | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    file_upload_link: Mapped[str | None]
    requirement_id: Mapped[str | None]
    sub_requirement_id: Mapped[str | None]
    sub_requirement_status_id: Mapped[decimal.Decimal | None]
    entity_reference_type_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    requirement_type_id: Mapped[decimal.Decimal | None]
    possible_sub_requirement_types: Mapped[str | None]
    entity_reference_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class AccountPayeePayoneerStatus(Base):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_payoneer_status_id: Mapped[decimal.Decimal]
    payoneer_status: Mapped[str | None]
    account_payee_id: Mapped[decimal.Decimal | None]

class AccountPayeePayoneerStatusHistory(Base):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_payoneer_status_history_id: Mapped[decimal.Decimal]
    payoneer_status: Mapped[str | None]
    account_payee_payoneer_status_id: Mapped[decimal.Decimal | None]
    account_payee_id: Mapped[decimal.Decimal | None]

class AccountPayeeTaxFormInfoHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_tax_form_info_history_id: Mapped[decimal.Decimal]
    account_payee_tax_form_info_id: Mapped[decimal.Decimal | None]
    tax_form_type: Mapped[str | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    signed_date: Mapped[datetime.date | None]
    expiration_date: Mapped[datetime.date | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    revision_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class AccountPaymentTermContract(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payment_term_contract_id: Mapped[decimal.Decimal]
    account_payment_term_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class AccountPaymentTermTemplate(Base):
    __tablename__: str
    __table_args__: Incomplete
    account_payment_term_template_id: Mapped[decimal.Decimal]
    template_name: Mapped[str | None]
    currency_code: Mapped[str | None]
    payment_terms: Mapped[Any | None]

class AccountingPeriodReport(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    accounting_period_report_id: Mapped[decimal.Decimal]
    report_export_url: Mapped[str | None]
    accounting_period_id: Mapped[decimal.Decimal | None]
    report_type: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]

class Adjustment(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    accounting_run_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    memo: Mapped[str | None]
    adjustment_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    apply_on: Mapped[datetime.date | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]

class ContractException(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_id: Mapped[decimal.Decimal | None]
    oa_status: Mapped[str | None]
    oa_vendor_id: Mapped[decimal.Decimal | None]
    contract_exception_id: Mapped[decimal.Decimal | None]

class ContractFlowthroughHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_flowthrough_history_id: Mapped[decimal.Decimal]
    contract_flowthrough_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    reference_flowthrough_calculation_id: Mapped[decimal.Decimal | None]
    flowthrough_rate: Mapped[decimal.Decimal | None]
    flowthrough_status: Mapped[str | None]
    has_automatic_shutoff: Mapped[bool | None]
    recoupment_cap: Mapped[decimal.Decimal | None]
    previous_status: Mapped[str | None]
    status_last_modified_by: Mapped[str | None]
    status_last_modified: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    previous_flowthrough_status: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class ContractLifecycleHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_lifecycle_history_id: Mapped[decimal.Decimal]
    lifecycle_term_start: Mapped[datetime.date | None]
    collection_start: Mapped[datetime.date | None]
    termination_effective: Mapped[datetime.date | None]
    contract_id: Mapped[decimal.Decimal | None]
    lifecycle_term_end: Mapped[datetime.date | None]
    termination_notice_deadline: Mapped[datetime.date | None]
    renewal_effective: Mapped[datetime.date | None]
    collection_end: Mapped[datetime.date | None]
    contract_lifecycle_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    contract_lifecycle_schedule_id: Mapped[decimal.Decimal | None]
    termination_notice_received: Mapped[datetime.date | None]
    deleted_by: Mapped[str | None]
    lifecycle_status: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class ContractLifecycleScheduleDetail(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_lifecycle_schedule_detail_id: Mapped[decimal.Decimal]
    period_interval: Mapped[decimal.Decimal | None]
    period_type: Mapped[str | None]
    contract_lifecycle_schedule: Mapped[list['ContractLifecycleSchedule']]
    contract_lifecycle_schedule_: Mapped[list['ContractLifecycleSchedule']]
    contract_lifecycle_schedule1: Mapped[list['ContractLifecycleSchedule']]

class ContractMechanicalDeductionHistory(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    contract_mechanical_deduction_history_id: Mapped[decimal.Decimal]
    contract_mechanical_deduction_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    territory: Mapped[str | None]
    mechanical_type: Mapped[Any | None]
    admin_type: Mapped[str | None]
    admin_fee: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class ContractPhysicalReserve(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_physical_reserve_id: Mapped[decimal.Decimal]
    installments_in_months: Mapped[decimal.Decimal | None]
    reserve_rate: Mapped[decimal.Decimal | None]
    release_schedule: Mapped[Any | None]
    reserve_release_offset_in_months: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]

class ContractTermConditionHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_condition_history_id: Mapped[decimal.Decimal]
    contract_term_id: Mapped[decimal.Decimal | None]
    priority: Mapped[decimal.Decimal | None]
    contract_term_condition_name: Mapped[str | None]
    term_rate: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    conditions: Mapped[Any | None]
    deleted_at: Mapped[Any | None]
    contract_term_condition_id: Mapped[decimal.Decimal | None]
    commission: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]

class ContractTermHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_history_id: Mapped[decimal.Decimal]
    contract_term_id: Mapped[decimal.Decimal | None]
    attachments: Mapped[Any | None]
    is_base_term: Mapped[bool | None]
    contract_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    term_type: Mapped[str | None]
    attachments_relations: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    contract_term_name: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]

class ContractTerritoryExclusion(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_territory_exclusion_id: Mapped[decimal.Decimal]
    country_code_exclusion: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]

class Country(Base):
    __tablename__: str
    __table_args__: Incomplete
    country_id: Mapped[decimal.Decimal]
    iso_3166_a3: Mapped[str | None]
    country_name: Mapped[str | None]
    country_code: Mapped[str | None]

class DeletedContract(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    deleted_contract_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    contract_data: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class FileUploadConfig(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    file_upload_config_id: Mapped[decimal.Decimal]
    upload_type: Mapped[str | None]
    s3_key_template: Mapped[str | None]
    allowed_file_types: Mapped[Any | None]
    max_file_size_bytes: Mapped[decimal.Decimal | None]
    multipart_threshold_bytes: Mapped[decimal.Decimal | None]
    min_multipart_chunk_size_bytes: Mapped[decimal.Decimal | None]
    description: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    event_name: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    file_upload: Mapped[list['FileUpload']]

class FivetranAudit(Base):
    __tablename__: str
    __table_args__: Incomplete
    id: Mapped[str | None]
    message: Mapped[str | None]
    update_started: Mapped[Any | None]
    update_id: Mapped[str | None]
    schema: Mapped[str | None]
    TABLE: Mapped[str | None]
    START: Mapped[Any | None]
    done: Mapped[Any | None]
    rows_updated_or_inserted: Mapped[decimal.Decimal | None]
    status: Mapped[str | None]
    progress: Mapped[Any | None]

class HistoricalContractAdvance(Base):
    __tablename__: str
    __table_args__: Incomplete
    id: Mapped[decimal.Decimal]
    oa_advance_id: Mapped[decimal.Decimal | None]
    oa_contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    amount: Mapped[float | None]
    currency_id: Mapped[decimal.Decimal | None]
    currency: Mapped[str | None]
    due_type: Mapped[str | None]
    date_paid: Mapped[datetime.date | None]
    exchange_rate: Mapped[float | None]
    description: Mapped[str | None]
    apply_to_period_id: Mapped[decimal.Decimal | None]

class JsonContractFileImportStatus(Base):
    __tablename__: str
    __table_args__: Incomplete
    json_contract_file_import_status_id: Mapped[decimal.Decimal]
    ingestion_date: Mapped[Any | None]
    contract_id: Mapped[decimal.Decimal | None]
    contract_name: Mapped[str | None]
    json_file_s3_path: Mapped[str | None]
    json_file_s3_version_id: Mapped[str | None]
    process_report_file_s3_path: Mapped[str | None]
    import_status: Mapped[str | None]
    failed_entities: Mapped[str | None]
    errors: Mapped[str | None]
    overwrite: Mapped[bool | None]
    ingestion_duration: Mapped[decimal.Decimal | None]
    aws_username: Mapped[str | None]
    import_user: Mapped[str | None]
    jira_ticket: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    imported_entities: Mapped[str | None]

class LedgerAccountingRunVat(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_accounting_run_vat_id: Mapped[decimal.Decimal]
    country_of_tax_residence: Mapped[str | None]
    adjusted_net_revenue: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    net_revenue: Mapped[decimal.Decimal | None]
    distribution_vat: Mapped[decimal.Decimal | None]
    exempt_reason: Mapped[str | None]
    accounting_run_id: Mapped[decimal.Decimal | None]
    distribution_fee: Mapped[decimal.Decimal | None]
    gross_vat: Mapped[decimal.Decimal | None]
    gross_revenue: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    gross_vat_rate: Mapped[decimal.Decimal | None]
    distribution_vat_rate: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class LedgerAdjustment(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_id: Mapped[decimal.Decimal]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    adjustment_amount: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    apply_to_statement_period_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    reference_adjustment_type_id: Mapped[decimal.Decimal | None]
    adjustment_currency_code: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]

class LedgerAdjustmentAdjustmentDetail(Base):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_adjustment_detail_id: Mapped[decimal.Decimal]
    ledger_adjustment_id: Mapped[decimal.Decimal | None]
    ledger_adjustment_detail_id: Mapped[decimal.Decimal | None]
    detail_count: Mapped[decimal.Decimal | None]

class LedgerCorrection(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_correction_id: Mapped[decimal.Decimal]
    abacus_event_id: Mapped[decimal.Decimal | None]
    correction_statement_period_id: Mapped[decimal.Decimal | None]
    worksheet_correction_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    correction_amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    correction_type: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    net_revenue: Mapped[decimal.Decimal | None]
    gross_revenue: Mapped[decimal.Decimal | None]
    distribution_fee: Mapped[decimal.Decimal | None]
    mechanical_deduction_total: Mapped[decimal.Decimal | None]
    mechanical_deduction_admin_fee_total: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class LedgerGeneral(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    currency_amount: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    ledger_type: Mapped[str | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    ledger_general_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]

class LedgerPayee(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    abacus_event_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    ledger_payee_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    currency_amount: Mapped[decimal.Decimal | None]
    previous_balance: Mapped[decimal.Decimal | None]
    current_balance: Mapped[decimal.Decimal | None]
    ledger_type: Mapped[str | None]
    note: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]

class LedgerPayeeCurrentBalance(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_payee_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    ledger_payee_current_balance_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]

class LegacyPayee(Base):
    __tablename__: str
    __table_args__: Incomplete
    legacy_payee_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    oa_vendor_id: Mapped[decimal.Decimal | None]

class MechanicalDeduction(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_id: Mapped[decimal.Decimal | None]
    mechanical_deduction_id: Mapped[decimal.Decimal | None]
    mechanical_type: Mapped[Any | None]
    admin_type: Mapped[str | None]
    admin_fee: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]

class OaTerritoryBackfilledAccounts(Base, AuditMixin, CreateMixin):
    __tablename__: str
    __table_args__: Incomplete
    backfill_id: Mapped[decimal.Decimal]
    accounts: Mapped[Any | None]
    audit_id: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]

class PayeeHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_history_id: Mapped[decimal.Decimal]
    payee_id: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    payoneer_client_reference_id: Mapped[str | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    payoneer_assigned_id: Mapped[decimal.Decimal | None]
    payee_name: Mapped[str | None]
    payee_type: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class PayeeKycNotification(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_kyc_notification_id: Mapped[decimal.Decimal]
    payee_id: Mapped[decimal.Decimal | None]
    file_upload_link: Mapped[str | None]
    requirement_id: Mapped[str | None]
    sub_requirement_id: Mapped[str | None]
    sub_requirement_status_id: Mapped[decimal.Decimal | None]
    entity_reference_type_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    requirement_type_id: Mapped[decimal.Decimal | None]
    possible_sub_requirement_types: Mapped[str | None]
    entity_reference_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class PayeeKycNotificationHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_kyc_notification_history_id: Mapped[decimal.Decimal]
    payee_kyc_notification_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    file_upload_link: Mapped[str | None]
    requirement_id: Mapped[str | None]
    sub_requirement_id: Mapped[str | None]
    sub_requirement_status_id: Mapped[decimal.Decimal | None]
    entity_reference_type_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    requirement_type_id: Mapped[decimal.Decimal | None]
    possible_sub_requirement_types: Mapped[str | None]
    entity_reference_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class PaymentGroup(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    group_name: Mapped[str | None]
    is_reusable: Mapped[bool | None]
    group_criteria: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    payment_group_payment: Mapped[list['PaymentGroupPayment']]

class PaymentGroupPaymentAccountBatch(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_account_batch_id: Mapped[decimal.Decimal]
    batch_num: Mapped[decimal.Decimal | None]
    payment_group_payment_account_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]

class PaymentGroupPaymentAccountDetailSplit(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_account_detail_split_id: Mapped[decimal.Decimal]
    payment_group_payment_account_detail_id: Mapped[decimal.Decimal | None]
    target_type: Mapped[str | None]
    target_id: Mapped[decimal.Decimal | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    amount_to_ledger: Mapped[decimal.Decimal | None]
    amount_wht_to_ledger: Mapped[decimal.Decimal | None]
    amount_owed: Mapped[decimal.Decimal | None]
    amount_payable: Mapped[decimal.Decimal | None]
    currency: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class PaymentGroupPaymentPayee(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    last_payment: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    currency_code: Mapped[str | None]
    payment_group_payment_payee_id: Mapped[decimal.Decimal | None]
    current_balance: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    prior_payment_group_payment_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    payee_id: Mapped[decimal.Decimal | None]
    payment_group_payment_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]

class PaymentMinimum(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    currency_code: Mapped[str | None]
    check_amount: Mapped[decimal.Decimal | None]
    western_union_amount: Mapped[decimal.Decimal | None]
    wire_transfer_amount: Mapped[decimal.Decimal | None]
    payment_minimum_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]

class ReferenceAdjustmentType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_adjustment_type_id: Mapped[decimal.Decimal]
    type_name: Mapped[str | None]
    oa_category_name: Mapped[str | None]
    ledger_adjustment_detail: Mapped[list['LedgerAdjustmentDetail']]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]

class ReferenceAdvancePaymentMethod(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_advance_payment_method_id: Mapped[decimal.Decimal]
    is_internal: Mapped[bool | None]
    payment_method: Mapped[str | None]
    contract_advance: Mapped[list['ContractAdvance']]
    contract_advance_history: Mapped[list['ContractAdvanceHistory']]

class ReferenceAgreementType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_agreement_type_id: Mapped[decimal.Decimal]
    agreement_type: Mapped[str | None]
    account_payment_term: Mapped[list['AccountPaymentTerm']]
    payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']]

class ReferenceExternalSource(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_external_source_id: Mapped[decimal.Decimal]
    parent_table_id: Mapped[decimal.Decimal | None]
    external_source_id: Mapped[str | None]
    external_source: Mapped[str | None]
    parent_table_name: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]

class ReferenceFlowthroughCalculation(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_flowthrough_calculation_id: Mapped[decimal.Decimal]
    flowthrough_calculation_name: Mapped[str | None]
    flowthrough_calculation: Mapped[str | None]
    flowthrough_calculation_example: Mapped[str | None]
    flowthrough_calculation_example_summary: Mapped[str | None]
    contract_flowthrough: Mapped[list['ContractFlowthrough']]

class ReferenceMechanicalRate(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_mechanical_rate_id: Mapped[decimal.Decimal]
    country_code: Mapped[str | None]
    base_rate: Mapped[decimal.Decimal | None]
    minute_rate: Mapped[decimal.Decimal | None]
    ringtone_rate: Mapped[decimal.Decimal | None]
    effective_start_date: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class ReferencePayableDetailType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_payable_detail_type_id: Mapped[decimal.Decimal]
    detail_type_name: Mapped[str | None]
    detail_group_name: Mapped[str | None]
    worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']]
    worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']]
    worksheet_account_contract_payable_details: Mapped[
        list['WorksheetAccountContractPayableDetails']
    ]

class ReferencePaymentEntity(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_payment_entity_id: Mapped[decimal.Decimal]
    payment_entity_name: Mapped[str | None]
    country_of_tax_reporting: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    account_payment_term: Mapped[list['AccountPaymentTerm']]
    payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']]
    reference_signing_entity: Mapped[list['ReferenceSigningEntity']]
    statement_period_payment_entity: Mapped[list['StatementPeriodPaymentEntity']]
    account_payment_term_history: Mapped[list['AccountPaymentTermHistory']]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]

class ReferencePaymentType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_payment_type_id: Mapped[decimal.Decimal]
    is_internal: Mapped[bool | None]
    payment_service: Mapped[str | None]
    notes: Mapped[str | None]
    payment_type: Mapped[str | None]
    account_payee: Mapped[list['AccountPayee']]
    payee: Mapped[list['Payee']]
    contract_advance: Mapped[list['ContractAdvance']]
    contract_advance_history: Mapped[list['ContractAdvanceHistory']]

class ReferencePayoneerProgram(Base):
    __tablename__: str
    __table_args__: Incomplete
    payoneer_program_id: Mapped[decimal.Decimal]
    funding_currency: Mapped[str | None]
    payoneer_program_name: Mapped[str | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    account_payee: Mapped[list['AccountPayee']]
    payee: Mapped[list['Payee']]
    payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']]
    payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']]
    payment_group_payment_batch: Mapped[list['PaymentGroupPaymentBatch']]

class ReferenceSapProfitCenter(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_sap_profit_center_id: Mapped[decimal.Decimal]
    company_code: Mapped[str | None]
    profit_center: Mapped[str | None]
    business_group: Mapped[str | None]
    display_name: Mapped[str | None]
    reference_signing_entity: Mapped[list['ReferenceSigningEntity']]
    contract: Mapped[list['Contract']]
    contract_history: Mapped[list['ContractHistory']]

class ReferenceTaxWithholding(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_tax_withholding_id: Mapped[decimal.Decimal]
    country_of_withholding: Mapped[str | None]
    country_of_tax_residence: Mapped[str | None]
    tax_rate: Mapped[decimal.Decimal | None]
    is_resource_provisioned: Mapped[bool | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]

class ReferenceTransactionType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_transaction_type_id: Mapped[decimal.Decimal]
    transaction_type_code: Mapped[str | None]
    transaction_type_name: Mapped[str | None]

class ReferenceTransactionTypeGroup(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_transaction_type_group_id: Mapped[decimal.Decimal]
    transaction_type_group_name: Mapped[str | None]

class ReferenceTransactionTypeGroupTransactionType(Base):
    __tablename__: str
    __table_args__: Incomplete
    reference_transaction_type_group_transaction_type_id: Mapped[decimal.Decimal]
    reference_transaction_type_id: Mapped[decimal.Decimal | None]
    reference_transaction_type_group_id: Mapped[decimal.Decimal | None]
    reference_transaction_type_group_admin: Mapped[str | None]

class ReferenceVatRate(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_vat_rate_id: Mapped[decimal.Decimal]
    transaction_type: Mapped[str | None]
    vat_type: Mapped[str | None]
    effective_date: Mapped[datetime.date | None]
    tax_rate: Mapped[decimal.Decimal | None]
    country_of_tax_residence: Mapped[str | None]
    is_sba_signed: Mapped[bool | None]
    is_tax_applicable: Mapped[bool | None]
    is_vat: Mapped[bool | None]
    country_of_tax_policy: Mapped[str | None]
    is_vat_registered_in_country_of_tax_policy: Mapped[bool | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]

class ReferenceWorksheetFlowthroughError(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    reference_worksheet_flowthrough_error_id: Mapped[decimal.Decimal | None]
    error_code: Mapped[str | None]
    description: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class ReportPayment(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    report_payment_id: Mapped[decimal.Decimal]
    target_type: Mapped[str | None]
    target_id: Mapped[decimal.Decimal | None]
    report_type: Mapped[str | None]
    report_export_url: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class RunController(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    run_controller_id: Mapped[decimal.Decimal | None]
    name: Mapped[str | None]
    run_controller_name: Mapped[str | None]
    is_default: Mapped[bool | None]
    contract_type: Mapped[str | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    accounting_run: Mapped[list['AccountingRun']]
    contract_template: Mapped[list['ContractTemplate']]
    run_controller_contract: Mapped[list['RunControllerContract']]

class RunControllerContractHistory(Base, AuditMixin, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    run_controller_contract_history_id: Mapped[decimal.Decimal]
    run_controller_contract_id: Mapped[decimal.Decimal | None]
    run_controller_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    audit_id: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class Schedule(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    schedule_id: Mapped[decimal.Decimal]
    schedule_name: Mapped[str | None]
    target_id: Mapped[str | None]
    target_type: Mapped[str | None]
    conditions: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    schedule_attachment: Mapped[list['ScheduleAttachment']]
    schedule_history: Mapped[list['ScheduleHistory']]
    contract_term_schedule: Mapped[list['ContractTermSchedule']]
    contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']]

class ScheduleAttachmentHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    schedule_attachment_history_id: Mapped[decimal.Decimal]
    target_type: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    schedule_attachment_id: Mapped[decimal.Decimal | None]
    schedule_id: Mapped[decimal.Decimal | None]
    target_id: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]

class SigningEntity(Base):
    __tablename__: str
    __table_args__: Incomplete
    signing_entity_id: Mapped[decimal.Decimal]
    legal_name: Mapped[str | None]
    signing_entity_name: Mapped[str | None]
    sap_id: Mapped[decimal.Decimal | None]
    address: Mapped[str | None]
    vat_number: Mapped[str | None]

class StatementPeriod(Base):
    __tablename__: str
    __table_args__: Incomplete
    statement_period_id: Mapped[decimal.Decimal]
    closed_by: Mapped[str | None]
    statement_period_name: Mapped[str | None]
    closed_date: Mapped[Any | None]
    statement_period_status: Mapped[str | None]
    statement_month: Mapped[decimal.Decimal | None]
    statement_year: Mapped[decimal.Decimal | None]
    abacus_event: Mapped[list['AbacusEvent']]
    accounting_period: Mapped[list['AccountingPeriod']]
    exchange_rate: Mapped[list['ExchangeRate']]
    payment_group_payment: Mapped[list['PaymentGroupPayment']]
    statement_attachment: Mapped[list['StatementAttachment']]
    statement_period_payment_entity: Mapped[list['StatementPeriodPaymentEntity']]
    vat_summary_file: Mapped[list['VatSummaryFile']]
    payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']]
    payment_group_payment_account_: Mapped[list['PaymentGroupPaymentAccount']]
    statement_period_adjustment_file: Mapped[list['StatementPeriodAdjustmentFile']]
    worksheet_flowthrough_batch: Mapped[list['WorksheetFlowthroughBatch']]
    ledger_vat_summary: Mapped[list['LedgerVatSummary']]
    ledger_vat_summary_: Mapped[list['LedgerVatSummary']]
    payment_allocation: Mapped[list['PaymentAllocation']]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    worksheet_adjustment_: Mapped[list['WorksheetAdjustment']]
    worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']]
    worksheet_payment_custom_: Mapped[list['WorksheetPaymentCustom']]
    worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']]
    worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]
    ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']]
    ledger_reserve_taken: Mapped[list['LedgerReserveTaken']]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]
    worksheet_adjustment_detail_: Mapped[list['WorksheetAdjustmentDetail']]
    worksheet_payment_contract_advance: Mapped[list['WorksheetPaymentContractAdvance']]
    worksheet_payment_contract_advance_: Mapped[list['WorksheetPaymentContractAdvance']]
    ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']]
    ledger_reserve_release_schedule_: Mapped[list['LedgerReserveReleaseSchedule']]
    worksheet_account_contract_payable_after_tax: Mapped[
        list['WorksheetAccountContractPayableAfterTax']
    ]
    ledger_reserve_release: Mapped[list['LedgerReserveRelease']]
    worksheet_account_contract_payable_details: Mapped[
        list['WorksheetAccountContractPayableDetails']
    ]

class Store(Base):
    __tablename__: str
    __table_args__: Incomplete
    store_id: Mapped[decimal.Decimal | None]
    store_name: Mapped[str | None]

class TaxWithholdingOverride(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    tax_withholding_override_id: Mapped[decimal.Decimal]
    account_payee_id: Mapped[decimal.Decimal | None]
    rate_override: Mapped[decimal.Decimal | None]
    certificate_expiration_date: Mapped[datetime.date | None]
    message: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class TaxWithholdingOverrideHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    tax_withholding_override_history_id: Mapped[decimal.Decimal]
    tax_withholding_override_id: Mapped[decimal.Decimal | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    rate_override: Mapped[decimal.Decimal | None]
    certificate_expiration_date: Mapped[datetime.date | None]
    message: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class TransactionType(Base):
    __tablename__: str
    __table_args__: Incomplete
    transaction_type_abbr: Mapped[str | None]
    transaction_type_id: Mapped[decimal.Decimal | None]
    transaction_group_id: Mapped[decimal.Decimal | None]
    transaction_type_desc: Mapped[str | None]

class WorksheetAccountContractTaxableRevenue(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    account_contract_taxable_revenue_id: Mapped[decimal.Decimal]
    statement_period_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    worksheet_account_contract_closing_balance_id: Mapped[decimal.Decimal | None]
    revenue_transaction_type: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    is_us_revenue: Mapped[bool | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    reference_payment_entity_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]

class WorksheetCorrection(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_correction_id: Mapped[decimal.Decimal]
    correction_statement_period_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    note: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    raw_correction_amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    correction_type: Mapped[str | None]
    deleted_by: Mapped[str | None]
    net_revenue: Mapped[decimal.Decimal | None]
    gross_revenue: Mapped[decimal.Decimal | None]
    distribution_fee: Mapped[decimal.Decimal | None]
    mechanical_deduction_total: Mapped[decimal.Decimal | None]
    mechanical_deduction_admin_fee_total: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]

class WorksheetFlowthrough(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_flowthrough_id: Mapped[decimal.Decimal]
    worksheet_flowthrough_batch_id: Mapped[decimal.Decimal | None]
    batch_row_index: Mapped[decimal.Decimal | None]
    source_data: Mapped[Any | None]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    amount_raw: Mapped[decimal.Decimal | None]
    activity_month: Mapped[decimal.Decimal | None]
    activity_year: Mapped[decimal.Decimal | None]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    internal_note: Mapped[str | None]
    errors: Mapped[Any | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class WorksheetFlowthroughFile(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_flowthrough_file_id: Mapped[decimal.Decimal]
    worksheet_flowthrough_batch_id: Mapped[decimal.Decimal | None]
    file_key: Mapped[str | None]
    file_name: Mapped[str | None]
    file_size_bytes: Mapped[decimal.Decimal | None]
    file_type: Mapped[str | None]
    s3_key: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]

class AbacusEvent(Base, CreateMixin):
    __tablename__: str
    __table_args__: Incomplete
    abacus_event_id: Mapped[decimal.Decimal | None]
    event_name: Mapped[str | None]
    target_type: Mapped[str | None]
    previous_abacus_event_id: Mapped[decimal.Decimal | None]
    target_id: Mapped[decimal.Decimal | None]
    rolled_back_at: Mapped[Any | None]
    event_date: Mapped[Any | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    statement_period: Mapped[StatementPeriod | None]
    ledger_account: Mapped[list['LedgerAccount']]
    ledger_account_contract: Mapped[list['LedgerAccountContract']]
    ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']]
    ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']]
    ledger_deposit: Mapped[list['LedgerDeposit']]
    ledger_vat_summary: Mapped[list['LedgerVatSummary']]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]
    ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']]
    ledger_reserve_taken: Mapped[list['LedgerReserveTaken']]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]
    ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']]
    worksheet_account_contract_payable_after_tax: Mapped[
        list['WorksheetAccountContractPayableAfterTax']
    ]
    ledger_reserve_release: Mapped[list['LedgerReserveRelease']]

class AbacusStateHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    abacus_state_history_id: Mapped[decimal.Decimal]
    message: Mapped[str | None]
    action_status: Mapped[str | None]
    parent_table_id: Mapped[decimal.Decimal | None]
    abacus_state_id: Mapped[decimal.Decimal | None]
    parent_table_name: Mapped[str | None]
    action_name: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    abacus_state: Mapped[AbacusState | None]

class AccountPayee(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_id: Mapped[decimal.Decimal | None]
    payoneer_id: Mapped[str | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    payoneer_payee_id: Mapped[decimal.Decimal | None]
    payoneer_iframe_url_date: Mapped[datetime.date | None]
    payoneer_session_id: Mapped[str | None]
    payoneer_iframe_url: Mapped[str | None]
    payoneer_payee_name: Mapped[str | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    sap_vendor_id: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    description: Mapped[str | None]
    payment_description: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    payoneer_program: Mapped[ReferencePayoneerProgram | None]
    reference_payment_type: Mapped[ReferencePaymentType | None]
    account_payee_history: Mapped[list['AccountPayeeHistory']]
    account_payee_kyc_notification: Mapped[list['AccountPayeeKycNotification']]
    account_payee_tax_form_info: Mapped[list['AccountPayeeTaxFormInfo']]

class AccountPaymentTerm(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payment_term_id: Mapped[decimal.Decimal]
    currency_code: Mapped[str | None]
    payment_schedule: Mapped[str | None]
    payment_agreement: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    payment_minimum: Mapped[decimal.Decimal | None]
    signing_entity_id: Mapped[decimal.Decimal | None]
    agreement_type_id: Mapped[decimal.Decimal | None]
    payment_entity_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    account: Mapped[Account | None]
    agreement_type: Mapped[ReferenceAgreementType | None]
    payment_entity: Mapped[ReferencePaymentEntity | None]
    account_payment_term_history: Mapped[list['AccountPaymentTermHistory']]

class AccountTaxInfo(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_tax_info_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    country_of_tax_residence: Mapped[str | None]
    is_vat: Mapped[bool | None]
    is_sba_signed: Mapped[bool | None]
    is_vat_exempt: Mapped[bool | None]
    is_tax_treaty_claimed: Mapped[bool | None]
    tax_employment_type: Mapped[str | None]
    is_wht_applicable: Mapped[bool | None]
    is_resident_of_spanish_islands: Mapped[bool | None]
    certificate_of_residence_expiration_date: Mapped[datetime.date | None]
    wht_rate_override: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    account_tax_info_history: Mapped[list['AccountTaxInfoHistory']]

class AccountingPeriod(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    accounting_period_id: Mapped[decimal.Decimal | None]
    accounting_period_status: Mapped[str | None]
    oa_accounting_period_id: Mapped[decimal.Decimal | None]
    accounting_period_name: Mapped[str | None]
    closed_date: Mapped[Any | None]
    contract_type: Mapped[str | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    is_visible: Mapped[bool | None]
    visible_reason: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    statement_period: Mapped[StatementPeriod | None]
    accounting_run: Mapped[list['AccountingRun']]
    sales_file: Mapped[list['SalesFile']]

class ExchangeRate(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    exchange_rate_id: Mapped[decimal.Decimal | None]
    from_currency_code: Mapped[str | None]
    to_currency_code: Mapped[str | None]
    accounting_period_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    rate: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    statement_period: Mapped[StatementPeriod | None]

class FileUpload(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    file_upload_id: Mapped[decimal.Decimal]
    file_upload_config_id: Mapped[decimal.Decimal | None]
    file_key: Mapped[str | None]
    original_file_name: Mapped[str | None]
    file_size_bytes: Mapped[decimal.Decimal | None]
    file_type: Mapped[str | None]
    mime_type: Mapped[str | None]
    s3_bucket: Mapped[str | None]
    s3_key: Mapped[str | None]
    md5sum: Mapped[str | None]
    upload_status: Mapped[str | None]
    multipart_upload_id: Mapped[str | None]
    total_parts: Mapped[decimal.Decimal | None]
    upload_metadata: Mapped[Any | None]
    error_message: Mapped[str | None]
    completed_at: Mapped[Any | None]
    expires_at: Mapped[Any | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    file_upload_config: Mapped[FileUploadConfig | None]
    statement_period_adjustment_file: Mapped[list['StatementPeriodAdjustmentFile']]
    worksheet_flowthrough_batch: Mapped[list['WorksheetFlowthroughBatch']]

class LedgerAdjustmentDetail(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_detail_id: Mapped[decimal.Decimal]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    apply_to_statement_period_id: Mapped[decimal.Decimal | None]
    distribution_type: Mapped[str | None]
    reference_adjustment_type_id: Mapped[decimal.Decimal | None]
    upc: Mapped[str | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    reference_adjustment_type: Mapped[ReferenceAdjustmentType | None]
    ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']]

class Payee(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_id: Mapped[decimal.Decimal | None]
    payee_name: Mapped[str | None]
    payee_type: Mapped[str | None]
    payment_schedule: Mapped[str | None]
    payment_agreement_type: Mapped[str | None]
    payment_method: Mapped[str | None]
    currency_code: Mapped[str | None]
    payment_minimum: Mapped[decimal.Decimal | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    payoneer_client_reference_id: Mapped[str | None]
    payoneer_assigned_id: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    payoneer_program: Mapped[ReferencePayoneerProgram | None]
    reference_payment_type: Mapped[ReferencePaymentType | None]
    payee_collaborator: Mapped[list['PayeeCollaborator']]
    payee_contact: Mapped[list['PayeeContact']]
    contract_payee: Mapped[list['ContractPayee']]

class PaymentEntityPayoneerProgram(Base):
    __tablename__: str
    __table_args__: Incomplete
    payment_entity_payoneer_program_id: Mapped[decimal.Decimal]
    payment_currency: Mapped[str | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    payment_entity_id: Mapped[decimal.Decimal | None]
    agreement_type_id: Mapped[decimal.Decimal | None]
    reference_payment_entity_id: Mapped[decimal.Decimal | None]
    agreement_type: Mapped[ReferenceAgreementType | None]
    payoneer_program: Mapped[ReferencePayoneerProgram | None]
    reference_payment_entity: Mapped[ReferencePaymentEntity | None]

class PaymentGroupPayment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_id: Mapped[decimal.Decimal | None]
    payment_group_id: Mapped[decimal.Decimal | None]
    payment_status: Mapped[str | None]
    payment_name: Mapped[str | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    payment_group: Mapped[PaymentGroup | None]
    statement_period: Mapped[StatementPeriod | None]
    payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']]
    payment_group_payment_batch: Mapped[list['PaymentGroupPaymentBatch']]
    report_payment_group_payment: Mapped[list['ReportPaymentGroupPayment']]

class PaymentHold(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_hold_id: Mapped[decimal.Decimal | None]
    start_date: Mapped[datetime.date | None]
    reason: Mapped[str | None]
    payee_id: Mapped[decimal.Decimal | None]
    is_on_hold: Mapped[bool | None]
    account_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    payment_hold_history: Mapped[list['PaymentHoldHistory']]

class ReferenceSigningEntity(Base, SoftDeleteMixin):
    __tablename__: str
    __table_args__: Incomplete
    reference_signing_entity_id: Mapped[decimal.Decimal]
    legal_name: Mapped[str | None]
    company_registration_number: Mapped[str | None]
    address: Mapped[str | None]
    vat_number: Mapped[str | None]
    company_code: Mapped[str | None]
    reference_payment_entity_id: Mapped[decimal.Decimal | None]
    reference_sap_profit_center_id: Mapped[decimal.Decimal | None]
    tax_entity_company_code: Mapped[str | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    reference_payment_entity: Mapped[ReferencePaymentEntity | None]
    reference_sap_profit_center: Mapped[ReferenceSapProfitCenter | None]
    contract: Mapped[list['Contract']]
    contract_history: Mapped[list['ContractHistory']]
    contract_template: Mapped[list['ContractTemplate']]

class ReportCustom(Base, CreateMixin):
    __tablename__: str
    __table_args__: Incomplete
    report_custom_id: Mapped[decimal.Decimal]
    dimension: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    report_custom_status: Mapped[str | None]
    file_location: Mapped[str | None]
    statement_period_ids: Mapped[str | None]
    dimension_secondary: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    dimension_primary: Mapped[str | None]
    revenue_type: Mapped[str | None]
    dimension_row: Mapped[str | None]
    dimension_column: Mapped[str | None]
    subaccount_id: Mapped[decimal.Decimal | None]
    number_format: Mapped[str | None]
    file_type: Mapped[str | None]
    filters: Mapped[Any | None]
    revenue_display_type: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]

class ScheduleAttachment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    schedule_attachment_id: Mapped[decimal.Decimal]
    target_id: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    target_type: Mapped[str | None]
    deleted_by: Mapped[str | None]
    schedule_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    schedule: Mapped[Schedule | None]

class ScheduleHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    schedule_history_id: Mapped[decimal.Decimal]
    schedule_id: Mapped[decimal.Decimal | None]
    schedule_name: Mapped[str | None]
    conditions: Mapped[Any | None]
    target_type: Mapped[str | None]
    target_id: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    schedule: Mapped[Schedule | None]

class StatementAttachment(Base, CreateMixin):
    __tablename__: str
    __table_args__: Incomplete
    statement_attachment_id: Mapped[decimal.Decimal]
    invoice_number: Mapped[str | None]
    file_location: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    statement_attachment_type: Mapped[str | None]
    statement_attachment_status: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    failure_reason: Mapped[str | None]
    file_type: Mapped[str | None]
    number_format: Mapped[str | None]
    subaccount_id: Mapped[decimal.Decimal | None]
    statement_period_ids: Mapped[str | None]
    filters: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    statement_period: Mapped[StatementPeriod | None]

class StatementPeriodPaymentEntity(Base):
    __tablename__: str
    __table_args__: Incomplete
    statement_period_payment_entity_id: Mapped[decimal.Decimal]
    payment_entity_id: Mapped[decimal.Decimal | None]
    is_visible_to_customer: Mapped[bool | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    reference_payment_entity_id: Mapped[decimal.Decimal | None]
    reference_payment_entity: Mapped[ReferencePaymentEntity | None]
    statement_period: Mapped[StatementPeriod | None]

class VatSummaryFile(Base, CreateMixin):
    __tablename__: str
    __table_args__: Incomplete
    vat_summary_file_id: Mapped[decimal.Decimal]
    statement_period_id: Mapped[decimal.Decimal | None]
    file_location: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    statement_period: Mapped[StatementPeriod | None]

class AccountPayeeHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_history_id: Mapped[decimal.Decimal]
    payoneer_session_id: Mapped[str | None]
    payoneer_iframe_url_date: Mapped[datetime.date | None]
    account_id: Mapped[decimal.Decimal | None]
    payoneer_iframe_url: Mapped[str | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    payoneer_payee_name: Mapped[str | None]
    payoneer_payee_id: Mapped[decimal.Decimal | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    sap_vendor_id: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    description: Mapped[str | None]
    payment_description: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    account_payee: Mapped[AccountPayee | None]

class AccountPayeeKycNotification(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_kyc_notification_id: Mapped[decimal.Decimal]
    account_payee_id: Mapped[decimal.Decimal | None]
    file_upload_link: Mapped[str | None]
    requirement_id: Mapped[str | None]
    sub_requirement_id: Mapped[str | None]
    sub_requirement_status_id: Mapped[decimal.Decimal | None]
    entity_reference_type_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    requirement_type_id: Mapped[decimal.Decimal | None]
    possible_sub_requirement_types: Mapped[str | None]
    entity_reference_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    account_payee: Mapped[AccountPayee | None]

class AccountPayeeTaxFormInfo(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payee_tax_form_info_id: Mapped[decimal.Decimal]
    tax_form_type: Mapped[str | None]
    account_payee_id: Mapped[decimal.Decimal | None]
    signed_date: Mapped[datetime.date | None]
    expiration_date: Mapped[datetime.date | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    revision_id: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    account_payee: Mapped[AccountPayee | None]

class AccountPaymentTermHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_payment_term_history_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    payment_minimum: Mapped[decimal.Decimal | None]
    payment_schedule: Mapped[str | None]
    account_payment_term_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    agreement_type_id: Mapped[decimal.Decimal | None]
    signing_entity_id: Mapped[decimal.Decimal | None]
    payment_entity_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    account_payment_term: Mapped[AccountPaymentTerm | None]
    payment_entity: Mapped[ReferencePaymentEntity | None]

class AccountTaxInfoHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_tax_info_history_id: Mapped[decimal.Decimal]
    account_tax_info_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    country_of_tax_residence: Mapped[str | None]
    is_vat: Mapped[bool | None]
    is_sba_signed: Mapped[bool | None]
    is_vat_exempt: Mapped[bool | None]
    is_tax_treaty_claimed: Mapped[bool | None]
    tax_employment_type: Mapped[str | None]
    is_wht_applicable: Mapped[bool | None]
    is_resident_of_spanish_islands: Mapped[bool | None]
    certificate_of_residence_expiration_date: Mapped[datetime.date | None]
    wht_rate_override: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    account_tax_info: Mapped[AccountTaxInfo | None]

class AccountingRun(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    accounting_run_id: Mapped[decimal.Decimal | None]
    start_date: Mapped[Any | None]
    payee_count: Mapped[decimal.Decimal | None]
    accounting_period_id: Mapped[decimal.Decimal | None]
    summary_export_url: Mapped[str | None]
    run_controller_id: Mapped[decimal.Decimal | None]
    run_status: Mapped[str | None]
    end_date: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    accounting_period: Mapped[AccountingPeriod | None]
    run_controller: Mapped[RunController | None]
    ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']]
    ledger_reserve_taken: Mapped[list['LedgerReserveTaken']]

class Contract(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_id: Mapped[decimal.Decimal | None]
    term_start: Mapped[datetime.date | None]
    contract_name: Mapped[str | None]
    contract_type: Mapped[str | None]
    term_end: Mapped[datetime.date | None]
    sap_created_at: Mapped[Any | None]
    reference_sap_profit_center_id: Mapped[decimal.Decimal | None]
    sax_agreement_id: Mapped[str | None]
    note: Mapped[str | None]
    summary_note: Mapped[str | None]
    general_note: Mapped[str | None]
    reference_signing_entity_id: Mapped[decimal.Decimal | None]
    initial_start_date: Mapped[datetime.date | None]
    execution_date: Mapped[datetime.date | None]
    is_excluded_from_accounting_run: Mapped[bool | None]
    paythrough_contract_id: Mapped[decimal.Decimal | None]
    is_paythrough_contract: Mapped[bool | None]
    is_primary_contract: Mapped[bool | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    reference_sap_profit_center: Mapped[ReferenceSapProfitCenter | None]
    reference_signing_entity: Mapped[ReferenceSigningEntity | None]
    account_contract: Mapped[list['AccountContract']]
    account_contract_vat_detail: Mapped[list['AccountContractVatDetail']]
    contract_advance: Mapped[list['ContractAdvance']]
    contract_exclusion: Mapped[list['ContractExclusion']]
    contract_flowthrough: Mapped[list['ContractFlowthrough']]
    contract_lifecycle_schedule: Mapped[list['ContractLifecycleSchedule']]
    contract_mechanical_deduction: Mapped[list['ContractMechanicalDeduction']]
    contract_party: Mapped[list['ContractParty']]
    contract_payee: Mapped[list['ContractPayee']]
    contract_reserve: Mapped[list['ContractReserve']]
    contract_term: Mapped[list['ContractTerm']]
    earnings_transfer: Mapped[list['EarningsTransfer']]
    earnings_transfer_: Mapped[list['EarningsTransfer']]
    ledger_account: Mapped[list['LedgerAccount']]
    ledger_account_contract: Mapped[list['LedgerAccountContract']]
    ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']]
    ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']]
    ledger_deposit: Mapped[list['LedgerDeposit']]
    ledger_vat_summary: Mapped[list['LedgerVatSummary']]
    legacy_contract: Mapped[list['LegacyContract']]
    payment_allocation: Mapped[list['PaymentAllocation']]
    run_controller_contract: Mapped[list['RunControllerContract']]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']]
    worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']]
    worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']]
    contract_advance_history: Mapped[list['ContractAdvanceHistory']]
    contract_lifecycle: Mapped[list['ContractLifecycle']]
    contract_party_history: Mapped[list['ContractPartyHistory']]
    ledger_account_contract_current_balance: Mapped[
        list['LedgerAccountContractCurrentBalance']
    ]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]
    ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']]
    ledger_contract_flowthrough_current_balance: Mapped[
        list['LedgerContractFlowthroughCurrentBalance']
    ]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]
    worksheet_account_contract_payable_after_tax: Mapped[
        list['WorksheetAccountContractPayableAfterTax']
    ]
    payment_group_payment_account_detail: Mapped[
        list['PaymentGroupPaymentAccountDetail']
    ]
    worksheet_account_contract_payable_details: Mapped[
        list['WorksheetAccountContractPayableDetails']
    ]

class ContractHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_history_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    reference_sap_profit_center_id: Mapped[decimal.Decimal | None]
    sap_created_at: Mapped[Any | None]
    contract_name: Mapped[str | None]
    term_end: Mapped[datetime.date | None]
    contract_type: Mapped[str | None]
    term_start: Mapped[datetime.date | None]
    note: Mapped[str | None]
    summary_note: Mapped[str | None]
    general_note: Mapped[str | None]
    reference_signing_entity_id: Mapped[decimal.Decimal | None]
    initial_start_date: Mapped[datetime.date | None]
    execution_date: Mapped[datetime.date | None]
    is_excluded_from_accounting_run: Mapped[bool | None]
    is_primary_contract: Mapped[bool | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    reference_sap_profit_center: Mapped[ReferenceSapProfitCenter | None]
    reference_signing_entity: Mapped[ReferenceSigningEntity | None]

class ContractTemplate(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_template_id: Mapped[decimal.Decimal]
    run_controller_id: Mapped[decimal.Decimal | None]
    term_duration_year: Mapped[decimal.Decimal | None]
    template_name: Mapped[str | None]
    contract_terms: Mapped[Any | None]
    contract_territories: Mapped[Any | None]
    contract_type: Mapped[str | None]
    contract_exclusions: Mapped[Any | None]
    reference_sap_profit_center_id: Mapped[decimal.Decimal | None]
    reference_signing_entity_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    reference_signing_entity: Mapped[ReferenceSigningEntity | None]
    run_controller: Mapped[RunController | None]

class PayeeCollaborator(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_collaborator_id: Mapped[decimal.Decimal]
    collaborator_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    account: Mapped[Account | None]
    payee: Mapped[Payee | None]

class PayeeContact(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_contact_id: Mapped[decimal.Decimal | None]
    country_code: Mapped[str | None]
    state_province_region: Mapped[str | None]
    address_1: Mapped[str | None]
    phone_number: Mapped[str | None]
    contact_name: Mapped[str | None]
    email: Mapped[str | None]
    payee_id: Mapped[decimal.Decimal | None]
    city: Mapped[str | None]
    postal_code: Mapped[str | None]
    address_2: Mapped[str | None]
    address_3: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    payee: Mapped[Payee | None]

class PaymentGroupPaymentAccount(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_account_id: Mapped[decimal.Decimal]
    deleted_at: Mapped[Any | None]
    note: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    last_payment: Mapped[decimal.Decimal | None]
    current_balance: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    payment_group_payment_id: Mapped[decimal.Decimal | None]
    prior_payment_group_payment_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    balance_after_tax: Mapped[decimal.Decimal | None]
    tax_withholding: Mapped[decimal.Decimal | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    last_statement_period_id: Mapped[decimal.Decimal | None]
    current_statement_period_id: Mapped[decimal.Decimal | None]
    contracts_payable: Mapped[Any | None]
    vat_amount: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    current_statement_period: Mapped[StatementPeriod | None]
    last_statement_period: Mapped[StatementPeriod | None]
    payment_group_payment: Mapped[PaymentGroupPayment | None]
    payoneer_program: Mapped[ReferencePayoneerProgram | None]
    payment_group_payment_batch_account: Mapped[list['PaymentGroupPaymentBatchAccount']]
    payment_group_payment_account_detail: Mapped[
        list['PaymentGroupPaymentAccountDetail']
    ]

class PaymentGroupPaymentBatch(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_batch_id: Mapped[decimal.Decimal]
    payment_group_payment_id: Mapped[decimal.Decimal | None]
    batch_num: Mapped[decimal.Decimal | None]
    payoneer_program_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    payment_group_payment: Mapped[PaymentGroupPayment | None]
    payoneer_program: Mapped[ReferencePayoneerProgram | None]
    payment_group_payment_batch_account: Mapped[list['PaymentGroupPaymentBatchAccount']]

class PaymentHoldHistory(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_hold_history_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    payment_hold_id: Mapped[decimal.Decimal | None]
    start_date: Mapped[datetime.date | None]
    reason: Mapped[str | None]
    end_date: Mapped[datetime.date | None]
    is_on_hold: Mapped[bool | None]
    account_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    payment_hold: Mapped[PaymentHold | None]

class ReportPaymentGroupPayment(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    report_payment_group_payment_id: Mapped[decimal.Decimal]
    payment_group_payment_id: Mapped[decimal.Decimal | None]
    report_type: Mapped[str | None]
    report_export_url: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    payment_group_payment: Mapped[PaymentGroupPayment | None]

class SalesFile(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    accounting_period_id: Mapped[decimal.Decimal | None]
    row_count: Mapped[decimal.Decimal | None]
    sales_file_status: Mapped[str | None]
    main_url: Mapped[str | None]
    amount_usd: Mapped[decimal.Decimal | None]
    sales_file_id: Mapped[decimal.Decimal | None]
    file_name: Mapped[str | None]
    staging_url: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    accounting_period: Mapped[AccountingPeriod | None]

class StatementPeriodAdjustmentFile(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    statement_period_adjustment_file_id: Mapped[decimal.Decimal]
    file_name: Mapped[str | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    valid_file_location: Mapped[str | None]
    invalid_file_location: Mapped[str | None]
    valid_row_count: Mapped[decimal.Decimal | None]
    invalid_row_count: Mapped[decimal.Decimal | None]
    valid_row_amount: Mapped[decimal.Decimal | None]
    invalid_row_amount: Mapped[decimal.Decimal | None]
    md5sum: Mapped[str | None]
    error_type: Mapped[str | None]
    total_rounded_amount_multicurrency: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    total_file_amount_multicurrency: Mapped[decimal.Decimal | None]
    source_file_upload_id: Mapped[decimal.Decimal | None]
    batch_type: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    source_file_upload: Mapped[FileUpload | None]
    statement_period: Mapped[StatementPeriod | None]
    worksheet_adjustment: Mapped[list['WorksheetAdjustment']]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]

class WorksheetFlowthroughBatch(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_flowthrough_batch_id: Mapped[decimal.Decimal]
    statement_period_id: Mapped[decimal.Decimal | None]
    source_file_upload_id: Mapped[decimal.Decimal | None]
    batch_type: Mapped[str | None]
    batch_status: Mapped[str | None]
    errors: Mapped[Any | None]
    error_row_count: Mapped[decimal.Decimal | None]
    row_level_error_count: Mapped[decimal.Decimal | None]
    total_row_count: Mapped[decimal.Decimal | None]
    total_amount: Mapped[decimal.Decimal | None]
    total_amount_raw: Mapped[float | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    source_file_upload: Mapped[FileUpload | None]
    statement_period: Mapped[StatementPeriod | None]

class AccountContract(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_id: Mapped[decimal.Decimal | None]
    account_contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    is_primary_for_calc: Mapped[bool | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]

class AccountContractVatDetail(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_contract_vat_detail_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    is_vat_registered: Mapped[bool | None]
    is_vat_eligible: Mapped[bool | None]
    company_code: Mapped[str | None]
    vat_country: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]

class ContractAdvance(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_advance_id: Mapped[decimal.Decimal]
    deleted_by: Mapped[str | None]
    amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    milestone: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    advance_description: Mapped[str | None]
    milestone_description: Mapped[str | None]
    note: Mapped[str | None]
    milestone_date: Mapped[datetime.date | None]
    advance_status: Mapped[str | None]
    reference_advance_payment_method_id: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    withholding_tax_amount: Mapped[decimal.Decimal | None]
    amount_after_withholding_and_vat: Mapped[decimal.Decimal | None]
    us_source_income_rate: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    contract: Mapped[Contract | None]
    reference_advance_payment_method: Mapped[ReferenceAdvancePaymentMethod | None]
    reference_payment_type: Mapped[ReferencePaymentType | None]
    contract_advance_history: Mapped[list['ContractAdvanceHistory']]
    ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']]
    worksheet_payment_contract_advance: Mapped[list['WorksheetPaymentContractAdvance']]

class ContractExclusion(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_exclusion_id: Mapped[decimal.Decimal]
    exclusions: Mapped[Any | None]
    contract_id: Mapped[decimal.Decimal | None]
    contract: Mapped[Contract | None]

class ContractFlowthrough(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_flowthrough_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    reference_flowthrough_calculation_id: Mapped[decimal.Decimal | None]
    flowthrough_rate: Mapped[decimal.Decimal | None]
    flowthrough_status: Mapped[str | None]
    has_automatic_shutoff: Mapped[bool | None]
    recoupment_cap: Mapped[decimal.Decimal | None]
    status_last_modified_by: Mapped[str | None]
    status_last_modified: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    previous_flowthrough_status: Mapped[str | None]
    calculation_comment: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    contract: Mapped[Contract | None]
    reference_flowthrough_calculation: Mapped[ReferenceFlowthroughCalculation | None]

class ContractLifecycleSchedule(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_lifecycle_schedule_id: Mapped[decimal.Decimal]
    schedule_end: Mapped[datetime.date | None]
    renewal_type: Mapped[str | None]
    termination_notice_detail_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    collection_period_detail_id: Mapped[decimal.Decimal | None]
    renewal_offset_detail_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    collection_period_detail: Mapped[ContractLifecycleScheduleDetail | None]
    contract: Mapped[Contract | None]
    renewal_offset_detail: Mapped[ContractLifecycleScheduleDetail | None]
    termination_notice_detail: Mapped[ContractLifecycleScheduleDetail | None]
    contract_lifecycle: Mapped[list['ContractLifecycle']]

class ContractMechanicalDeduction(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_mechanical_deduction_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    territory: Mapped[str | None]
    mechanical_type: Mapped[Any | None]
    admin_type: Mapped[str | None]
    admin_fee: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    contract: Mapped[Contract | None]

class ContractParty(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_party_id: Mapped[decimal.Decimal]
    deleted_at: Mapped[Any | None]
    target_type: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    target_id: Mapped[str | None]
    deleted_by: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    contract: Mapped[Contract | None]
    contract_party_history: Mapped[list['ContractPartyHistory']]

class ContractPayee(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_payee_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    payee_id: Mapped[decimal.Decimal | None]
    contract: Mapped[Contract | None]
    payee: Mapped[Payee | None]

class ContractReserve(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_reserve_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    installments_in_months: Mapped[decimal.Decimal | None]
    reserve_release_offset_in_months: Mapped[decimal.Decimal | None]
    conditions: Mapped[Any | None]
    reserve_rate: Mapped[decimal.Decimal | None]
    release_schedule: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    contract: Mapped[Contract | None]
    ledger_reserve_taken: Mapped[list['LedgerReserveTaken']]

class ContractTerm(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_id: Mapped[decimal.Decimal | None]
    term_type: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    attachments: Mapped[Any | None]
    is_base_term: Mapped[bool | None]
    attachments_relations: Mapped[Any | None]
    contract_term_name: Mapped[str | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    contract: Mapped[Contract | None]
    contract_term_condition: Mapped[list['ContractTermCondition']]
    contract_term_schedule: Mapped[list['ContractTermSchedule']]
    contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']]

class EarningsTransfer(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    earnings_transfer_id: Mapped[decimal.Decimal]
    from_contract_id: Mapped[decimal.Decimal | None]
    to_contract_id: Mapped[decimal.Decimal | None]
    transfer_type: Mapped[str | None]
    transfer_amount: Mapped[decimal.Decimal | None]
    comment: Mapped[str | None]
    rate_type: Mapped[str | None]
    input: Mapped[str | None]
    negative: Mapped[bool | None]
    active: Mapped[bool | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    from_contract: Mapped[Contract | None]
    to_contract: Mapped[Contract | None]

class LedgerAccount(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    currency_code: Mapped[str | None]
    current_balance: Mapped[decimal.Decimal | None]
    currency_amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    previous_balance: Mapped[decimal.Decimal | None]
    ledger_account_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_account_current_balance: Mapped[list['LedgerAccountCurrentBalance']]

class LedgerAccountContract(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_account_contract_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    previous_balance: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    current_balance: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    currency_amount: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_account_contract_current_balance: Mapped[
        list['LedgerAccountContractCurrentBalance']
    ]
    worksheet_account_contract_closing_balance: Mapped[
        list['WorksheetAccountContractClosingBalance']
    ]

class LedgerAccountingRunBalance(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_accounting_run_balance_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    mechanical_deduction_total: Mapped[decimal.Decimal | None]
    accounting_run_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    mechanical_deduction_admin_fee_total: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    total_adjustment_amount: Mapped[decimal.Decimal | None]
    total_gross_revenue_amount: Mapped[decimal.Decimal | None]
    total_net_revenue_amount: Mapped[decimal.Decimal | None]
    distribution_fee: Mapped[decimal.Decimal | None]
    adjusted_net_revenue: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    abacus_event: Mapped[AbacusEvent | None]
    accounting_run: Mapped[AccountingRun | None]
    contract: Mapped[Contract | None]

class LedgerContractFlowthrough(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_contract_flowthrough_id: Mapped[decimal.Decimal]
    abacus_event_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    currency_amount: Mapped[decimal.Decimal | None]
    previous_balance: Mapped[decimal.Decimal | None]
    current_balance: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_contract_flowthrough_current_balance: Mapped[
        list['LedgerContractFlowthroughCurrentBalance']
    ]

class LedgerDeposit(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payee_id: Mapped[decimal.Decimal | None]
    remaining_amount: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    rounded_amount: Mapped[decimal.Decimal | None]
    ledger_deposit_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    ledger_type: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]

class LedgerVatSummary(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_vat_summary_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    base_amount_payee_currency: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    vat_amount_vat_currency: Mapped[decimal.Decimal | None]
    abacus_exempt_reason: Mapped[str | None]
    vat_category: Mapped[str | None]
    vat_amount_payee_currency: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    payee_currency_code: Mapped[str | None]
    vat_currency_code: Mapped[str | None]
    vat_rate: Mapped[decimal.Decimal | None]
    net_amount_payee_currency: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    is_reporting_only: Mapped[bool | None]
    description: Mapped[str | None]
    wht_amount_payee_currency: Mapped[decimal.Decimal | None]
    wht_amount_vat_currency: Mapped[decimal.Decimal | None]
    wht_rate: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    activity_statement_period: Mapped[StatementPeriod | None]
    contract: Mapped[Contract | None]
    statement_period: Mapped[StatementPeriod | None]

class LegacyContract(Base):
    __tablename__: str
    __table_args__: Incomplete
    legacy_contract_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    oa_contract_id: Mapped[decimal.Decimal | None]
    contract: Mapped[Contract | None]

class PaymentAllocation(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_allocation_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    payee_type: Mapped[str | None]
    payee_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    payment_allocation_type: Mapped[str | None]
    amount_to_payment: Mapped[decimal.Decimal | None]
    payment_status: Mapped[str | None]
    payment_status_modified: Mapped[Any | None]
    amount_to_ledger: Mapped[decimal.Decimal | None]
    ledger_status: Mapped[str | None]
    ledger_status_modified: Mapped[Any | None]
    currency_code: Mapped[str | None]
    description: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    contract: Mapped[Contract | None]
    statement_period: Mapped[StatementPeriod | None]
    payment_allocation_ledger_adjustment: Mapped[
        list['PaymentAllocationLedgerAdjustment']
    ]

class PaymentGroupPaymentBatchAccount(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_batch_account_id: Mapped[decimal.Decimal]
    payment_group_payment_batch_id: Mapped[decimal.Decimal | None]
    payment_group_payment_account_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    payment_group_payment_account: Mapped[PaymentGroupPaymentAccount | None]
    payment_group_payment_batch: Mapped[PaymentGroupPaymentBatch | None]

class RunControllerContract(Base, AuditMixin, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    run_controller_contract_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    run_controller_id: Mapped[decimal.Decimal | None]
    audit_id: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    contract: Mapped[Contract | None]
    run_controller: Mapped[RunController | None]

class WorksheetAdjustment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_adjustment_id: Mapped[decimal.Decimal]
    reference_adjustment_type_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    adjustment_amount: Mapped[decimal.Decimal | None]
    statement_period_adjustment_file_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    adjustment_currency_code: Mapped[str | None]
    internal_note: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    apply_to_statement_period_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    activity_statement_period: Mapped[StatementPeriod | None]
    apply_to_statement_period: Mapped[StatementPeriod | None]
    contract: Mapped[Contract | None]
    reference_adjustment_type: Mapped[ReferenceAdjustmentType | None]
    statement_period_adjustment_file: Mapped[StatementPeriodAdjustmentFile | None]
    ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']]
    worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']]
    ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']]

class WorksheetPaymentCustom(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_payment_custom_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    amount: Mapped[decimal.Decimal | None]
    withholding_tax_amount: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    amount_after_withholding_and_vat: Mapped[decimal.Decimal | None]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    payment_name: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    withholding_tax_rate: Mapped[decimal.Decimal | None]
    vat_rate: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    activity_statement_period: Mapped[StatementPeriod | None]
    contract: Mapped[Contract | None]
    statement_period: Mapped[StatementPeriod | None]

class WorksheetTaxCorrection(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_tax_correction_id: Mapped[decimal.Decimal]
    correction_statement_period_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    contract_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    payable_detail_type_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    currency_code: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    correction_statement_period: Mapped[StatementPeriod | None]
    payable_detail_type: Mapped[ReferencePayableDetailType | None]

class WorksheetTaxCorrectionVat(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_tax_correction_vat_id: Mapped[decimal.Decimal]
    payable_detail_type_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    correction_statement_period_id: Mapped[decimal.Decimal | None]
    base_amount_payee_currency: Mapped[decimal.Decimal | None]
    payee_currency_code: Mapped[str | None]
    vat_currency_code: Mapped[str | None]
    vat_rate: Mapped[decimal.Decimal | None]
    vat_amount_payee_currency: Mapped[decimal.Decimal | None]
    vat_amount_vat_currency: Mapped[decimal.Decimal | None]
    net_amount_payee_currency: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    vat_category: Mapped[str | None]
    wht_rate: Mapped[decimal.Decimal | None]
    wht_amount_payee_currency: Mapped[decimal.Decimal | None]
    wht_amount_vat_currency: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    correction_statement_period: Mapped[StatementPeriod | None]
    payable_detail_type: Mapped[ReferencePayableDetailType | None]

class ContractAdvanceHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_advance_history_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    contract_advance_id: Mapped[decimal.Decimal | None]
    advance_status: Mapped[str | None]
    amount: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    milestone_date: Mapped[datetime.date | None]
    note: Mapped[str | None]
    milestone: Mapped[str | None]
    advance_description: Mapped[str | None]
    milestone_description: Mapped[str | None]
    reference_advance_payment_method_id: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    withholding_tax_amount: Mapped[decimal.Decimal | None]
    amount_after_withholding_and_vat: Mapped[decimal.Decimal | None]
    us_source_income_rate: Mapped[decimal.Decimal | None]
    reference_payment_type_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    contract_advance: Mapped[ContractAdvance | None]
    contract: Mapped[Contract | None]
    reference_advance_payment_method: Mapped[ReferenceAdvancePaymentMethod | None]
    reference_payment_type: Mapped[ReferencePaymentType | None]

class ContractLifecycle(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_lifecycle_id: Mapped[decimal.Decimal]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    termination_notice_deadline: Mapped[datetime.date | None]
    termination_effective: Mapped[datetime.date | None]
    lifecycle_status: Mapped[str | None]
    lifecycle_term_start: Mapped[datetime.date | None]
    lifecycle_term_end: Mapped[datetime.date | None]
    termination_notice_received: Mapped[datetime.date | None]
    collection_end: Mapped[datetime.date | None]
    contract_lifecycle_schedule_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    renewal_effective: Mapped[datetime.date | None]
    collection_start: Mapped[datetime.date | None]
    last_renewed: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    contract: Mapped[Contract | None]
    contract_lifecycle_schedule: Mapped[ContractLifecycleSchedule | None]

class ContractPartyHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_party_history_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    target_type: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    target_id: Mapped[str | None]
    contract_party_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    contract: Mapped[Contract | None]
    contract_party: Mapped[ContractParty | None]

class ContractTermCondition(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_condition_id: Mapped[decimal.Decimal | None]
    priority: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    contract_term_id: Mapped[decimal.Decimal | None]
    conditions: Mapped[Any | None]
    term_rate: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    contract_term_condition_name: Mapped[str | None]
    commission: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    contract_term: Mapped[ContractTerm | None]

class ContractTermSchedule(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_schedule_id: Mapped[decimal.Decimal]
    contract_term_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    schedule_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    contract_term: Mapped[ContractTerm | None]
    schedule: Mapped[Schedule | None]
    contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']]

class LedgerAccountContractCurrentBalance(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_account_contract_current_balance_id: Mapped[decimal.Decimal]
    contract_id: Mapped[decimal.Decimal | None]
    ledger_account_contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_account_contract: Mapped[LedgerAccountContract | None]

class LedgerAccountCurrentBalance(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    account_id: Mapped[decimal.Decimal | None]
    ledger_account_id: Mapped[decimal.Decimal | None]
    ledger_account_current_balance_id: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    account: Mapped[Account | None]
    ledger_account: Mapped[LedgerAccount | None]

class LedgerAdjustmentApplied(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_applied_id: Mapped[decimal.Decimal]
    adjustment_currency_code: Mapped[str | None]
    adjustment_amount_payee_currency: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    ledger_adjustment_id: Mapped[decimal.Decimal | None]
    adjustment_amount: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    adjustment_payee_currency_code: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    worksheet_adjustment_id: Mapped[decimal.Decimal | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_adjustment: Mapped[LedgerAdjustment | None]
    statement_period: Mapped[StatementPeriod | None]
    worksheet_adjustment: Mapped[WorksheetAdjustment | None]
    payment_allocation_ledger_adjustment: Mapped[
        list['PaymentAllocationLedgerAdjustment']
    ]
    ledger_adjustment_adjustment_detail_applied: Mapped[
        list['LedgerAdjustmentAdjustmentDetailApplied']
    ]

class LedgerContractAdvanceApplied(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_contract_advance_applied_id: Mapped[decimal.Decimal]
    statement_period_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    advance_currency_code: Mapped[str | None]
    contract_advance_id: Mapped[decimal.Decimal | None]
    advance_payee_currency_code: Mapped[str | None]
    advance_amount_payee_currency: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    advance_amount: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    withholding_tax_amount: Mapped[decimal.Decimal | None]
    amount_after_withholding_and_vat: Mapped[decimal.Decimal | None]
    vat_amount_payee_currency: Mapped[decimal.Decimal | None]
    withholding_tax_amount_payee_currency: Mapped[decimal.Decimal | None]
    amount_after_withholding_and_vat_payee_currency: Mapped[decimal.Decimal | None]
    us_source_income_rate: Mapped[decimal.Decimal | None]
    worksheet_payment_contract_advance_id: Mapped[decimal.Decimal | None]
    exchange_rate: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract_advance: Mapped[ContractAdvance | None]
    contract: Mapped[Contract | None]
    statement_period: Mapped[StatementPeriod | None]

class LedgerContractFlowthroughCurrentBalance(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_contract_flowthrough_current_balance_id: Mapped[decimal.Decimal]
    ledger_contract_flowthrough_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_contract_flowthrough: Mapped[LedgerContractFlowthrough | None]

class LedgerReserveTaken(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_reserve_taken_id: Mapped[decimal.Decimal]
    net_revenue_after_reserve: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    contract_reserve_id: Mapped[decimal.Decimal | None]
    reserve_amount: Mapped[decimal.Decimal | None]
    gross_returns: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    net_revenue: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    accounting_run_id: Mapped[decimal.Decimal | None]
    gross_sales: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    abacus_event: Mapped[AbacusEvent | None]
    accounting_run: Mapped[AccountingRun | None]
    contract_reserve: Mapped[ContractReserve | None]
    statement_period: Mapped[StatementPeriod | None]
    ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']]

class WorksheetAccountContractClosingBalance(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_account_contract_closing_balance_id: Mapped[decimal.Decimal]
    currency_code: Mapped[str | None]
    deleted_by: Mapped[str | None]
    incluides_tax_adjustments: Mapped[bool | None]
    contract_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    account_id: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    reference_payment_entity_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    ledger_account_contract_id: Mapped[decimal.Decimal | None]
    includes_tax_adjustments: Mapped[bool | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    ledger_account_contract: Mapped[LedgerAccountContract | None]
    reference_payment_entity: Mapped[ReferencePaymentEntity | None]
    statement_period: Mapped[StatementPeriod | None]
    worksheet_account_contract_payable_after_tax: Mapped[
        list['WorksheetAccountContractPayableAfterTax']
    ]

class WorksheetAdjustmentDetail(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_adjustment_detail_id: Mapped[decimal.Decimal]
    worksheet_adjustment_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    internal_note: Mapped[str | None]
    reference_adjustment_type_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    apply_to_statement_period_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    distribution_type: Mapped[str | None]
    activity_statement_period_id: Mapped[decimal.Decimal | None]
    upc: Mapped[str | None]
    statement_period_adjustment_file_id: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    note: Mapped[str | None]
    deleted_by: Mapped[str | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    account: Mapped[Account | None]
    activity_statement_period: Mapped[StatementPeriod | None]
    apply_to_statement_period: Mapped[StatementPeriod | None]
    contract: Mapped[Contract | None]
    reference_adjustment_type: Mapped[ReferenceAdjustmentType | None]
    statement_period_adjustment_file: Mapped[StatementPeriodAdjustmentFile | None]
    worksheet_adjustment: Mapped[WorksheetAdjustment | None]
    ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']]

class WorksheetPaymentContractAdvance(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_payment_contract_advance_id: Mapped[decimal.Decimal]
    deleted_at: Mapped[Any | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    vat_amount_payee_currency: Mapped[decimal.Decimal | None]
    salesforce_id: Mapped[str | None]
    withholding_tax_amount: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    ledger_contract_advance_applied_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    payment_name: Mapped[str | None]
    amount_after_withholding_and_vat: Mapped[decimal.Decimal | None]
    us_source_income_rate: Mapped[decimal.Decimal | None]
    amount_payee_currency: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    amount_after_withholding_and_vat_payee_currency: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    contract_advance_id: Mapped[decimal.Decimal | None]
    payee_currency_code: Mapped[str | None]
    exchange_rate_id: Mapped[decimal.Decimal | None]
    withholding_tax_amount_payee_currency: Mapped[decimal.Decimal | None]
    is_internal: Mapped[bool | None]
    exchange_rate: Mapped[decimal.Decimal | None]
    exchange_rate_statement_period_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    contract_advance: Mapped[ContractAdvance | None]
    exchange_rate_statement_period: Mapped[StatementPeriod | None]
    statement_period: Mapped[StatementPeriod | None]

class ContractTermScheduleHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    contract_term_schedule_history_id: Mapped[decimal.Decimal]
    contract_term_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    schedule_id: Mapped[decimal.Decimal | None]
    contract_term_schedule_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    contract_term: Mapped[ContractTerm | None]
    contract_term_schedule: Mapped[ContractTermSchedule | None]
    schedule: Mapped[Schedule | None]

class LedgerAdjustmentDetailApplied(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_detail_applied_id: Mapped[decimal.Decimal]
    adjustment_currency_code: Mapped[str | None]
    ledger_adjustment_detail_id: Mapped[decimal.Decimal | None]
    adjustment_amount: Mapped[decimal.Decimal | None]
    adjustment_amount_payee_currency: Mapped[decimal.Decimal | None]
    adjustment_payee_currency_code: Mapped[str | None]
    worksheet_adjustment_detail_id: Mapped[decimal.Decimal | None]
    worksheet_adjustment_id: Mapped[decimal.Decimal | None]
    apply_to_flowthrough_payment: Mapped[bool | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    ledger_adjustment_detail: Mapped[LedgerAdjustmentDetail | None]
    worksheet_adjustment_detail: Mapped[WorksheetAdjustmentDetail | None]
    worksheet_adjustment: Mapped[WorksheetAdjustment | None]
    ledger_adjustment_adjustment_detail_applied: Mapped[
        list['LedgerAdjustmentAdjustmentDetailApplied']
    ]

class LedgerReserveReleaseSchedule(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_reserve_release_schedule_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal | None]
    release_statement_period_id: Mapped[decimal.Decimal | None]
    ledger_reserve_taken_id: Mapped[decimal.Decimal | None]
    taken_statement_period_id: Mapped[decimal.Decimal | None]
    installment_amount: Mapped[decimal.Decimal | None]
    outstanding_amount_after_installment: Mapped[decimal.Decimal | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    currency_code: Mapped[str | None]
    early_release_date: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    ledger_reserve_taken: Mapped[LedgerReserveTaken | None]
    release_statement_period: Mapped[StatementPeriod | None]
    taken_statement_period: Mapped[StatementPeriod | None]
    ledger_reserve_release: Mapped[list['LedgerReserveRelease']]

class PaymentAllocationLedgerAdjustment(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    payment_allocation_ledger_adjustment_id: Mapped[decimal.Decimal]
    payment_allocation_id: Mapped[decimal.Decimal | None]
    ledger_adjustment_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    deleted_by: Mapped[str | None]
    ledger_adjustment_applied_id: Mapped[decimal.Decimal | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    ledger_adjustment_applied: Mapped[LedgerAdjustmentApplied | None]
    payment_allocation: Mapped[PaymentAllocation | None]

class WorksheetAccountContractPayableAfterTax(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_account_contract_payable_after_tax_id: Mapped[decimal.Decimal]
    payable_amount_post_tax: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    abacus_event_id: Mapped[decimal.Decimal | None]
    country_of_tax_residence: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    currency_code: Mapped[str | None]
    country_of_tax_policy: Mapped[str | None]
    account_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    tax_withholding_amount: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    worksheet_account_contract_closing_balance_id: Mapped[decimal.Decimal | None]
    payable_amount_pre_tax: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    created_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    abacus_event: Mapped[AbacusEvent | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    statement_period: Mapped[StatementPeriod | None]
    worksheet_account_contract_closing_balance: Mapped[
        WorksheetAccountContractClosingBalance | None
    ]
    payment_group_payment_account_detail: Mapped[
        list['PaymentGroupPaymentAccountDetail']
    ]
    worksheet_account_contract_payable_details: Mapped[
        list['WorksheetAccountContractPayableDetails']
    ]

class LedgerAdjustmentAdjustmentDetailApplied(Base):
    __tablename__: str
    __table_args__: Incomplete
    ledger_adjustment_adjustment_detail_applied_id: Mapped[decimal.Decimal]
    ledger_adjustment_applied_id: Mapped[decimal.Decimal | None]
    ledger_adjustment_detail_applied_id: Mapped[decimal.Decimal | None]
    ledger_adjustment_applied: Mapped[LedgerAdjustmentApplied | None]
    ledger_adjustment_detail_applied: Mapped[LedgerAdjustmentDetailApplied | None]

class LedgerReserveRelease(Base, CreateMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    ledger_reserve_release_id: Mapped[decimal.Decimal]
    abacus_event_id: Mapped[decimal.Decimal | None]
    installment_amount: Mapped[decimal.Decimal | None]
    ledger_reserve_release_schedule_id: Mapped[decimal.Decimal | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    created_by: Mapped[str | None]
    last_modified_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    abacus_event: Mapped[AbacusEvent | None]
    ledger_reserve_release_schedule: Mapped[LedgerReserveReleaseSchedule | None]
    statement_period: Mapped[StatementPeriod | None]

class PaymentGroupPaymentAccountDetail(Base, CreateMixin, SoftDeleteMixin, UpdateMixin):
    __tablename__: str
    __table_args__: Incomplete
    payment_group_payment_account_detail_id: Mapped[decimal.Decimal]
    currency_code: Mapped[str | None]
    worksheet_account_contract_payable_after_tax_id: Mapped[decimal.Decimal | None]
    deleted_at: Mapped[Any | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    payable_amount_post_tax: Mapped[decimal.Decimal | None]
    payable_amount_pre_tax: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    payment_group_payment_account_id: Mapped[decimal.Decimal | None]
    tax_withholding_amount: Mapped[decimal.Decimal | None]
    vat_amount: Mapped[decimal.Decimal | None]
    last_modified_by: Mapped[str | None]
    created_by: Mapped[str | None]
    last_modified: Mapped[Any | None]
    created_at: Mapped[Any | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    payment_group_payment_account: Mapped[PaymentGroupPaymentAccount | None]
    worksheet_account_contract_payable_after_tax: Mapped[
        WorksheetAccountContractPayableAfterTax | None
    ]

class WorksheetAccountContractPayableDetails(
    Base, CreateMixin, SoftDeleteMixin, UpdateMixin
):
    __tablename__: str
    __table_args__: Incomplete
    worksheet_account_contract_payable_details_id: Mapped[decimal.Decimal]
    amount_payable: Mapped[decimal.Decimal | None]
    currency: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    target_table: Mapped[str | None]
    deleted_at: Mapped[Any | None]
    reference_target_id: Mapped[decimal.Decimal | None]
    deleted_by: Mapped[str | None]
    statement_period_id: Mapped[decimal.Decimal | None]
    reference_target_table: Mapped[str | None]
    worksheet_account_contract_payable_after_tax_id: Mapped[decimal.Decimal | None]
    notes: Mapped[str | None]
    target_id: Mapped[decimal.Decimal | None]
    detail_type_id: Mapped[decimal.Decimal | None]
    payable_detail_type_id: Mapped[decimal.Decimal | None]
    last_modified: Mapped[Any | None]
    last_modified_by: Mapped[str | None]
    created_at: Mapped[Any | None]
    created_by: Mapped[str | None]
    account: Mapped[Account | None]
    contract: Mapped[Contract | None]
    payable_detail_type: Mapped[ReferencePayableDetailType | None]
    statement_period: Mapped[StatementPeriod | None]
    worksheet_account_contract_payable_after_tax: Mapped[
        WorksheetAccountContractPayableAfterTax | None
    ]
