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 BaseMixin as BaseMixin
from abacus_models.core.types import NormalizedDate as NormalizedDate

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

class AbacusAccountExclusions(Base):
    __tablename__: str
    __table_args__: Incomplete
    abacus_account_exclusion_id: Mapped[decimal.Decimal]
    account_id: Mapped[decimal.Decimal]
    account_name: Mapped[str | None]
    reason: Mapped[str | None]
    date_added: Mapped[datetime.date | None]
    added_by: Mapped[str | None]

t_abacus_fact_sales_unified_dbt: Incomplete
t_account_statement_periods_dbt: Incomplete
t_accounting_run_results_distro: Incomplete
t_accounting_run_results_distro_mech: Incomplete
t_accounting_run_results_distro_mech_staging: Incomplete
t_accounting_run_results_distro_staging: Incomplete
t_accounting_run_results_nr: Incomplete
t_accounting_run_results_nr_staging: Incomplete
t_accounting_run_results_publishing: Incomplete
t_adjustments_by_type_dbt: Incomplete

class BookedAccountContractSnapshot(Base):
    __tablename__: str
    __table_args__: Incomplete
    contract_snapshot_id: Mapped[decimal.Decimal]
    insert_date: Mapped[Any]
    period_id: Mapped[decimal.Decimal | None]
    contract_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    cont_start: Mapped[datetime.date | None]
    cont_end: Mapped[datetime.date | None]
    cont_version: Mapped[str | None]
    exclusive_entry: Mapped[str | None]
    orchrep_name: Mapped[str | None]
    carve_out: Mapped[str | None]
    qualification_level: Mapped[str | None]
    territory_carve_out: Mapped[str | None]
    dms_carve_out: Mapped[str | None]
    dms_master_carve_out: Mapped[str | None]
    encoding_fees_cap_back_ctlg: Mapped[float | None]
    encoding_fees_cap_new_release: Mapped[float | None]
    digital_split: Mapped[float | None]
    physical_split: Mapped[float | None]
    contract_type: Mapped[str | None]
    release_term: Mapped[decimal.Decimal | None]
    advance_payment: Mapped[float | None]
    advance_recoupable_percentage: Mapped[float | None]
    dig_distribution_type: Mapped[str | None]
    possible_track_restrictions: Mapped[str | None]
    oms_type: Mapped[str | None]
    oms_fee_percentage: Mapped[float | None]
    negotiated_changes: Mapped[str | None]
    negotiated_change_comments: Mapped[str | None]
    contract_complete: Mapped[str | None]
    signature_date: Mapped[datetime.date | None]
    marketing_restrictions: Mapped[str | None]
    orchard_assignment_right_restriction: Mapped[str | None]
    currency_id: Mapped[decimal.Decimal | None]
    third_party_responsibility: Mapped[str | None]
    third_party_responsibility_detail: Mapped[str | None]
    possible_track_restriction_detail: Mapped[str | None]
    is_amendment: Mapped[str | None]
    extend_until_recouped: Mapped[str | None]
    sync_admin_territory: Mapped[str | None]
    sync_admin_commission: Mapped[str | None]
    sync_admin_type_of_deal: Mapped[str | None]
    royalty_collection_territory: Mapped[str | None]
    royalty_collection_commission: Mapped[float | None]
    publishing_admin_commission: Mapped[float | None]
    publishing_admin_territory: Mapped[str | None]
    publishing_admin_limit_grant_of_rights: Mapped[str | None]
    publishing_admin_misc_provisions: Mapped[str | None]
    parent_account_contract_id: Mapped[decimal.Decimal | None]
    account_type: Mapped[str | None]
    vendor_proposed_term_id: Mapped[decimal.Decimal | None]
    sync_admin_response_time: Mapped[decimal.Decimal | None]
    ringtone_publishing_type: Mapped[str | None]
    physical_track_publishing_type: Mapped[str | None]
    unlimited_roll: Mapped[str | None]
    rollover_length_in_months: Mapped[decimal.Decimal | None]
    can_terminate: Mapped[str | None]
    youtube_composition_clause: Mapped[str | None]
    sx_royalty_collection_commission: Mapped[float | None]
    topspin_rate: Mapped[float | None]
    topspin_rate_territory: Mapped[str | None]
    notice_required_in_days: Mapped[decimal.Decimal | None]
    term_continues_until_recouped: Mapped[str | None]
    brand_split: Mapped[float | None]
    other_rights_option: Mapped[str | None]
    other_rights_text: Mapped[str | None]
    special_product_split: Mapped[float | None]
    special_product_carve_out: Mapped[str | None]
    payment_interval: Mapped[str | None]
    pay_after: Mapped[str | None]
    show_credit_card: Mapped[str | None]
    opt_out: Mapped[str | None]
    apply_fx_spread: Mapped[str | None]
    orchard_compilation_agreement: Mapped[str | None]
    orchard_compilation_split: Mapped[float | None]
    orchard_compilation_authorization_required: Mapped[str | None]
    reserve_rate: Mapped[decimal.Decimal | None]
    number_of_months_before_payout: Mapped[decimal.Decimal | None]
    number_of_installments: Mapped[decimal.Decimal | None]
    contract_terms: Mapped[str | None]
    service_type_id: Mapped[decimal.Decimal | None]

t_cdc_sales_file_delivery_dig_sales_testfile_abacus: Incomplete
t_cdc_sales_file_delivery_nr_sales_testfile_abacus: Incomplete
t_combined_adjustments_by_type_dbt: Incomplete
t_combined_adjustments_dbt: Incomplete
t_combined_advances_dbt: Incomplete
t_combined_expenses_by_artist_dbt: Incomplete
t_combined_expenses_by_imprint_dbt: Incomplete
t_combined_expenses_by_subaccount_dbt: Incomplete
t_combined_expenses_dbt: Incomplete
t_combined_payments_dbt: Incomplete
t_contract_dbt: Incomplete
t_contract_denormalized: Incomplete
t_contract_denormalized_distro: Incomplete
t_contract_denormalized_nr: Incomplete
t_contract_denormalized_nr_contrib_only: Incomplete
t_contract_transaction_distro: Incomplete
t_contract_transaction_nr: Incomplete
t_contract_transaction_nr_staging: Incomplete
t_contract_transaction_publishing: Incomplete
t_contract_transaction_staging: Incomplete

class CurrencyMap(Base):
    __tablename__: str
    __table_args__: Incomplete
    orchard_id: Mapped[decimal.Decimal | None]
    iso_code: Mapped[str | None]
    iso_number: Mapped[decimal.Decimal | None]

t_denorm_contract_term_condition_countries: Incomplete
t_denorm_contract_term_condition_products: Incomplete
t_denorm_contract_term_condition_stores: Incomplete
t_denorm_contract_term_condition_transaction_types: Incomplete
t_dim_transaction_subtype: Incomplete
t_eligible_legacy_contract_migration_snapshot_before_migration: Incomplete
t_expenses_by_artist_dbt: Incomplete
t_expenses_by_imprint_dbt: Incomplete
t_expenses_by_subaccount_dbt: Incomplete
t_expenses_dbt: Incomplete

class FactSalePublishing(Base):
    __tablename__: str
    __table_args__: Incomplete
    statment_detail_id: Mapped[decimal.Decimal]
    song_no: Mapped[decimal.Decimal]
    period_id: Mapped[decimal.Decimal | None]
    song: Mapped[str | None]
    writer: Mapped[str | None]
    source_name: Mapped[str | None]
    source_country: Mapped[str | None]
    source2_name: Mapped[str | None]
    source2_country: Mapped[str | None]
    source3_name: Mapped[str | None]
    source3_country: Mapped[str | None]
    source4_name: Mapped[str | None]
    source4_country: Mapped[str | None]
    income_type: Mapped[str | None]
    sh_id: Mapped[decimal.Decimal | None]
    rptg_pd: Mapped[str | None]
    sales_pd: Mapped[str | None]
    product_number: Mapped[str | None]
    artist_product_number: Mapped[str | None]
    units: Mapped[decimal.Decimal | None]
    song_share_percent: Mapped[decimal.Decimal | None]
    control_percent: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    royalty_percent: Mapped[decimal.Decimal | None]
    royalty_amount: Mapped[decimal.Decimal | None]
    df: Mapped[str | None]
    source_product: Mapped[str | None]
    iswc: Mapped[str | None]
    external_song_id: Mapped[decimal.Decimal | None]
    artist: Mapped[str | None]
    source_song: Mapped[str | None]
    isrc: Mapped[str | None]
    transaction_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    has_multiple_owners: Mapped[decimal.Decimal | None]
    vendor_controlled_share: Mapped[decimal.Decimal | None]
    adjusted_share: Mapped[decimal.Decimal | None]
    adjusted_gross: Mapped[decimal.Decimal | None]
    fee_percent: Mapped[decimal.Decimal | None]
    orchard_fee: Mapped[decimal.Decimal | None]
    net_revenue: Mapped[decimal.Decimal | None]

t_ledger_summary_dbt: Incomplete
t_manufactured_upcs: Incomplete
t_meta_track_dbt: Incomplete

class OaMigratedAbacusContracts(Base):
    __tablename__: str
    __table_args__: Incomplete
    oa_migrated_abacus_contract_id: Mapped[decimal.Decimal]
    vendor_id: Mapped[decimal.Decimal | None]
    account_name: Mapped[str | None]
    contract_id: Mapped[decimal.Decimal | None]
    summary: Mapped[str | None]

t_payments_dbt: Incomplete
t_revenue_by_activity_month_dbt: Incomplete
t_revenue_by_artist_dbt: Incomplete
t_revenue_by_country_dbt: Incomplete
t_revenue_by_imprint_dbt: Incomplete
t_revenue_by_product_distro_dbt: Incomplete
t_revenue_by_project_dbt: Incomplete
t_revenue_by_recording_distro_dbt: Incomplete
t_revenue_by_recording_nr_dbt: Incomplete
t_revenue_by_statement_period_dbt: Incomplete
t_revenue_by_store_dbt: Incomplete
t_revenue_by_subaccount_dbt: Incomplete
t_revenue_by_track_dbt: Incomplete
t_revenue_by_transaction_type_dbt: Incomplete
t_revenue_distro_dbt: Incomplete
t_revenue_nr_dbt: Incomplete
t_sax_agreement_denorm: Incomplete
t_sax_agreement_denorm_base: Incomplete
t_sax_right_type_to_orchard_transaction_type: Incomplete
t_sax_territory_to_orchard_iso: Incomplete
t_sequestered_sales_distro: Incomplete
t_snapshot_contract_mechanical_deduction: Incomplete
t_snapshot_contract_nr: Incomplete
t_snapshot_contract_publishing: Incomplete
t_snapshot_contract_term_condition_country: Incomplete
t_snapshot_contract_term_condition_store: Incomplete
t_snapshot_contract_term_condition_transaction_type: Incomplete
t_snapshot_contract_term_schedule_nr: Incomplete
t_snapshot_mechanical_transaction: Incomplete
t_snapshot_mechanical_transaction_detail: Incomplete
t_snapshot_transaction_publishing_exclude: Incomplete

class StmtDbPublishing(Base):
    __tablename__: str
    __table_args__: Incomplete
    statement_detail_id: Mapped[decimal.Decimal]
    song_no: Mapped[decimal.Decimal]
    period_id: Mapped[decimal.Decimal | None]
    song: Mapped[str | None]
    writer: Mapped[str | None]
    source_name: Mapped[str | None]
    source_country: Mapped[str | None]
    source2_name: Mapped[str | None]
    source2_country: Mapped[str | None]
    source3_name: Mapped[str | None]
    source3_country: Mapped[str | None]
    source4_name: Mapped[str | None]
    source4_country: Mapped[str | None]
    income_type: Mapped[str | None]
    sh_id: Mapped[decimal.Decimal | None]
    rptg_pd: Mapped[str | None]
    sales_pd: Mapped[str | None]
    product_number: Mapped[str | None]
    artist_product_number: Mapped[str | None]
    units: Mapped[decimal.Decimal | None]
    song_share_percent: Mapped[decimal.Decimal | None]
    control_percent: Mapped[decimal.Decimal | None]
    amount: Mapped[decimal.Decimal | None]
    royalty_percent: Mapped[decimal.Decimal | None]
    royalty_amount: Mapped[decimal.Decimal | None]
    df: Mapped[str | None]
    source_product: Mapped[str | None]
    iswc: Mapped[str | None]
    external_song_id: Mapped[decimal.Decimal | None]
    artist: Mapped[str | None]
    source_song: Mapped[str | None]
    isrc: Mapped[str | None]
    transaction_id: Mapped[decimal.Decimal | None]
    account_id: Mapped[decimal.Decimal | None]
    has_multiple_owners: Mapped[decimal.Decimal | None]
    vendor_controlled_share: Mapped[decimal.Decimal | None]
    adjusted_share: Mapped[decimal.Decimal | None]

t_stmt_db_sales_distro: Incomplete
t_stmt_db_sales_distro_old: Incomplete
t_stmt_db_sales_distro_staging: Incomplete
t_stmt_db_sales_distro_staging_old: Incomplete
t_stmt_db_sales_distro_temp_old: Incomplete
t_stmt_db_sales_nr: Incomplete
t_stmt_db_sales_nr_staging: Incomplete
t_tap_payoneer_sync_snapshot: Incomplete
t_transaction_correction_distro: Incomplete
t_transaction_correction_distro_mech: Incomplete
t_transaction_correction_nr: Incomplete
t_worksheet_correction_transaction_distro: Incomplete
t_worksheet_correction_transaction_distro_mech: Incomplete
t_worksheet_correction_transaction_nr: Incomplete
t_workstation_fact_sales_unified_dbt: Incomplete
t_workstation_summary_dbt: Incomplete
