"""royalty_accounting Models.""" import datetime import decimal from typing import Optional from sqlalchemy import ( CHAR, DECIMAL, JSON, BigInteger, CheckConstraint, Double, Enum, Float, ForeignKeyConstraint, Index, Integer, SmallInteger, String, Text, text, ) from sqlalchemy.dialects.mysql import ( BIGINT, DECIMAL, ENUM, INTEGER, MEDIUMINT, MEDIUMTEXT, SET, SMALLINT, TINYINT, VARCHAR, ) from sqlalchemy.orm import ( DeclarativeBase, Mapped, MappedAsDataclass, mapped_column, relationship, ) from abacus_models.core.mixins import ( AuditMixin, BaseMixin, CreateMixin, SoftDeleteMixin, UpdateMixin, ) from abacus_models.core.types import NormalizedDate, NormalizedDateTime class Base(MappedAsDataclass, DeclarativeBase, BaseMixin): pass class AbacusOutbox(Base, CreateMixin, UpdateMixin): __tablename__ = 'abacus_outbox' __table_args__ = ( Index('idx_abacus_outbox_correlation', 'correlation_id', 'created_at'), Index('idx_abacus_outbox_retry', 'status', 'next_retry_at', 'abacus_outbox_id'), Index('idx_abacus_outbox_status_created', 'status', 'created_at'), Index('idx_abacus_outbox_status_id', 'status', 'abacus_outbox_id'), { 'comment': 'Transactional outbox pattern for reliable event publishing. ' 'Supports all domain entities (e.g., file_upload, account, ' 'contract).' }, ) abacus_outbox_id: Mapped[int] = mapped_column( BIGINT, primary_key=True, comment='Primary key and sequence number for event ordering.', autoincrement=True, init=False, ) target_type: Mapped[str] = mapped_column( String(50), nullable=False, comment='Entity type (e.g., file_upload, contract, account).', ) target_id: Mapped[int] = mapped_column( BIGINT, nullable=False, comment='Primary key of target entity.' ) event_type: Mapped[str] = mapped_column( String(100), nullable=False, comment='Event type using dot notation (e.g., file_upload.completed, file_upload.failed).', ) correlation_id: Mapped[str] = mapped_column( String(36), nullable=False, comment='Correlation ID (UUID) for tracing events across systems and ensuring idempotency.', ) status: Mapped[str] = mapped_column( Enum('pending', 'completed', 'failed'), nullable=False, server_default=text("'pending'"), comment='Event processing status.', ) retry_count: Mapped[int] = mapped_column( SmallInteger, nullable=False, server_default=text("'0'"), comment='Number of processing retry attempts.', ) max_retries: Mapped[int] = mapped_column( SmallInteger, nullable=False, server_default=text("'3'"), comment='Maximum number of retry attempts before marking as failed.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='Timestamp when the event was created.', default=None, ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), comment='Timestamp when the event was last modified.', default=None, ) details: Mapped[Optional[dict]] = mapped_column( JSON, comment='Optional event data as JSON. Used to include data needed for event processing. Max recommended size: 64KB. Larger payloads should use external storage.', default=None, ) next_retry_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Scheduled time for next retry attempt (for exponential backoff).', default=None, ) error_message: Mapped[Optional[str]] = mapped_column( Text, comment='Error message if processing failed.', default=None ) processed_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Timestamp when the event was successfully processed.', default=None, ) class AbacusState(Base, CreateMixin, UpdateMixin): __tablename__ = 'abacus_state' __table_args__ = ( Index( 'uidx_parent_action', 'parent_table_id', 'parent_table_name', 'action_name', unique=True, ), ) abacus_state_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) parent_table_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) action_name: Mapped[str] = mapped_column( String(32, 'utf8mb4_general_ci'), nullable=False ) action_status: Mapped[str] = mapped_column( ENUM('init', 'running', 'error', 'complete', 'approved', 'rejected'), nullable=False, server_default=text("'init'"), ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) parent_table_name: Mapped[Optional[str]] = mapped_column( String(64, 'utf8mb4_general_ci'), default=None ) message: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) abacus_state_history: Mapped[list['AbacusStateHistory']] = relationship( 'AbacusStateHistory', back_populates='abacus_state', init=False ) class Account(Base, CreateMixin, UpdateMixin): __tablename__ = 'account' __table_args__ = (Index('idx_account_name', 'account_name'),) account_id: Mapped[int] = mapped_column(MEDIUMINT, primary_key=True) account_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) sap_created_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) account_payment_term: Mapped[list['AccountPaymentTerm']] = relationship( 'AccountPaymentTerm', back_populates='account', init=False ) account_tax_info: Mapped[list['AccountTaxInfo']] = relationship( 'AccountTaxInfo', back_populates='account', init=False ) payment_hold: Mapped[list['PaymentHold']] = relationship( 'PaymentHold', back_populates='account', init=False ) report_custom: Mapped[list['ReportCustom']] = relationship( 'ReportCustom', back_populates='account', init=False ) statement_attachment: Mapped[list['StatementAttachment']] = relationship( 'StatementAttachment', back_populates='account', init=False ) account_payee: Mapped[list['AccountPayee']] = relationship( 'AccountPayee', back_populates='account', init=False ) account_payment_term_history: Mapped[list['AccountPaymentTermHistory']] = ( relationship('AccountPaymentTermHistory', back_populates='account', init=False) ) account_tax_info_history: Mapped[list['AccountTaxInfoHistory']] = relationship( 'AccountTaxInfoHistory', back_populates='account', init=False ) payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']] = ( relationship('PaymentGroupPaymentAccount', back_populates='account', init=False) ) payment_hold_history: Mapped[list['PaymentHoldHistory']] = relationship( 'PaymentHoldHistory', back_populates='account', init=False ) account_contract: Mapped[list['AccountContract']] = relationship( 'AccountContract', back_populates='account', init=False ) account_contract_vat_detail: Mapped[list['AccountContractVatDetail']] = ( relationship('AccountContractVatDetail', back_populates='account', init=False) ) account_payee_history: Mapped[list['AccountPayeeHistory']] = relationship( 'AccountPayeeHistory', back_populates='account', init=False ) ledger_account: Mapped[list['LedgerAccount']] = relationship( 'LedgerAccount', back_populates='account', init=False ) ledger_account_contract: Mapped[list['LedgerAccountContract']] = relationship( 'LedgerAccountContract', back_populates='account', init=False ) ledger_adjustment: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', back_populates='account', init=False ) ledger_adjustment_detail: Mapped[list['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', back_populates='account', init=False ) ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']] = ( relationship('LedgerContractFlowthrough', back_populates='account', init=False) ) ledger_deposit: Mapped[list['LedgerDeposit']] = relationship( 'LedgerDeposit', back_populates='account', init=False ) ledger_vat_summary: Mapped[list['LedgerVatSummary']] = relationship( 'LedgerVatSummary', back_populates='account', init=False ) payee_collaborator: Mapped[list['PayeeCollaborator']] = relationship( 'PayeeCollaborator', back_populates='account', init=False ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='account', init=False ) worksheet_correction: Mapped[list['WorksheetCorrection']] = relationship( 'WorksheetCorrection', back_populates='account', init=False ) worksheet_flowthrough: Mapped[list['WorksheetFlowthrough']] = relationship( 'WorksheetFlowthrough', back_populates='account', init=False ) worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']] = relationship( 'WorksheetPaymentCustom', back_populates='account', init=False ) worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']] = relationship( 'WorksheetTaxCorrection', back_populates='account', init=False ) worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']] = ( relationship('WorksheetTaxCorrectionVat', back_populates='account', init=False) ) ledger_account_contract_current_balance: Mapped[ list['LedgerAccountContractCurrentBalance'] ] = relationship( 'LedgerAccountContractCurrentBalance', back_populates='account', init=False ) ledger_account_current_balance: Mapped[list['LedgerAccountCurrentBalance']] = ( relationship( 'LedgerAccountCurrentBalance', back_populates='account', init=False ) ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='account', init=False ) ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']] = ( relationship( 'LedgerContractAdvanceApplied', back_populates='account', init=False ) ) ledger_contract_flowthrough_current_balance: Mapped[ list['LedgerContractFlowthroughCurrentBalance'] ] = relationship( 'LedgerContractFlowthroughCurrentBalance', back_populates='account', init=False ) ledger_correction: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', back_populates='account', init=False ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='account', init=False ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship('WorksheetAdjustmentDetail', back_populates='account', init=False) ) ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']] = ( relationship( 'LedgerReserveReleaseSchedule', back_populates='account', init=False ) ) worksheet_account_contract_payable_after_tax: Mapped[ list['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='account', init=False ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='account', init=False ) payment_group_payment_account_detail: Mapped[ list['PaymentGroupPaymentAccountDetail'] ] = relationship( 'PaymentGroupPaymentAccountDetail', back_populates='account', init=False ) worksheet_account_contract_payable_details: Mapped[ list['WorksheetAccountContractPayableDetails'] ] = relationship( 'WorksheetAccountContractPayableDetails', back_populates='account', init=False ) class AccountPayeeKycNotificationHistory( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'account_payee_kyc_notification_history' account_payee_kyc_notification_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payee_kyc_notification_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_upload_link: Mapped[str] = mapped_column(String(1000), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) requirement_id: Mapped[Optional[str]] = mapped_column(String(1000), default=None) requirement_type_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) sub_requirement_id: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) possible_sub_requirement_types: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) sub_requirement_status_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) entity_reference_id: Mapped[Optional[str]] = mapped_column(String(36), default=None) entity_reference_type_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) class AccountPayeeTaxFormInfoHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'account_payee_tax_form_info_history' account_payee_tax_form_info_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payee_tax_form_info_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) tax_form_type: Mapped[str] = mapped_column( ENUM('W9', 'W8', 'W8BEN', 'W8BEN-E', 'W8IMY', 'W8ECI'), nullable=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) revision_id: Mapped[Optional[str]] = mapped_column( String(36, 'utf8mb4_general_ci'), default=None ) signed_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) expiration_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) class AccountPaymentTermTemplate(Base): __tablename__ = 'account_payment_term_template' account_payment_term_template_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) template_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) currency_code: Mapped[str] = mapped_column( String(3, 'utf8mb4_general_ci'), nullable=False ) payment_terms: Mapped[dict] = mapped_column(JSON, nullable=False) class AccountingProcessLock(Base, CreateMixin, UpdateMixin): __tablename__ = 'accounting_process_lock' __table_args__ = ( CheckConstraint( '(`accounting_process_lock_id` = 1)', name='chk_accounting_process_lock_single_row', ), ) accounting_process_lock_id: Mapped[int] = mapped_column(MEDIUMINT, primary_key=True) is_active: Mapped[int] = mapped_column(TINYINT(1), nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) notes: Mapped[Optional[str]] = mapped_column(String(500), default=None) accounting_process_lock_history: Mapped[list['AccountingProcessLockHistory']] = ( relationship( 'AccountingProcessLockHistory', back_populates='accounting_process_lock', init=False, ) ) class ContractFlowthroughHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_flowthrough_history' contract_flowthrough_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_flowthrough_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_flowthrough_calculation_id: Mapped[int] = mapped_column( TINYINT, nullable=False ) flowthrough_rate: Mapped[decimal.Decimal] = mapped_column( DECIMAL(5, 2), nullable=False ) flowthrough_status: Mapped[str] = mapped_column( Enum('active', 'shutoff', 'paused'), nullable=False, server_default=text("'active'"), ) has_automatic_shutoff: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) recoupment_cap: Mapped[Optional[int]] = mapped_column(BigInteger, default=None) previous_flowthrough_status: Mapped[Optional[str]] = mapped_column( Enum('active', 'shutoff', 'paused'), default=None ) status_last_modified_by: Mapped[Optional[str]] = mapped_column( String(180), default=None ) status_last_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class ContractLifecycleHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_lifecycle_history' contract_lifecycle_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_lifecycle_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_lifecycle_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) lifecycle_status: Mapped[str] = mapped_column( ENUM( 'init', 'active', 'to_be_terminated', 'terminated', 'in_collection_period', 'inactive', ), nullable=False, server_default=text("'init'"), ) lifecycle_term_start: Mapped[datetime.date] = mapped_column( NormalizedDate, nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) lifecycle_term_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) renewal_effective: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_notice_deadline: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_notice_received: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_effective: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) collection_start: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) collection_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class ContractLifecycleScheduleDetail(Base): __tablename__ = 'contract_lifecycle_schedule_detail' contract_lifecycle_schedule_detail_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) period_interval: Mapped[int] = mapped_column(SMALLINT, nullable=False) period_type: Mapped[str] = mapped_column( ENUM('day', 'month', 'year'), nullable=False ) contract_lifecycle_schedule: Mapped[list['ContractLifecycleSchedule']] = ( relationship( 'ContractLifecycleSchedule', foreign_keys='[ContractLifecycleSchedule.collection_period_detail_id]', back_populates='collection_period_detail', init=False, ) ) contract_lifecycle_schedule_: Mapped[list['ContractLifecycleSchedule']] = ( relationship( 'ContractLifecycleSchedule', foreign_keys='[ContractLifecycleSchedule.renewal_offset_detail_id]', back_populates='renewal_offset_detail', init=False, ) ) contract_lifecycle_schedule1: Mapped[list['ContractLifecycleSchedule']] = ( relationship( 'ContractLifecycleSchedule', foreign_keys='[ContractLifecycleSchedule.termination_notice_detail_id]', back_populates='termination_notice_detail', init=False, ) ) class ContractMechanicalDeductionHistory( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'contract_mechanical_deduction_history' contract_mechanical_deduction_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_mechanical_deduction_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) territory: Mapped[str] = mapped_column(ENUM('USA', 'CAN', 'ROW'), nullable=False) mechanical_type: Mapped[str] = mapped_column( SET('digital', 'physical', 'ringtone'), nullable=False ) admin_type: Mapped[str] = mapped_column( ENUM('both', 'business', 'customer'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) admin_fee: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class ContractTermConditionHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term_condition_history' contract_term_condition_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_term_condition_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) conditions: Mapped[dict] = mapped_column(JSON, nullable=False) term_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) priority: Mapped[int] = mapped_column( TINYINT, nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_term_condition_name: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) commission: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class ContractTermHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term_history' contract_term_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) term_type: Mapped[str] = mapped_column( ENUM( 'artist', 'catalog', 'contribution', 'label', 'product', 'track', 'contributor_schedule', 'contribution_schedule', ), nullable=False, server_default=text("'label'"), ) is_base_term: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_term_name: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) attachments: Mapped[Optional[dict]] = mapped_column(JSON, default=None) attachments_relations: Mapped[Optional[dict]] = mapped_column(JSON, default=None) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class DeletedContract(Base, CreateMixin, UpdateMixin): __tablename__ = 'deleted_contract' deleted_contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_data: Mapped[dict] = mapped_column(JSON, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) class FileUploadConfig(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'file_upload_config' __table_args__ = ( Index('uidx_upload_type_active', 'upload_type', unique=True), { 'comment': 'Configurations for different file upload types and their routing ' 'rules' }, ) file_upload_config_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) upload_type: Mapped[str] = mapped_column( Enum('adjustments', 'flowthrough'), nullable=False, comment='Type identifier for the upload. Defines which upload configuration to use.', ) s3_key_template: Mapped[str] = mapped_column( String(255), nullable=False, server_default=text("'{file_key}.{ext}'"), comment='S3 path/key template', ) max_file_size_bytes: Mapped[int] = mapped_column( BIGINT, nullable=False, server_default=text("'10485760'"), comment='Maximum file size in bytes. Defaults to 10MB, S3 maximum is 5TB.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) allowed_file_types: Mapped[Optional[dict]] = mapped_column( JSON, comment='Array of allowed file extensions, without leading dot and lowercase (e.g., ["csv", "pdf", "xlsx"]). NULL = allow all extensions.', default=None, ) multipart_threshold_bytes: Mapped[Optional[int]] = mapped_column( BIGINT, server_default=text("'104857600'"), comment='File size threshold for multipart upload. Defaults to 100MB, S3 maximum is 5GB.', default=None, ) min_multipart_chunk_size_bytes: Mapped[Optional[int]] = mapped_column( BIGINT, server_default=text("'10485760'"), comment='Minimum chunk size for multipart uploads. Defaults to 10MB, S3 range is [5MB, 5GB]. Calculated chunk size should be >= this value and stay within the S3 part limit (10,000).', default=None, ) event_name: Mapped[Optional[str]] = mapped_column(String(32), default=None) description: Mapped[Optional[str]] = mapped_column( String(255), comment='Description of what this upload config is for.', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) file_upload: Mapped[list['FileUpload']] = relationship( 'FileUpload', back_populates='file_upload_config', init=False ) class HistoricalContractAdvance(Base): __tablename__ = 'historical_contract_advance' __table_args__ = ( Index('account_id', 'account_id'), {'comment': 'Holds historical advanced payment information.'}, ) id: Mapped[int] = mapped_column( Integer, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) oa_advance_id: Mapped[int] = mapped_column( Integer, nullable=False, comment='Historical Orchard Admin advance payment ID.' ) oa_contract_id: Mapped[int] = mapped_column( Integer, nullable=False, comment='Orchard Admin contract id this advance is associated with.', ) account_id: Mapped[int] = mapped_column( Integer, nullable=False, comment='Abacus and Orchard Admin account id this advance is associated with.', ) amount: Mapped[decimal.Decimal] = mapped_column( Double(asdecimal=True), nullable=False, comment='Amount of advance.' ) currency_id: Mapped[int] = mapped_column( SMALLINT, nullable=False, comment='Foreign key to currencies table.' ) currency: Mapped[str] = mapped_column( String(3), nullable=False, comment='Currency code for the advance amount.' ) due_type: Mapped[str] = mapped_column( VARCHAR(100), nullable=False, comment='Indicates how the advance is due.' ) date_paid: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, comment='Date the advance is paid.', default=None ) exchange_rate: Mapped[Optional[float]] = mapped_column( Float, comment='Exchange Rate in decimal between 0 and 1', default=None ) description: Mapped[Optional[str]] = mapped_column( Text, comment='Description of the advance payment.', default=None ) apply_to_period_id: Mapped[Optional[int]] = mapped_column( SMALLINT, comment='The period the advance is applied to.', default=None ) class JsonContractFileImportStatus(Base): __tablename__ = 'json_contract_file_import_status' json_contract_file_import_status_id: Mapped[int] = mapped_column( INTEGER, primary_key=True, autoincrement=True, init=False ) ingestion_date: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False ) json_file_s3_path: Mapped[str] = mapped_column(String(1024), nullable=False) json_file_s3_version_id: Mapped[str] = mapped_column(String(1024), nullable=False) process_report_file_s3_path: Mapped[str] = mapped_column( String(1024), nullable=False ) import_status: Mapped[str] = mapped_column( Enum('success', 'partial_success', 'fail'), nullable=False ) overwrite: Mapped[int] = mapped_column(TINYINT(1), nullable=False) ingestion_duration: Mapped[decimal.Decimal] = mapped_column( DECIMAL(5, 2), nullable=False ) contract_id: Mapped[Optional[int]] = mapped_column(Integer, default=None) contract_name: Mapped[Optional[str]] = mapped_column(String(180), default=None) failed_entities: Mapped[Optional[str]] = mapped_column(String(512), default=None) errors: Mapped[Optional[str]] = mapped_column(Text, default=None) aws_username: Mapped[Optional[str]] = mapped_column(String(256), default=None) import_user: Mapped[Optional[str]] = mapped_column(String(180), default=None) jira_ticket: Mapped[Optional[str]] = mapped_column(String(180), default=None) account_id: Mapped[Optional[int]] = mapped_column(Integer, default=None) imported_entities: Mapped[Optional[str]] = mapped_column(String(1024), default=None) class OaTerritoryBackfilledAccounts(Base, AuditMixin, CreateMixin): __tablename__ = 'oa_territory_backfilled_accounts' backfill_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounts: Mapped[dict] = mapped_column(JSON, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) audit_id: Mapped[Optional[str]] = mapped_column(String(255), default=None) class PayeeHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'payee_history' payee_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_payment_type_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) payoneer_client_reference_id: Mapped[str] = mapped_column( String(255), nullable=False ) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, nullable=False) payee_type: Mapped[str] = mapped_column(Enum('collaborator'), nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payoneer_assigned_id: Mapped[Optional[int]] = mapped_column(BIGINT, default=None) payee_name: Mapped[Optional[str]] = mapped_column(String(255), default=None) class PayeeKycNotificationHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payee_kyc_notification_history' payee_kyc_notification_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payee_kyc_notification_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_upload_link: Mapped[str] = mapped_column(String(1000), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) requirement_id: Mapped[Optional[str]] = mapped_column(String(1000), default=None) requirement_type_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) sub_requirement_id: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) possible_sub_requirement_types: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) sub_requirement_status_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) entity_reference_id: Mapped[Optional[str]] = mapped_column(String(36), default=None) entity_reference_type_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) class PaymentAllocationHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_allocation_history' payment_allocation_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_allocation_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payee_type: Mapped[str] = mapped_column( Enum('payee', 'account_payee'), nullable=False ) payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payment_allocation_type: Mapped[str] = mapped_column( Enum('collaborator', 'flowthrough', 'transfer_of_earning'), nullable=False ) amount_to_payment: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) payment_status: Mapped[str] = mapped_column( Enum('init', 'attached_to_payment', 'paid', 'returned'), nullable=False ) amount_to_ledger: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) ledger_status: Mapped[str] = mapped_column( Enum('debited', 'returned', 'init', 'attached_to_payment'), nullable=False ) currency_code: Mapped[str] = mapped_column(String(3), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) payment_status_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) ledger_status_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) description: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) class PaymentGroup(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_group' payment_group_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) group_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) is_reusable: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) group_criteria: Mapped[Optional[dict]] = mapped_column(JSON, default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) payment_group_payment: Mapped[list['PaymentGroupPayment']] = relationship( 'PaymentGroupPayment', back_populates='payment_group', init=False ) class PaymentMinimum(Base, CreateMixin, UpdateMixin): __tablename__ = 'payment_minimum' payment_minimum_id: Mapped[int] = mapped_column( TINYINT, primary_key=True, autoincrement=True, init=False ) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) check_amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(6, 2), nullable=False) wire_transfer_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(6, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) western_union_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(6, 2), default=None ) class ReferenceAdjustmentType(Base): __tablename__ = 'reference_adjustment_type' reference_adjustment_type_id: Mapped[int] = mapped_column(TINYINT, primary_key=True) type_name: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) oa_category_name: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) ledger_adjustment: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', back_populates='reference_adjustment_type', init=False ) ledger_adjustment_detail: Mapped[list['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', back_populates='reference_adjustment_type', init=False ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='reference_adjustment_type', init=False ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', back_populates='reference_adjustment_type', init=False, ) ) class ReferenceAdvancePaymentMethod(Base): __tablename__ = 'reference_advance_payment_method' reference_advance_payment_method_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) payment_method: Mapped[str] = mapped_column(String(255), nullable=False) is_internal: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) contract_advance: Mapped[list['ContractAdvance']] = relationship( 'ContractAdvance', back_populates='reference_advance_payment_method', init=False ) contract_advance_history: Mapped[list['ContractAdvanceHistory']] = relationship( 'ContractAdvanceHistory', back_populates='reference_advance_payment_method', init=False, ) class ReferenceAgreementType(Base): __tablename__ = 'reference_agreement_type' reference_agreement_type_id: Mapped[int] = mapped_column( TINYINT, primary_key=True, autoincrement=True, init=False ) agreement_type: Mapped[str] = mapped_column(String(180), nullable=False) account_payment_term: Mapped[list['AccountPaymentTerm']] = relationship( 'AccountPaymentTerm', back_populates='agreement_type', init=False ) payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']] = ( relationship( 'PaymentEntityPayoneerProgram', back_populates='agreement_type', init=False ) ) class ReferenceExternalSource(Base, CreateMixin, UpdateMixin): __tablename__ = 'reference_external_source' __table_args__ = ( Index( 'composite_external_source', 'external_source_id', 'external_source', 'parent_table_name', ), ) reference_external_source_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) parent_table_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) parent_table_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) external_source_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) external_source: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) class ReferenceFlowthroughCalculation(Base): __tablename__ = 'reference_flowthrough_calculation' reference_flowthrough_calculation_id: Mapped[int] = mapped_column( TINYINT, primary_key=True, autoincrement=True, init=False ) flowthrough_calculation_name: Mapped[str] = mapped_column( String(180), nullable=False ) flowthrough_calculation: Mapped[str] = mapped_column(String(180), nullable=False) flowthrough_calculation_example: Mapped[str] = mapped_column( String(180), nullable=False ) flowthrough_calculation_example_summary: Mapped[str] = mapped_column( String(180), nullable=False ) contract_flowthrough: Mapped[list['ContractFlowthrough']] = relationship( 'ContractFlowthrough', back_populates='reference_flowthrough_calculation', init=False, ) class ReferenceMechanicalRate(Base, CreateMixin, UpdateMixin): __tablename__ = 'reference_mechanical_rate' reference_mechanical_rate_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) country_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) base_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(10, 4), nullable=False) minute_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(10, 4), nullable=False) ringtone_rate: Mapped[decimal.Decimal] = mapped_column( DECIMAL(10, 4), nullable=False ) effective_start_date: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) class ReferencePayableDetailType(Base): __tablename__ = 'reference_payable_detail_type' reference_payable_detail_type_id: Mapped[int] = mapped_column( TINYINT, primary_key=True ) detail_type_name: Mapped[str] = mapped_column(String(255), nullable=False) detail_group_name: Mapped[str] = mapped_column(String(255), nullable=False) worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']] = relationship( 'WorksheetTaxCorrection', back_populates='payable_detail_type', init=False ) worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']] = ( relationship( 'WorksheetTaxCorrectionVat', back_populates='payable_detail_type', init=False, ) ) worksheet_account_contract_payable_details: Mapped[ list['WorksheetAccountContractPayableDetails'] ] = relationship( 'WorksheetAccountContractPayableDetails', back_populates='payable_detail_type', init=False, ) class ReferencePaymentEntity(Base, CreateMixin, UpdateMixin): __tablename__ = 'reference_payment_entity' __table_args__ = {'comment': 'AKA "paid_by"; meant to replace signing_entity table'} reference_payment_entity_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_entity_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) country_of_tax_reporting: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) account_payment_term: Mapped[list['AccountPaymentTerm']] = relationship( 'AccountPaymentTerm', back_populates='payment_entity', init=False ) reference_signing_entity: Mapped[list['ReferenceSigningEntity']] = relationship( 'ReferenceSigningEntity', back_populates='reference_payment_entity', init=False ) statement_period_payment_entity: Mapped[list['StatementPeriodPaymentEntity']] = ( relationship( 'StatementPeriodPaymentEntity', back_populates='reference_payment_entity', init=False, ) ) account_payment_term_history: Mapped[list['AccountPaymentTermHistory']] = ( relationship( 'AccountPaymentTermHistory', back_populates='payment_entity', init=False ) ) payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']] = ( relationship( 'PaymentEntityPayoneerProgram', back_populates='reference_payment_entity', init=False, ) ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='reference_payment_entity', init=False, ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='reference_payment_entity', init=False, ) class ReferencePaymentType(Base): __tablename__ = 'reference_payment_type' reference_payment_type_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) payment_type: Mapped[str] = mapped_column( Enum('advance', 'bulk_payouts'), nullable=False ) payment_service: Mapped[str] = mapped_column(String(255), nullable=False) is_internal: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) notes: Mapped[Optional[str]] = mapped_column(String(255), default=None) reference_payoneer_program: Mapped[list['ReferencePayoneerProgram']] = relationship( 'ReferencePayoneerProgram', back_populates='reference_payment_type', init=False ) account_payee: Mapped[list['AccountPayee']] = relationship( 'AccountPayee', back_populates='reference_payment_type', init=False ) payee: Mapped[list['Payee']] = relationship( 'Payee', back_populates='reference_payment_type', init=False ) contract_advance: Mapped[list['ContractAdvance']] = relationship( 'ContractAdvance', back_populates='reference_payment_type', init=False ) contract_advance_history: Mapped[list['ContractAdvanceHistory']] = relationship( 'ContractAdvanceHistory', back_populates='reference_payment_type', init=False ) class ReferenceSapProfitCenter(Base): __tablename__ = 'reference_sap_profit_center' __table_args__ = ( Index( 'uidx_reference_sap_profit_center_profit_center', 'profit_center', unique=True, ), ) reference_sap_profit_center_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) profit_center: Mapped[str] = mapped_column( String(10, 'utf8mb4_general_ci'), nullable=False ) company_code: Mapped[str] = mapped_column( String(8, 'utf8mb4_general_ci'), nullable=False ) display_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) business_group: Mapped[str] = mapped_column( String(3, 'utf8mb4_general_ci'), nullable=False, server_default=text("'ORC'") ) reference_signing_entity: Mapped[list['ReferenceSigningEntity']] = relationship( 'ReferenceSigningEntity', back_populates='reference_sap_profit_center', init=False, ) contract: Mapped[list['Contract']] = relationship( 'Contract', back_populates='reference_sap_profit_center', init=False ) contract_history: Mapped[list['ContractHistory']] = relationship( 'ContractHistory', back_populates='reference_sap_profit_center', init=False ) signing_entity_sap_profit_center: Mapped[list['SigningEntitySapProfitCenter']] = ( relationship( 'SigningEntitySapProfitCenter', back_populates='reference_sap_profit_center', init=False, ) ) class ReferenceTaxWithholding(Base, CreateMixin, UpdateMixin): __tablename__ = 'reference_tax_withholding' reference_tax_withholding_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) country_of_withholding: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) tax_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) country_of_tax_residence: Mapped[Optional[str]] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), default=None ) is_resource_provisioned: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) class ReferenceTransactionType(Base): __tablename__ = 'reference_transaction_type' reference_transaction_type_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) transaction_type_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) transaction_type_code: Mapped[str] = mapped_column( String(4, 'utf8mb4_general_ci'), nullable=False ) reference_transaction_type_group_transaction_type: Mapped[ list['ReferenceTransactionTypeGroupTransactionType'] ] = relationship( 'ReferenceTransactionTypeGroupTransactionType', back_populates='reference_transaction_type', init=False, ) class ReferenceTransactionTypeGroup(Base): __tablename__ = 'reference_transaction_type_group' reference_transaction_type_group_id: Mapped[int] = mapped_column( TINYINT, primary_key=True, autoincrement=True, init=False ) transaction_type_group_name: Mapped[Optional[str]] = mapped_column( String(180), default=None ) reference_transaction_type_group_transaction_type: Mapped[ list['ReferenceTransactionTypeGroupTransactionType'] ] = relationship( 'ReferenceTransactionTypeGroupTransactionType', back_populates='reference_transaction_type_group', init=False, ) class ReferenceVatRate(Base, CreateMixin, UpdateMixin): __tablename__ = 'reference_vat_rate' reference_vat_rate_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) vat_type: Mapped[str] = mapped_column(ENUM('client', 'supplier'), nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) country_of_tax_residence: Mapped[Optional[str]] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), default=None ) country_of_tax_policy: Mapped[Optional[str]] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), default=None ) is_sba_signed: Mapped[Optional[int]] = mapped_column(TINYINT(1), default=None) is_tax_applicable: Mapped[Optional[int]] = mapped_column(TINYINT(1), default=None) is_vat_registered_in_country_of_tax_policy: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) transaction_type: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) tax_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) effective_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) class ReferenceWorksheetFlowthroughError( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'reference_worksheet_flowthrough_error' __table_args__ = { 'comment': 'Reference table for worksheet_flowthrough error codes.' } error_code: Mapped[str] = mapped_column( String(50), primary_key=True, comment='The error code. Example: ACCOUNT_ID_NOT_FOUND.', ) description: Mapped[str] = mapped_column( String(255), nullable=False, comment='Description of the error. Example: Account ID not found.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='When the error was deprecated.', default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180), comment='Who deprecated the error.', default=None ) class ReportPayment(Base, CreateMixin, UpdateMixin): __tablename__ = 'report_payment' __table_args__ = ( Index( 'uidx_report_payment', 'target_type', 'target_id', 'report_type', unique=True, ), ) report_payment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) target_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) report_type: Mapped[str] = mapped_column(Enum('approval'), nullable=False) report_export_url: Mapped[str] = mapped_column(String(180), nullable=False) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) target_type: Mapped[Optional[str]] = mapped_column(String(64), default=None) class RunController(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'run_controller' run_controller_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_type: Mapped[str] = mapped_column( ENUM('distribution', 'legacy_distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) run_controller_name: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) accounting_run: Mapped[list['AccountingRun']] = relationship( 'AccountingRun', back_populates='run_controller', init=False ) contract_template: Mapped[list['ContractTemplate']] = relationship( 'ContractTemplate', back_populates='run_controller', init=False ) run_controller_contract: Mapped[list['RunControllerContract']] = relationship( 'RunControllerContract', back_populates='run_controller', init=False ) class RunControllerContractHistory(Base, AuditMixin, CreateMixin, UpdateMixin): __tablename__ = 'run_controller_contract_history' run_controller_contract_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) run_controller_contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) run_controller_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) audit_id: Mapped[Optional[str]] = mapped_column(String(255), default=None) class Schedule(Base, CreateMixin, UpdateMixin): __tablename__ = 'schedule' schedule_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) schedule_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) target_type: Mapped[str] = mapped_column(ENUM('contributor'), nullable=False) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) conditions: Mapped[Optional[dict]] = mapped_column(JSON, default=None) schedule_attachment: Mapped[list['ScheduleAttachment']] = relationship( 'ScheduleAttachment', back_populates='schedule', init=False ) schedule_history: Mapped[list['ScheduleHistory']] = relationship( 'ScheduleHistory', back_populates='schedule', init=False ) contract_term_schedule: Mapped[list['ContractTermSchedule']] = relationship( 'ContractTermSchedule', back_populates='schedule', init=False ) contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']] = ( relationship( 'ContractTermScheduleHistory', back_populates='schedule', init=False ) ) class ScheduleAttachmentHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'schedule_attachment_history' schedule_attachment_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) schedule_attachment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) target_type: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) class StatementPeriod(Base): __tablename__ = 'statement_period' statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) statement_period_status: Mapped[str] = mapped_column( ENUM('open', 'current', 'closed'), nullable=False, server_default=text("'open'") ) statement_month: Mapped[Optional[int]] = mapped_column(TINYINT, default=None) statement_year: Mapped[Optional[int]] = mapped_column(SmallInteger, default=None) closed_date: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) closed_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) abacus_event: Mapped[list['AbacusEvent']] = relationship( 'AbacusEvent', back_populates='statement_period', init=False ) accounting_period: Mapped[list['AccountingPeriod']] = relationship( 'AccountingPeriod', back_populates='statement_period', init=False ) exchange_rate: Mapped[list['ExchangeRate']] = relationship( 'ExchangeRate', back_populates='statement_period', init=False ) payment_group_payment: Mapped[list['PaymentGroupPayment']] = relationship( 'PaymentGroupPayment', back_populates='statement_period', init=False ) statement_attachment: Mapped[list['StatementAttachment']] = relationship( 'StatementAttachment', back_populates='statement_period', init=False ) statement_period_payment_entity: Mapped[list['StatementPeriodPaymentEntity']] = ( relationship( 'StatementPeriodPaymentEntity', back_populates='statement_period', init=False, ) ) vat_summary_file: Mapped[list['VatSummaryFile']] = relationship( 'VatSummaryFile', back_populates='statement_period', init=False ) payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']] = ( relationship( 'PaymentGroupPaymentAccount', foreign_keys='[PaymentGroupPaymentAccount.current_statement_period_id]', back_populates='current_statement_period', init=False, ) ) payment_group_payment_account_: Mapped[list['PaymentGroupPaymentAccount']] = ( relationship( 'PaymentGroupPaymentAccount', foreign_keys='[PaymentGroupPaymentAccount.last_statement_period_id]', back_populates='last_statement_period', init=False, ) ) statement_period_adjustment_file: Mapped[list['StatementPeriodAdjustmentFile']] = ( relationship( 'StatementPeriodAdjustmentFile', back_populates='statement_period', init=False, ) ) worksheet_flowthrough_batch: Mapped[list['WorksheetFlowthroughBatch']] = ( relationship( 'WorksheetFlowthroughBatch', back_populates='statement_period', init=False ) ) ledger_adjustment: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', foreign_keys='[LedgerAdjustment.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) ledger_adjustment_: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', foreign_keys='[LedgerAdjustment.apply_to_statement_period_id]', back_populates='apply_to_statement_period', init=False, ) ledger_adjustment_detail: Mapped[list['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', foreign_keys='[LedgerAdjustmentDetail.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) ledger_adjustment_detail_: Mapped[list['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', foreign_keys='[LedgerAdjustmentDetail.apply_to_statement_period_id]', back_populates='apply_to_statement_period', init=False, ) ledger_vat_summary: Mapped[list['LedgerVatSummary']] = relationship( 'LedgerVatSummary', foreign_keys='[LedgerVatSummary.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) ledger_vat_summary_: Mapped[list['LedgerVatSummary']] = relationship( 'LedgerVatSummary', foreign_keys='[LedgerVatSummary.statement_period_id]', back_populates='statement_period', init=False, ) payment_allocation: Mapped[list['PaymentAllocation']] = relationship( 'PaymentAllocation', back_populates='statement_period', init=False ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', foreign_keys='[WorksheetAdjustment.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) worksheet_adjustment_: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', foreign_keys='[WorksheetAdjustment.apply_to_statement_period_id]', back_populates='apply_to_statement_period', init=False, ) worksheet_correction: Mapped[list['WorksheetCorrection']] = relationship( 'WorksheetCorrection', foreign_keys='[WorksheetCorrection.correction_statement_period_id]', back_populates='correction_statement_period', init=False, ) worksheet_correction_: Mapped[list['WorksheetCorrection']] = relationship( 'WorksheetCorrection', foreign_keys='[WorksheetCorrection.statement_period_id]', back_populates='statement_period', init=False, ) worksheet_flowthrough: Mapped[list['WorksheetFlowthrough']] = relationship( 'WorksheetFlowthrough', back_populates='activity_statement_period', init=False ) worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']] = relationship( 'WorksheetPaymentCustom', foreign_keys='[WorksheetPaymentCustom.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) worksheet_payment_custom_: Mapped[list['WorksheetPaymentCustom']] = relationship( 'WorksheetPaymentCustom', foreign_keys='[WorksheetPaymentCustom.statement_period_id]', back_populates='statement_period', init=False, ) worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']] = relationship( 'WorksheetTaxCorrection', back_populates='correction_statement_period', init=False, ) worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']] = ( relationship( 'WorksheetTaxCorrectionVat', back_populates='correction_statement_period', init=False, ) ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='statement_period', init=False ) ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']] = ( relationship( 'LedgerContractAdvanceApplied', back_populates='statement_period', init=False, ) ) ledger_correction: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', foreign_keys='[LedgerCorrection.correction_statement_period_id]', back_populates='correction_statement_period', init=False, ) ledger_correction_: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', foreign_keys='[LedgerCorrection.statement_period_id]', back_populates='statement_period', init=False, ) ledger_reserve_taken: Mapped[list['LedgerReserveTaken']] = relationship( 'LedgerReserveTaken', back_populates='statement_period', init=False ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='statement_period', init=False, ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', foreign_keys='[WorksheetAdjustmentDetail.activity_statement_period_id]', back_populates='activity_statement_period', init=False, ) ) worksheet_adjustment_detail_: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', foreign_keys='[WorksheetAdjustmentDetail.apply_to_statement_period_id]', back_populates='apply_to_statement_period', init=False, ) ) worksheet_payment_contract_advance: Mapped[ list['WorksheetPaymentContractAdvance'] ] = relationship( 'WorksheetPaymentContractAdvance', foreign_keys='[WorksheetPaymentContractAdvance.exchange_rate_statement_period_id]', back_populates='exchange_rate_statement_period', init=False, ) worksheet_payment_contract_advance_: Mapped[ list['WorksheetPaymentContractAdvance'] ] = relationship( 'WorksheetPaymentContractAdvance', foreign_keys='[WorksheetPaymentContractAdvance.statement_period_id]', back_populates='statement_period', init=False, ) ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']] = ( relationship( 'LedgerReserveReleaseSchedule', foreign_keys='[LedgerReserveReleaseSchedule.release_statement_period_id]', back_populates='release_statement_period', init=False, ) ) ledger_reserve_release_schedule_: Mapped[list['LedgerReserveReleaseSchedule']] = ( relationship( 'LedgerReserveReleaseSchedule', foreign_keys='[LedgerReserveReleaseSchedule.taken_statement_period_id]', back_populates='taken_statement_period', init=False, ) ) worksheet_account_contract_payable_after_tax: Mapped[ list['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='statement_period', init=False, ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='statement_period', init=False, ) ledger_reserve_release: Mapped[list['LedgerReserveRelease']] = relationship( 'LedgerReserveRelease', back_populates='statement_period', init=False ) worksheet_account_contract_payable_details: Mapped[ list['WorksheetAccountContractPayableDetails'] ] = relationship( 'WorksheetAccountContractPayableDetails', back_populates='statement_period', init=False, ) class TaxWithholdingOverrideHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'tax_withholding_override_history' tax_withholding_override_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) tax_withholding_override_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) rate_override: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) certificate_expiration_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) message: Mapped[Optional[str]] = mapped_column(Text, default=None) class AbacusEvent(Base, CreateMixin): __tablename__ = 'abacus_event' __table_args__ = ( ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_abacus_event_statement_period', ), Index('fk_abacus_event_statement_period', 'statement_period_id'), ) abacus_event_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) event_name: Mapped[str] = mapped_column( String(32, 'utf8mb4_general_ci'), nullable=False ) target_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) event_date: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, server_default=text("'default_user_id'"), default=None, ) statement_period_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) target_type: Mapped[Optional[str]] = mapped_column( String(64, 'utf8mb4_general_ci'), default=None ) previous_abacus_event_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) rolled_back_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) statement_period: Mapped[Optional['StatementPeriod']] = relationship( 'StatementPeriod', back_populates='abacus_event', init=False ) ledger_account: Mapped[list['LedgerAccount']] = relationship( 'LedgerAccount', back_populates='abacus_event', init=False ) ledger_account_contract: Mapped[list['LedgerAccountContract']] = relationship( 'LedgerAccountContract', back_populates='abacus_event', init=False ) ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']] = ( relationship( 'LedgerAccountingRunBalance', back_populates='abacus_event', init=False ) ) ledger_accounting_run_vat: Mapped[list['LedgerAccountingRunVat']] = relationship( 'LedgerAccountingRunVat', back_populates='abacus_event', init=False ) ledger_adjustment: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', back_populates='abacus_event', init=False ) ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']] = ( relationship( 'LedgerContractFlowthrough', back_populates='abacus_event', init=False ) ) ledger_deposit: Mapped[list['LedgerDeposit']] = relationship( 'LedgerDeposit', back_populates='abacus_event', init=False ) ledger_vat_summary: Mapped[list['LedgerVatSummary']] = relationship( 'LedgerVatSummary', back_populates='abacus_event', init=False ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='abacus_event', init=False ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='abacus_event', init=False ) ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']] = ( relationship( 'LedgerContractAdvanceApplied', back_populates='abacus_event', init=False ) ) ledger_correction: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', back_populates='abacus_event', init=False ) ledger_reserve_taken: Mapped[list['LedgerReserveTaken']] = relationship( 'LedgerReserveTaken', back_populates='abacus_event', init=False ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='abacus_event', init=False, ) ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']] = ( relationship( 'LedgerReserveReleaseSchedule', back_populates='abacus_event', init=False ) ) worksheet_account_contract_payable_after_tax: Mapped[ list['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='abacus_event', init=False, ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='abacus_event', init=False, ) ledger_reserve_release: Mapped[list['LedgerReserveRelease']] = relationship( 'LedgerReserveRelease', back_populates='abacus_event', init=False ) class AbacusStateHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'abacus_state_history' __table_args__ = ( ForeignKeyConstraint( ['abacus_state_id'], ['abacus_state.abacus_state_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_abacus_state_history', ), Index('fk_abacus_state_history', 'abacus_state_id'), ) abacus_state_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_state_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) parent_table_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) action_name: Mapped[str] = mapped_column( String(32, 'utf8mb4_general_ci'), nullable=False ) action_status: Mapped[str] = mapped_column( ENUM('init', 'running', 'error', 'complete', 'approved', 'rejected'), nullable=False, server_default=text("'init'"), ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) parent_table_name: Mapped[Optional[str]] = mapped_column( String(64, 'utf8mb4_general_ci'), default=None ) message: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) abacus_state: Mapped['AbacusState'] = relationship( 'AbacusState', back_populates='abacus_state_history', init=False ) class AccountPaymentTerm(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_payment_term' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_account_id', ), ForeignKeyConstraint( ['agreement_type_id'], ['reference_agreement_type.reference_agreement_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_agreement_type', ), ForeignKeyConstraint( ['payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_payment_entity', ), Index('fk_account_payment_term_agreement_type', 'agreement_type_id'), Index('fk_account_payment_term_payment_entity', 'payment_entity_id'), Index('uidx_account_id', 'account_id', unique=True), ) account_payment_term_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payment_minimum: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(10, 2), default=None ) payment_entity_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) agreement_type_id: Mapped[Optional[int]] = mapped_column(TINYINT, default=None) payment_schedule: Mapped[Optional[str]] = mapped_column( ENUM( '30_days_after_month_end', '45_days_after_month_end', '60_days_after_month_end', '90_days_after_month_end', '30_days_after_quarter_end', '45_days_after_quarter_end', '60_days_after_quarter_end', '90_days_after_quarter_end', '30_days_after_half_year_end', '45_days_after_half_year_end', '60_days_after_half_year_end', '90_days_after_half_year_end', 'TEMPORARY', ), default=None, ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_payment_term', init=False ) agreement_type: Mapped[Optional['ReferenceAgreementType']] = relationship( 'ReferenceAgreementType', back_populates='account_payment_term', init=False ) payment_entity: Mapped[Optional['ReferencePaymentEntity']] = relationship( 'ReferencePaymentEntity', back_populates='account_payment_term', init=False ) account_payment_term_history: Mapped[list['AccountPaymentTermHistory']] = ( relationship( 'AccountPaymentTermHistory', back_populates='account_payment_term', init=False, ) ) class AccountTaxInfo(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_tax_info' __table_args__ = ( CheckConstraint( '((`wht_rate_override` is null) or ((`wht_rate_override` >= 0.00) and (`wht_rate_override` <= 100.00)))', name='wht_rate_override_check', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_tax_info_account_id', ), Index('uidx_account_id', 'account_id', unique=True), ) account_tax_info_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_vat_exempt: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) is_tax_treaty_claimed: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) is_wht_applicable: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) country_of_tax_residence: Mapped[Optional[str]] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), default=None ) is_sba_signed: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) tax_employment_type: Mapped[Optional[str]] = mapped_column( ENUM( 'Business', 'Employed Individual', 'Self-Employed Individual (< 2 years)', 'Self-Employed Individual (>= 2 years)', 'Individual', 'Small Business that is not required to register for EU VAT', ), default=None, ) certificate_of_residence_expiration_date: Mapped[Optional[datetime.date]] = ( mapped_column(NormalizedDate, default=None) ) is_resident_of_spanish_islands: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) wht_rate_override: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_tax_info', init=False ) account_tax_info_history: Mapped[list['AccountTaxInfoHistory']] = relationship( 'AccountTaxInfoHistory', back_populates='account_tax_info', init=False ) class AccountingPeriod(Base, CreateMixin, UpdateMixin): __tablename__ = 'accounting_period' __table_args__ = ( CheckConstraint('(`is_visible` in (false,true))', name='chk_is_visible_value'), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_acct_period', ), Index('fk_statement_period_acct_period', 'statement_period_id'), ) accounting_period_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) accounting_period_status: Mapped[str] = mapped_column( ENUM('open', 'locked', 'closed'), nullable=False, server_default=text("'open'") ) contract_type: Mapped[str] = mapped_column( ENUM('distribution', 'legacy_distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) is_visible: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) accounting_period_name: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) closed_date: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) visible_reason: Mapped[Optional[str]] = mapped_column( String(50, 'utf8mb4_general_ci'), default=None ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='accounting_period', init=False ) accounting_period_report: Mapped[list['AccountingPeriodReport']] = relationship( 'AccountingPeriodReport', back_populates='accounting_period', init=False ) accounting_run: Mapped[list['AccountingRun']] = relationship( 'AccountingRun', back_populates='accounting_period', init=False ) sales_file: Mapped[list['SalesFile']] = relationship( 'SalesFile', back_populates='accounting_period', init=False ) class AccountingProcessLockHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'accounting_process_lock_history' __table_args__ = ( ForeignKeyConstraint( ['accounting_process_lock_id'], ['accounting_process_lock.accounting_process_lock_id'], name='FK_accounting_process_lock_history_lock', ), Index('FK_accounting_process_lock_history_lock', 'accounting_process_lock_id'), ) accounting_process_lock_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounting_process_lock_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_active: Mapped[int] = mapped_column(TINYINT(1), nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) notes: Mapped[Optional[str]] = mapped_column(String(500), default=None) accounting_process_lock: Mapped['AccountingProcessLock'] = relationship( 'AccountingProcessLock', back_populates='accounting_process_lock_history', init=False, ) class ExchangeRate(Base, CreateMixin, UpdateMixin): __tablename__ = 'exchange_rate' __table_args__ = ( ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_exchange_rate_statement_period', ), Index('idx_from_code', 'from_currency_code'), Index('idx_to_code', 'to_currency_code'), Index( 'uidx_statement_period_currencies', 'statement_period_id', 'from_currency_code', 'to_currency_code', unique=True, ), ) exchange_rate_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(30, 19), nullable=False) from_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) to_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='exchange_rate', init=False ) class FileUpload(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'file_upload' __table_args__ = ( ForeignKeyConstraint( ['file_upload_config_id'], ['file_upload_config.file_upload_config_id'], ondelete='RESTRICT', name='fk_file_upload_config', ), Index('fk_file_upload_config', 'file_upload_config_id'), Index('idx_md5sum', 'md5sum'), Index('uidx_file_key', 'file_key', unique=True), {'comment': 'Tracks file uploads including S3 location, status, and metadata'}, ) file_upload_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) file_upload_config_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to file_upload_config table.' ) file_key: Mapped[str] = mapped_column( String(36), nullable=False, comment='Unique identifier for the file upload (UUID).', ) original_file_name: Mapped[str] = mapped_column( String(255), nullable=False, comment='Original filename from upload.' ) file_size_bytes: Mapped[int] = mapped_column( BIGINT, nullable=False, comment='File size in bytes.' ) s3_bucket: Mapped[str] = mapped_column( String(63), nullable=False, comment='S3 bucket name where the file is stored (e.g., prod-abacus-flowthrough).', ) s3_key: Mapped[str] = mapped_column( String(1024), nullable=False, comment='S3 object key/path for the uploaded file (e.g., uploads/2025/11/00000000-0000-0000-0000-000000000000.csv).', ) upload_status: Mapped[str] = mapped_column( Enum('init', 'scanning', 'complete', 'error', 'cancelled', 'quarantined'), nullable=False, server_default=text("'init'"), comment='Current status of the upload. init: initiated, scanning: scanned by the AV scanner, complete: successfully uploaded, error: failed, cancelled: cancelled by user, quarantined: infected uploads.', ) total_parts: Mapped[int] = mapped_column( SmallInteger, nullable=False, server_default=text("'1'"), comment='Total number of parts for multipart uploads.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) file_type: Mapped[Optional[str]] = mapped_column( String(10), comment='File extension without leading dot and lowercase (e.g., csv, pdf, xlsx).', default=None, ) mime_type: Mapped[Optional[str]] = mapped_column( String(255), comment='MIME type of the file (e.g., text/csv, application/pdf).', default=None, ) md5sum: Mapped[Optional[str]] = mapped_column( String(32), comment='MD5 sum of file contents for integrity verification and duplicate detection.', default=None, ) multipart_upload_id: Mapped[Optional[str]] = mapped_column( String(255), comment='S3 multipart upload ID for large file uploads.', default=None, ) upload_metadata: Mapped[Optional[dict]] = mapped_column( JSON, comment='Additional metadata about the upload (flexible JSON structure).', default=None, ) error_message: Mapped[Optional[str]] = mapped_column( Text, comment='Error message if upload failed.', default=None ) completed_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Timestamp when the upload completed successfully.', default=None, ) expires_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Expiration timestamp for the upload/presigned URL.', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) file_upload_config: Mapped['FileUploadConfig'] = relationship( 'FileUploadConfig', back_populates='file_upload', init=False ) statement_period_adjustment_file: Mapped[list['StatementPeriodAdjustmentFile']] = ( relationship( 'StatementPeriodAdjustmentFile', back_populates='source_file_upload', init=False, ) ) worksheet_flowthrough_batch: Mapped[list['WorksheetFlowthroughBatch']] = ( relationship( 'WorksheetFlowthroughBatch', back_populates='source_file_upload', init=False ) ) class PaymentGroupPayment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_group_payment' __table_args__ = ( ForeignKeyConstraint( ['payment_group_id'], ['payment_group.payment_group_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_group_id', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_group_payment_statement_period', ), Index('fk_payment_group_payment_statement_period', 'statement_period_id'), Index('idx_payment_group_id', 'payment_group_id'), ) payment_group_payment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_group_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payment_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) payment_group: Mapped['PaymentGroup'] = relationship( 'PaymentGroup', back_populates='payment_group_payment', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='payment_group_payment', init=False ) payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']] = ( relationship( 'PaymentGroupPaymentAccount', back_populates='payment_group_payment', init=False, ) ) payment_group_payment_batch: Mapped[list['PaymentGroupPaymentBatch']] = ( relationship( 'PaymentGroupPaymentBatch', back_populates='payment_group_payment', init=False, ) ) report_payment_group_payment: Mapped[list['ReportPaymentGroupPayment']] = ( relationship( 'ReportPaymentGroupPayment', back_populates='payment_group_payment', init=False, ) ) class PaymentHold(Base, CreateMixin, UpdateMixin): __tablename__ = 'payment_hold' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_hold', ), Index('uidx_account_id', 'account_id', unique=True), ) payment_hold_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_on_hold: Mapped[int] = mapped_column(TINYINT(1), nullable=False) start_date: Mapped[datetime.date] = mapped_column(NormalizedDate, nullable=False) reason: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='payment_hold', init=False ) payment_hold_history: Mapped[list['PaymentHoldHistory']] = relationship( 'PaymentHoldHistory', back_populates='payment_hold', init=False ) class ReferencePayoneerProgram(Base): __tablename__ = 'reference_payoneer_program' __table_args__ = ( ForeignKeyConstraint( ['reference_payment_type_id'], ['reference_payment_type.reference_payment_type_id'], name='fk_reference_payoneer_program_reference_payment_type_id', ), Index( 'fk_reference_payoneer_program_reference_payment_type_id', 'reference_payment_type_id', ), ) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, primary_key=True) payoneer_program_name: Mapped[str] = mapped_column(String(255), nullable=False) funding_currency: Mapped[str] = mapped_column(CHAR(3), nullable=False) reference_payment_type_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) reference_payment_type: Mapped['ReferencePaymentType'] = relationship( 'ReferencePaymentType', back_populates='reference_payoneer_program', init=False ) account_payee: Mapped[list['AccountPayee']] = relationship( 'AccountPayee', back_populates='payoneer_program', init=False ) payee: Mapped[list['Payee']] = relationship( 'Payee', back_populates='payoneer_program', init=False ) payment_entity_payoneer_program: Mapped[list['PaymentEntityPayoneerProgram']] = ( relationship( 'PaymentEntityPayoneerProgram', back_populates='payoneer_program', init=False, ) ) payment_group_payment_account: Mapped[list['PaymentGroupPaymentAccount']] = ( relationship( 'PaymentGroupPaymentAccount', back_populates='payoneer_program', init=False ) ) payment_group_payment_batch: Mapped[list['PaymentGroupPaymentBatch']] = ( relationship( 'PaymentGroupPaymentBatch', back_populates='payoneer_program', init=False ) ) class ReferenceSigningEntity(Base, SoftDeleteMixin): __tablename__ = 'reference_signing_entity' __table_args__ = ( ForeignKeyConstraint( ['reference_payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_reference_signing_entity_payment_entity', ), ForeignKeyConstraint( ['reference_sap_profit_center_id'], ['reference_sap_profit_center.reference_sap_profit_center_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_reference_sap_profit_center_signing_entity', ), Index( 'fk_reference_sap_profit_center_signing_entity', 'reference_sap_profit_center_id', ), Index( 'fk_reference_signing_entity_payment_entity', 'reference_payment_entity_id' ), ) reference_signing_entity_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) reference_payment_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) company_code: Mapped[str] = mapped_column( String(8, 'utf8mb4_general_ci'), nullable=False ) legal_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) reference_sap_profit_center_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) tax_entity_company_code: Mapped[Optional[str]] = mapped_column( String(8, 'utf8mb4_general_ci'), default=None ) vat_number: Mapped[Optional[str]] = mapped_column( String(30, 'utf8mb4_general_ci'), default=None ) company_registration_number: Mapped[Optional[str]] = mapped_column( String(30, 'utf8mb4_general_ci'), default=None ) address: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) reference_payment_entity: Mapped['ReferencePaymentEntity'] = relationship( 'ReferencePaymentEntity', back_populates='reference_signing_entity', init=False ) reference_sap_profit_center: Mapped['ReferenceSapProfitCenter'] = relationship( 'ReferenceSapProfitCenter', back_populates='reference_signing_entity', init=False, ) contract: Mapped[list['Contract']] = relationship( 'Contract', back_populates='reference_signing_entity', init=False ) contract_history: Mapped[list['ContractHistory']] = relationship( 'ContractHistory', back_populates='reference_signing_entity', init=False ) contract_template: Mapped[list['ContractTemplate']] = relationship( 'ContractTemplate', back_populates='reference_signing_entity', init=False ) signing_entity_sap_profit_center: Mapped[list['SigningEntitySapProfitCenter']] = ( relationship( 'SigningEntitySapProfitCenter', back_populates='reference_signing_entity', init=False, ) ) class ReferenceTransactionTypeGroupTransactionType(Base): __tablename__ = 'reference_transaction_type_group_transaction_type' __table_args__ = ( ForeignKeyConstraint( ['reference_transaction_type_group_id'], ['reference_transaction_type_group.reference_transaction_type_group_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_type_group_id', ), ForeignKeyConstraint( ['reference_transaction_type_id'], ['reference_transaction_type.reference_transaction_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_type_transaction_id', ), Index( 'idx_reference_transaction_type_group_id', 'reference_transaction_type_group_id', ), Index('idx_reference_transaction_type_id', 'reference_transaction_type_id'), ) reference_transaction_type_group_transaction_type_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) reference_transaction_type_group_id: Mapped[int] = mapped_column( TINYINT, nullable=False ) reference_transaction_type_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) reference_transaction_type_group_admin: Mapped[Optional[str]] = mapped_column( Enum( 'contract_admin', 'workstation', 'tax_admin', 'contract_mechanical_admin', 'presentational', ), default=None, ) reference_transaction_type_group: Mapped['ReferenceTransactionTypeGroup'] = ( relationship( 'ReferenceTransactionTypeGroup', back_populates='reference_transaction_type_group_transaction_type', init=False, ) ) reference_transaction_type: Mapped['ReferenceTransactionType'] = relationship( 'ReferenceTransactionType', back_populates='reference_transaction_type_group_transaction_type', init=False, ) class ReportCustom(Base, CreateMixin): __tablename__ = 'report_custom' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_report_custom_account', ), Index('fk_report_custom_account', 'account_id'), ) report_custom_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_ids: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) revenue_type: Mapped[str] = mapped_column( ENUM('distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) revenue_display_type: Mapped[str] = mapped_column( ENUM('net', 'gross'), nullable=False, server_default=text("'net'") ) report_custom_status: Mapped[str] = mapped_column( ENUM('in_progress', 'complete', 'error'), nullable=False, server_default=text("'in_progress'"), ) dimension_row: Mapped[str] = mapped_column( ENUM( 'product', 'statement_period', 'service', 'recording', 'territory', 'product_artist', 'collection_society', 'transaction_type', 'track', 'imprint', 'subaccount', 'project', ), nullable=False, ) dimension_column: Mapped[str] = mapped_column( ENUM('territory', 'statement_period', 'financial_detail'), nullable=False ) number_format: Mapped[str] = mapped_column( ENUM('us', 'eu'), nullable=False, server_default=text("'us'") ) file_type: Mapped[str] = mapped_column( ENUM('csv', 'xls', 'txt'), nullable=False, server_default=text("'csv'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) subaccount_id: Mapped[Optional[int]] = mapped_column(Integer, default=None) filters: Mapped[Optional[dict]] = mapped_column(JSON, default=None) file_location: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='report_custom', init=False ) class ScheduleAttachment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'schedule_attachment' __table_args__ = ( ForeignKeyConstraint( ['schedule_id'], ['schedule.schedule_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_schedule_attachment_schedule', ), Index('fk_schedule_attachment_schedule', 'schedule_id'), ) schedule_attachment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) target_type: Mapped[str] = mapped_column( ENUM('contribution', 'contributor'), nullable=False ) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) schedule: Mapped['Schedule'] = relationship( 'Schedule', back_populates='schedule_attachment', init=False ) class ScheduleHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'schedule_history' __table_args__ = ( ForeignKeyConstraint( ['schedule_id'], ['schedule.schedule_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_schedule_id', ), Index('fk_schedule_id', 'schedule_id'), ) schedule_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) schedule_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) target_type: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) conditions: Mapped[Optional[dict]] = mapped_column(JSON, default=None) schedule: Mapped['Schedule'] = relationship( 'Schedule', back_populates='schedule_history', init=False ) class StatementAttachment(Base, CreateMixin): __tablename__ = 'statement_attachment' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_statement_attachment_account', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_statement_attachment_statement_period', ), Index('fk_statement_attachment_account', 'account_id'), Index('fk_statement_attachment_contract', 'contract_id'), Index('fk_statement_attachment_statement_period', 'statement_period_id'), Index( 'uidx_statement_attachment_invoice_number', 'invoice_number', unique=True ), ) statement_attachment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_attachment_status: Mapped[str] = mapped_column( ENUM('in_progress', 'complete', 'error', 'retry'), nullable=False ) statement_attachment_type: Mapped[str] = mapped_column( ENUM( 'distribution_fee_invoice', 'self_billing_invoice', 'revenue_detail', 'nr_performer_revenue', 'nr_label_revenue', 'statement_awal', 'statement_knr_performer', 'statement_knr_label', 'collection_summary_label', 'collection_summary_performer', 'publishing_detail', 'internal_upload', 'legacy_revenue_detail_full', 'legacy_revenue_detail_physical', ), nullable=False, ) file_type: Mapped[str] = mapped_column( ENUM('csv', 'pdf', 'xls', 'xlsx', 'png', 'jpg', 'doc', 'docx', 'txt'), nullable=False, ) number_format: Mapped[str] = mapped_column( ENUM('us', 'eu'), nullable=False, server_default=text("'us'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) subaccount_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) statement_period_ids: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) failure_reason: Mapped[Optional[str]] = mapped_column( ENUM('missing_tax_information', 'missing_bank_information', 'system_error'), default=None, ) filters: Mapped[Optional[dict]] = mapped_column(JSON, default=None) invoice_number: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) file_location: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='statement_attachment', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='statement_attachment', init=False ) class StatementPeriodPaymentEntity(Base): __tablename__ = 'statement_period_payment_entity' __table_args__ = ( ForeignKeyConstraint( ['reference_payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_reference_payment_entity', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_payment_entity', ), Index('fk_statement_period_payment_entity', 'statement_period_id'), Index( 'fk_statement_period_reference_payment_entity', 'reference_payment_entity_id', ), ) statement_period_payment_entity_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_visible_to_customer: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) reference_payment_entity_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) reference_payment_entity: Mapped[Optional['ReferencePaymentEntity']] = relationship( 'ReferencePaymentEntity', back_populates='statement_period_payment_entity', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='statement_period_payment_entity', init=False ) class VatSummaryFile(Base, CreateMixin): __tablename__ = 'vat_summary_file' __table_args__ = ( ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_vat_summary_file_statement_period', ), Index('fk_vat_summary_file_statement_period', 'statement_period_id'), ) vat_summary_file_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_location: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='vat_summary_file', init=False ) class AccountPayee(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_payee' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payee_account', ), ForeignKeyConstraint( ['payoneer_program_id'], ['reference_payoneer_program.payoneer_program_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_payoneer_program_id', ), ForeignKeyConstraint( ['reference_payment_type_id'], ['reference_payment_type.reference_payment_type_id'], name='fk_reference_payment_type_id', ), Index('fk_account_payee_account', 'account_id'), Index('fk_payoneer_program_id', 'payoneer_program_id'), Index('fk_reference_payment_type_id', 'reference_payment_type_id'), Index('uidx_account_id', 'account_id', unique=True), Index('unique_sap_vendor_id', 'sap_vendor_id', unique=True), ) account_payee_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payment_description: Mapped[str] = mapped_column( String(250, 'utf8mb4_general_ci'), nullable=False, server_default=text("''") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payoneer_program_id: Mapped[Optional[int]] = mapped_column(INTEGER, default=None) payoneer_payee_id: Mapped[Optional[int]] = mapped_column(BIGINT, default=None) payoneer_payee_name: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) payoneer_iframe_url: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) payoneer_iframe_url_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) payoneer_session_id: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) sap_vendor_id: Mapped[Optional[int]] = mapped_column(INTEGER, default=None) reference_payment_type_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_payee', init=False ) payoneer_program: Mapped[Optional['ReferencePayoneerProgram']] = relationship( 'ReferencePayoneerProgram', back_populates='account_payee', init=False ) reference_payment_type: Mapped[Optional['ReferencePaymentType']] = relationship( 'ReferencePaymentType', back_populates='account_payee', init=False ) account_payee_history: Mapped[list['AccountPayeeHistory']] = relationship( 'AccountPayeeHistory', back_populates='account_payee', init=False ) account_payee_kyc_notification: Mapped[list['AccountPayeeKycNotification']] = ( relationship( 'AccountPayeeKycNotification', back_populates='account_payee', init=False ) ) account_payee_tax_form_info: Mapped[list['AccountPayeeTaxFormInfo']] = relationship( 'AccountPayeeTaxFormInfo', back_populates='account_payee', init=False ) tax_withholding_override: Mapped[list['TaxWithholdingOverride']] = relationship( 'TaxWithholdingOverride', back_populates='account_payee', init=False ) class AccountPaymentTermHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_payment_term_history' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_history_account', ), ForeignKeyConstraint( ['account_payment_term_id'], ['account_payment_term.account_payment_term_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_history_payment_term_id', ), ForeignKeyConstraint( ['payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_term_history_payment_entity', ), Index('fk_account_payment_term_history_account', 'account_id'), Index('fk_account_payment_term_history_payment_entity', 'payment_entity_id'), Index( 'fk_account_payment_term_history_payment_term_id', 'account_payment_term_id' ), ) account_payment_term_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payment_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payment_minimum: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(10, 2), default=None ) payment_entity_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) agreement_type_id: Mapped[Optional[int]] = mapped_column(TINYINT, default=None) payment_schedule: Mapped[Optional[str]] = mapped_column( ENUM( '30_days_after_month_end', '45_days_after_month_end', '60_days_after_month_end', '90_days_after_month_end', '30_days_after_quarter_end', '45_days_after_quarter_end', '60_days_after_quarter_end', '90_days_after_quarter_end', '30_days_after_half_year_end', '45_days_after_half_year_end', '60_days_after_half_year_end', '90_days_after_half_year_end', 'TEMPORARY', ), default=None, ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_payment_term_history', init=False ) account_payment_term: Mapped['AccountPaymentTerm'] = relationship( 'AccountPaymentTerm', back_populates='account_payment_term_history', init=False ) payment_entity: Mapped[Optional['ReferencePaymentEntity']] = relationship( 'ReferencePaymentEntity', back_populates='account_payment_term_history', init=False, ) class AccountTaxInfoHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_tax_info_history' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_tax_info_history_account', ), ForeignKeyConstraint( ['account_tax_info_id'], ['account_tax_info.account_tax_info_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_tax_info_id', ), Index('fk_account_tax_info_history_account', 'account_id'), Index('fk_account_tax_info_id', 'account_tax_info_id'), ) account_tax_info_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_tax_info_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_vat_exempt: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) is_tax_treaty_claimed: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) is_wht_applicable: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) country_of_tax_residence: Mapped[Optional[str]] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), default=None ) is_sba_signed: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) tax_employment_type: Mapped[Optional[str]] = mapped_column( ENUM( 'Business', 'Employed Individual', 'Self-Employed Individual (< 2 years)', 'Self-Employed Individual (>= 2 years)', 'Individual', 'Small Business that is not required to register for EU VAT', ), default=None, ) certificate_of_residence_expiration_date: Mapped[Optional[datetime.date]] = ( mapped_column(NormalizedDate, default=None) ) is_resident_of_spanish_islands: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) wht_rate_override: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_tax_info_history', init=False ) account_tax_info: Mapped['AccountTaxInfo'] = relationship( 'AccountTaxInfo', back_populates='account_tax_info_history', init=False ) reports_tax_info: Mapped[list['ReportsTaxInfo']] = relationship( 'ReportsTaxInfo', back_populates='account_tax_info_history', init=False ) class AccountingPeriodReport(Base, CreateMixin, UpdateMixin): __tablename__ = 'accounting_period_report' __table_args__ = ( ForeignKeyConstraint( ['accounting_period_id'], ['accounting_period.accounting_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_accounting_period_report_acc_period', ), Index('fk_accounting_period_report_acc_period', 'accounting_period_id'), ) accounting_period_report_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounting_period_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) report_type: Mapped[str] = mapped_column( String(32, 'utf8mb4_general_ci'), nullable=False ) report_export_url: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) accounting_period: Mapped['AccountingPeriod'] = relationship( 'AccountingPeriod', back_populates='accounting_period_report', init=False ) class AccountingRun(Base, CreateMixin, UpdateMixin): __tablename__ = 'accounting_run' __table_args__ = ( ForeignKeyConstraint( ['accounting_period_id'], ['accounting_period.accounting_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_acct_run_acct_period', ), ForeignKeyConstraint( ['run_controller_id'], ['run_controller.run_controller_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_acc_run_run_ctrl', ), Index('idx_acct_period_id', 'accounting_period_id'), Index('idx_run_ctrl_id', 'run_controller_id'), ) accounting_run_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounting_period_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) run_controller_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) run_status: Mapped[str] = mapped_column( ENUM( 'No Action Taken', 'Waiting to Run', 'Running', 'Error', 'Complete', 'Invalid', 'Committing', 'Committed', 'Skipped', 'Sent to Workstation', 'Export Payments', ), nullable=False, server_default=text("'No Action Taken'"), ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) start_date: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) end_date: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) summary_export_url: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) accounting_period: Mapped['AccountingPeriod'] = relationship( 'AccountingPeriod', back_populates='accounting_run', init=False ) run_controller: Mapped['RunController'] = relationship( 'RunController', back_populates='accounting_run', init=False ) ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']] = ( relationship( 'LedgerAccountingRunBalance', back_populates='accounting_run', init=False ) ) ledger_accounting_run_vat: Mapped[list['LedgerAccountingRunVat']] = relationship( 'LedgerAccountingRunVat', back_populates='accounting_run', init=False ) ledger_reserve_taken: Mapped[list['LedgerReserveTaken']] = relationship( 'LedgerReserveTaken', back_populates='accounting_run', init=False ) class Contract(Base, CreateMixin, UpdateMixin): __tablename__ = 'contract' __table_args__ = ( ForeignKeyConstraint( ['reference_sap_profit_center_id'], ['reference_sap_profit_center.reference_sap_profit_center_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_reference_sap_profit_center', ), ForeignKeyConstraint( ['reference_signing_entity_id'], ['reference_signing_entity.reference_signing_entity_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_reference_signing_entity', ), Index( 'fk_contract_reference_sap_profit_center', 'reference_sap_profit_center_id' ), Index('fk_contract_reference_signing_entity', 'reference_signing_entity_id'), ) contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) reference_signing_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_sap_profit_center_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) contract_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, server_default=text("''") ) contract_type: Mapped[str] = mapped_column( ENUM('distribution', 'legacy_distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) is_primary_contract: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) is_paythrough_contract: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) sap_created_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) initial_start_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) execution_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) is_excluded_from_accounting_run: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) summary_note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) general_note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) term_start: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) term_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) reference_sap_profit_center: Mapped['ReferenceSapProfitCenter'] = relationship( 'ReferenceSapProfitCenter', back_populates='contract', init=False ) reference_signing_entity: Mapped['ReferenceSigningEntity'] = relationship( 'ReferenceSigningEntity', back_populates='contract', init=False ) account_contract: Mapped[list['AccountContract']] = relationship( 'AccountContract', back_populates='contract', init=False ) account_contract_vat_detail: Mapped[list['AccountContractVatDetail']] = ( relationship('AccountContractVatDetail', back_populates='contract', init=False) ) contract_advance: Mapped[list['ContractAdvance']] = relationship( 'ContractAdvance', back_populates='contract', init=False ) contract_exclusion: Mapped[list['ContractExclusion']] = relationship( 'ContractExclusion', back_populates='contract', init=False ) contract_flowthrough: Mapped[list['ContractFlowthrough']] = relationship( 'ContractFlowthrough', back_populates='contract', init=False ) contract_lifecycle_schedule: Mapped[list['ContractLifecycleSchedule']] = ( relationship('ContractLifecycleSchedule', back_populates='contract', init=False) ) contract_mechanical_deduction: Mapped[list['ContractMechanicalDeduction']] = ( relationship( 'ContractMechanicalDeduction', back_populates='contract', init=False ) ) contract_party: Mapped[list['ContractParty']] = relationship( 'ContractParty', back_populates='contract', init=False ) contract_reserve: Mapped[list['ContractReserve']] = relationship( 'ContractReserve', back_populates='contract', init=False ) contract_term: Mapped[list['ContractTerm']] = relationship( 'ContractTerm', back_populates='contract', init=False ) earnings_transfer: Mapped[list['EarningsTransfer']] = relationship( 'EarningsTransfer', foreign_keys='[EarningsTransfer.from_contract_id]', back_populates='from_contract', init=False, ) earnings_transfer_: Mapped[list['EarningsTransfer']] = relationship( 'EarningsTransfer', foreign_keys='[EarningsTransfer.to_contract_id]', back_populates='to_contract', init=False, ) ledger_account: Mapped[list['LedgerAccount']] = relationship( 'LedgerAccount', back_populates='contract', init=False ) ledger_account_contract: Mapped[list['LedgerAccountContract']] = relationship( 'LedgerAccountContract', back_populates='contract', init=False ) ledger_accounting_run_balance: Mapped[list['LedgerAccountingRunBalance']] = ( relationship( 'LedgerAccountingRunBalance', back_populates='contract', init=False ) ) ledger_accounting_run_vat: Mapped[list['LedgerAccountingRunVat']] = relationship( 'LedgerAccountingRunVat', back_populates='contract', init=False ) ledger_adjustment: Mapped[list['LedgerAdjustment']] = relationship( 'LedgerAdjustment', back_populates='contract', init=False ) ledger_adjustment_detail: Mapped[list['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', back_populates='contract', init=False ) ledger_contract_flowthrough: Mapped[list['LedgerContractFlowthrough']] = ( relationship('LedgerContractFlowthrough', back_populates='contract', init=False) ) ledger_deposit: Mapped[list['LedgerDeposit']] = relationship( 'LedgerDeposit', back_populates='contract', init=False ) ledger_vat_summary: Mapped[list['LedgerVatSummary']] = relationship( 'LedgerVatSummary', back_populates='contract', init=False ) legacy_contract: Mapped[list['LegacyContract']] = relationship( 'LegacyContract', back_populates='contract', init=False ) payment_allocation: Mapped[list['PaymentAllocation']] = relationship( 'PaymentAllocation', back_populates='contract', init=False ) project_transfer_term: Mapped[list['ProjectTransferTerm']] = relationship( 'ProjectTransferTerm', back_populates='contract', init=False ) run_controller_contract: Mapped[list['RunControllerContract']] = relationship( 'RunControllerContract', back_populates='contract', init=False ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='contract', init=False ) worksheet_correction: Mapped[list['WorksheetCorrection']] = relationship( 'WorksheetCorrection', back_populates='contract', init=False ) worksheet_flowthrough: Mapped[list['WorksheetFlowthrough']] = relationship( 'WorksheetFlowthrough', back_populates='contract', init=False ) worksheet_payment_custom: Mapped[list['WorksheetPaymentCustom']] = relationship( 'WorksheetPaymentCustom', back_populates='contract', init=False ) worksheet_tax_correction: Mapped[list['WorksheetTaxCorrection']] = relationship( 'WorksheetTaxCorrection', back_populates='contract', init=False ) worksheet_tax_correction_vat: Mapped[list['WorksheetTaxCorrectionVat']] = ( relationship('WorksheetTaxCorrectionVat', back_populates='contract', init=False) ) contract_advance_history: Mapped[list['ContractAdvanceHistory']] = relationship( 'ContractAdvanceHistory', back_populates='contract', init=False ) contract_lifecycle: Mapped[list['ContractLifecycle']] = relationship( 'ContractLifecycle', back_populates='contract', init=False ) contract_party_history: Mapped[list['ContractPartyHistory']] = relationship( 'ContractPartyHistory', back_populates='contract', init=False ) ledger_account_contract_current_balance: Mapped[ list['LedgerAccountContractCurrentBalance'] ] = relationship( 'LedgerAccountContractCurrentBalance', back_populates='contract', init=False ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='contract', init=False ) ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']] = ( relationship( 'LedgerContractAdvanceApplied', back_populates='contract', init=False ) ) ledger_contract_flowthrough_current_balance: Mapped[ list['LedgerContractFlowthroughCurrentBalance'] ] = relationship( 'LedgerContractFlowthroughCurrentBalance', back_populates='contract', init=False ) ledger_correction: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', back_populates='contract', init=False ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='contract', init=False ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship('WorksheetAdjustmentDetail', back_populates='contract', init=False) ) worksheet_account_contract_payable_after_tax: Mapped[ list['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='contract', init=False ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='contract', init=False ) payment_group_payment_account_detail: Mapped[ list['PaymentGroupPaymentAccountDetail'] ] = relationship( 'PaymentGroupPaymentAccountDetail', back_populates='contract', init=False ) worksheet_account_contract_payable_details: Mapped[ list['WorksheetAccountContractPayableDetails'] ] = relationship( 'WorksheetAccountContractPayableDetails', back_populates='contract', init=False ) class ContractHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'contract_history' __table_args__ = ( ForeignKeyConstraint( ['reference_sap_profit_center_id'], ['reference_sap_profit_center.reference_sap_profit_center_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_contract_history_reference_sap_profit_center', ), ForeignKeyConstraint( ['reference_signing_entity_id'], ['reference_signing_entity.reference_signing_entity_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_contract_history_reference_signing_entity', ), Index('FK_contract_history_contract', 'contract_id'), Index( 'fk_contract_history_reference_sap_profit_center', 'reference_sap_profit_center_id', ), Index( 'fk_contract_history_reference_signing_entity', 'reference_signing_entity_id', ), ) contract_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_signing_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_name: Mapped[str] = mapped_column(String(180), nullable=False) contract_type: Mapped[str] = mapped_column( Enum('distribution', 'legacy_distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) is_primary_contract: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) reference_sap_profit_center_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) sap_created_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) initial_start_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) execution_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) is_excluded_from_accounting_run: Mapped[Optional[int]] = mapped_column( TINYINT(1), server_default=text("'0'"), default=None ) summary_note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) general_note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) term_start: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) term_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) reference_sap_profit_center: Mapped[Optional['ReferenceSapProfitCenter']] = ( relationship( 'ReferenceSapProfitCenter', back_populates='contract_history', init=False ) ) reference_signing_entity: Mapped['ReferenceSigningEntity'] = relationship( 'ReferenceSigningEntity', back_populates='contract_history', init=False ) class ContractTemplate(Base, CreateMixin, UpdateMixin): __tablename__ = 'contract_template' __table_args__ = ( ForeignKeyConstraint( ['reference_signing_entity_id'], ['reference_signing_entity.reference_signing_entity_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_template_reference_signing_entity', ), ForeignKeyConstraint( ['run_controller_id'], ['run_controller.run_controller_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_template_run_controller', ), Index( 'fk_contract_template_reference_signing_entity', 'reference_signing_entity_id', ), Index('fk_contract_template_run_controller', 'run_controller_id'), ) contract_template_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) template_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) reference_signing_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_type: Mapped[str] = mapped_column( ENUM('distribution', 'legacy_distribution', 'neighbouring_rights'), nullable=False, server_default=text("'distribution'"), ) contract_terms: Mapped[dict] = mapped_column(JSON, nullable=False) contract_exclusions: Mapped[dict] = mapped_column(JSON, nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) run_controller_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) term_duration_year: Mapped[Optional[int]] = mapped_column(TINYINT, default=None) reference_signing_entity: Mapped['ReferenceSigningEntity'] = relationship( 'ReferenceSigningEntity', back_populates='contract_template', init=False ) run_controller: Mapped[Optional['RunController']] = relationship( 'RunController', back_populates='contract_template', init=False ) class Payee(Base, CreateMixin, UpdateMixin): __tablename__ = 'payee' __table_args__ = ( ForeignKeyConstraint( ['payoneer_program_id'], ['reference_payoneer_program.payoneer_program_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payee_payoneer_program_id', ), ForeignKeyConstraint( ['reference_payment_type_id'], ['reference_payment_type.reference_payment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payee_reference_payment_type_id', ), Index('fk_payee_payoneer_program_id', 'payoneer_program_id'), Index('fk_payee_reference_payment_type_id', 'reference_payment_type_id'), Index( 'uidx_payee_payoneer_client_reference_id', 'payoneer_client_reference_id', unique=True, ), ) payee_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) reference_payment_type_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) payoneer_client_reference_id: Mapped[str] = mapped_column( String(255), nullable=False ) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, nullable=False) payee_type: Mapped[str] = mapped_column(Enum('collaborator'), nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payoneer_assigned_id: Mapped[Optional[int]] = mapped_column(BIGINT, default=None) payee_name: Mapped[Optional[str]] = mapped_column(String(255), default=None) payoneer_program: Mapped['ReferencePayoneerProgram'] = relationship( 'ReferencePayoneerProgram', back_populates='payee', init=False ) reference_payment_type: Mapped['ReferencePaymentType'] = relationship( 'ReferencePaymentType', back_populates='payee', init=False ) payee_collaborator: Mapped[list['PayeeCollaborator']] = relationship( 'PayeeCollaborator', back_populates='payee', init=False ) payee_kyc_notification: Mapped[list['PayeeKycNotification']] = relationship( 'PayeeKycNotification', back_populates='payee', init=False ) class PaymentEntityPayoneerProgram(Base): __tablename__ = 'payment_entity_payoneer_program' __table_args__ = ( ForeignKeyConstraint( ['agreement_type_id'], ['reference_agreement_type.reference_agreement_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_entity_payoneer_program_agreement_type', ), ForeignKeyConstraint( ['payoneer_program_id'], ['reference_payoneer_program.payoneer_program_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payoneer_program_payment_entity', ), ForeignKeyConstraint( ['reference_payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payoneer_program_reference_payment_entity', ), Index('fk_payment_entity_payoneer_program_agreement_type', 'agreement_type_id'), Index('fk_payoneer_program_payment_entity', 'payoneer_program_id'), Index( 'fk_payoneer_program_reference_payment_entity', 'reference_payment_entity_id', ), ) payment_entity_payoneer_program_id: Mapped[int] = mapped_column( SMALLINT, primary_key=True, autoincrement=True, init=False ) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, nullable=False) payment_currency: Mapped[str] = mapped_column(CHAR(3), nullable=False) agreement_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) reference_payment_entity_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) agreement_type: Mapped['ReferenceAgreementType'] = relationship( 'ReferenceAgreementType', back_populates='payment_entity_payoneer_program', init=False, ) payoneer_program: Mapped['ReferencePayoneerProgram'] = relationship( 'ReferencePayoneerProgram', back_populates='payment_entity_payoneer_program', init=False, ) reference_payment_entity: Mapped[Optional['ReferencePaymentEntity']] = relationship( 'ReferencePaymentEntity', back_populates='payment_entity_payoneer_program', init=False, ) class PaymentGroupPaymentAccount(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_group_payment_account' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_group_account_account', ), ForeignKeyConstraint( ['current_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_account_current_statement_period', ), ForeignKeyConstraint( ['last_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_account_last_statement_period', ), ForeignKeyConstraint( ['payment_group_payment_id'], ['payment_group_payment.payment_group_payment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_group_account_group_payment', ), ForeignKeyConstraint( ['payoneer_program_id'], ['reference_payoneer_program.payoneer_program_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_payment_account_reference_payoneer_program', ), Index( 'fk_payment_account_current_statement_period', 'current_statement_period_id' ), Index('fk_payment_account_last_statement_period', 'last_statement_period_id'), Index('fk_payment_account_reference_payoneer_program', 'payoneer_program_id'), Index('idx_account_id', 'account_id'), Index('idx_group_payment_id', 'payment_group_payment_id'), Index( 'uidx_group_payment_account', 'payment_group_payment_id', 'account_id', unique=True, ), ) payment_group_payment_account_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_group_payment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, nullable=False) current_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) last_payment: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) current_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) balance_after_tax: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) prior_payment_group_payment_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) last_statement_period_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) contracts_payable: Mapped[Optional[dict]] = mapped_column(JSON, default=None) tax_withholding: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) note: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='payment_group_payment_account', init=False ) current_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[current_statement_period_id], back_populates='payment_group_payment_account', init=False, ) last_statement_period: Mapped[Optional['StatementPeriod']] = relationship( 'StatementPeriod', foreign_keys=[last_statement_period_id], back_populates='payment_group_payment_account_', init=False, ) payment_group_payment: Mapped['PaymentGroupPayment'] = relationship( 'PaymentGroupPayment', back_populates='payment_group_payment_account', init=False, ) payoneer_program: Mapped['ReferencePayoneerProgram'] = relationship( 'ReferencePayoneerProgram', back_populates='payment_group_payment_account', init=False, ) payment_group_payment_batch_account: Mapped[ list['PaymentGroupPaymentBatchAccount'] ] = relationship( 'PaymentGroupPaymentBatchAccount', back_populates='payment_group_payment_account', init=False, ) payment_group_payment_account_detail: Mapped[ list['PaymentGroupPaymentAccountDetail'] ] = relationship( 'PaymentGroupPaymentAccountDetail', back_populates='payment_group_payment_account', init=False, ) class PaymentGroupPaymentBatch(Base, CreateMixin, UpdateMixin): __tablename__ = 'payment_group_payment_batch' __table_args__ = ( ForeignKeyConstraint( ['payment_group_payment_id'], ['payment_group_payment.payment_group_payment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_batch_payment_group_payment', ), ForeignKeyConstraint( ['payoneer_program_id'], ['reference_payoneer_program.payoneer_program_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_payment_batch_reference_payoneer_program', ), Index('fk_payment_batch_payment_group_payment', 'payment_group_payment_id'), Index('fk_payment_batch_reference_payoneer_program', 'payoneer_program_id'), ) payment_group_payment_batch_id: Mapped[int] = mapped_column( BIGINT, primary_key=True, autoincrement=True, init=False ) payment_group_payment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payoneer_program_id: Mapped[int] = mapped_column(INTEGER, nullable=False) batch_num: Mapped[int] = mapped_column( TINYINT, nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payment_group_payment: Mapped['PaymentGroupPayment'] = relationship( 'PaymentGroupPayment', back_populates='payment_group_payment_batch', init=False ) payoneer_program: Mapped['ReferencePayoneerProgram'] = relationship( 'ReferencePayoneerProgram', back_populates='payment_group_payment_batch', init=False, ) payment_group_payment_batch_account: Mapped[ list['PaymentGroupPaymentBatchAccount'] ] = relationship( 'PaymentGroupPaymentBatchAccount', back_populates='payment_group_payment_batch', init=False, ) class PaymentHoldHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'payment_hold_history' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payment_hold_history', ), ForeignKeyConstraint( ['payment_hold_id'], ['payment_hold.payment_hold_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_hold_payment_hold_history', ), Index('fk_account_payment_hold_history', 'account_id'), Index('fk_payment_hold_payment_hold_history', 'payment_hold_id'), ) payment_hold_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_hold_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_on_hold: Mapped[int] = mapped_column(TINYINT(1), nullable=False) start_date: Mapped[datetime.date] = mapped_column(NormalizedDate, nullable=False) reason: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) end_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='payment_hold_history', init=False ) payment_hold: Mapped['PaymentHold'] = relationship( 'PaymentHold', back_populates='payment_hold_history', init=False ) class ReportPaymentGroupPayment(Base, CreateMixin, UpdateMixin): __tablename__ = 'report_payment_group_payment' __table_args__ = ( ForeignKeyConstraint( ['payment_group_payment_id'], ['payment_group_payment.payment_group_payment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_report_payment_group_payment', ), Index( 'uidx_payment_group_payment_report', 'payment_group_payment_id', 'report_type', unique=True, ), ) report_payment_group_payment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_group_payment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) report_type: Mapped[str] = mapped_column( String(32, 'utf8mb4_general_ci'), nullable=False ) report_export_url: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payment_group_payment: Mapped['PaymentGroupPayment'] = relationship( 'PaymentGroupPayment', back_populates='report_payment_group_payment', init=False ) class SalesFile(Base, CreateMixin, UpdateMixin): __tablename__ = 'sales_file' __table_args__ = ( ForeignKeyConstraint( ['accounting_period_id'], ['accounting_period.accounting_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_sales_file_acct_period', ), Index('idx_acct_period_id', 'accounting_period_id'), Index('uidx_main_url', 'main_url', unique=True), ) sales_file_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) file_name: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False ) accounting_period_id: Mapped[int] = mapped_column(SMALLINT, nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) row_count: Mapped[Optional[int]] = mapped_column(INTEGER, default=None) main_url: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) amount_usd: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) accounting_period: Mapped['AccountingPeriod'] = relationship( 'AccountingPeriod', back_populates='sales_file', init=False ) class SigningEntitySapProfitCenter(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'signing_entity_sap_profit_center' __table_args__ = ( ForeignKeyConstraint( ['reference_sap_profit_center_id'], ['reference_sap_profit_center.reference_sap_profit_center_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_sespc_sap_profit_center', ), ForeignKeyConstraint( ['reference_signing_entity_id'], ['reference_signing_entity.reference_signing_entity_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_sespc_signing_entity', ), Index('idx_sespc_sap_profit_center', 'reference_sap_profit_center_id'), Index( 'uidx_sespc_signing_entity_sap_profit_center', 'reference_signing_entity_id', 'reference_sap_profit_center_id', unique=True, ), { 'comment': 'Mapping table. Authorizes which SAP profit centers a signing ' 'entity may route revenue through.' }, ) signing_entity_sap_profit_center_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) reference_signing_entity_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Signing entity authorized for this profit center.', ) reference_sap_profit_center_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='SAP profit center the signing entity is authorized to route revenue to.', ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) reference_sap_profit_center: Mapped['ReferenceSapProfitCenter'] = relationship( 'ReferenceSapProfitCenter', back_populates='signing_entity_sap_profit_center', init=False, ) reference_signing_entity: Mapped['ReferenceSigningEntity'] = relationship( 'ReferenceSigningEntity', back_populates='signing_entity_sap_profit_center', init=False, ) class StatementPeriodAdjustmentFile(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'statement_period_adjustment_file' __table_args__ = ( ForeignKeyConstraint( ['source_file_upload_id'], ['file_upload.file_upload_id'], name='fk_source_file_upload_id', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_adjustment_file_statement_period', ), Index('fk_source_file_upload_id', 'source_file_upload_id'), Index( 'fk_statement_period_adjustment_file_statement_period', 'statement_period_id', ), Index( 'idx_statement_period_adjustment_file_deleted', 'deleted_at', 'deleted_by' ), ) statement_period_adjustment_file_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) batch_type: Mapped[str] = mapped_column( ENUM('auto', 'manual', 'upload'), nullable=False, server_default=text("'upload'"), comment='Batch creation type: auto (generated), manual (UI entry), upload (file upload).', ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) valid_file_location: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) invalid_file_location: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) valid_row_count: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) invalid_row_count: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) total_file_amount_multicurrency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(25, 12), default=None ) total_rounded_amount_multicurrency: Mapped[Optional[decimal.Decimal]] = ( mapped_column(DECIMAL(20, 2), default=None) ) md5sum: Mapped[Optional[str]] = mapped_column( String(35, 'utf8mb4_general_ci'), default=None ) error_type: Mapped[Optional[str]] = mapped_column( ENUM('format_error', 'content_error', 'row_count_error'), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) source_file_upload_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) source_file_upload: Mapped[Optional['FileUpload']] = relationship( 'FileUpload', back_populates='statement_period_adjustment_file', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='statement_period_adjustment_file', init=False ) statement_period_adjustment_batch_criteria: Mapped[ list['StatementPeriodAdjustmentBatchCriteria'] ] = relationship( 'StatementPeriodAdjustmentBatchCriteria', back_populates='statement_period_adjustment_file', init=False, ) worksheet_adjustment: Mapped[list['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='statement_period_adjustment_file', init=False, ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', back_populates='statement_period_adjustment_file', init=False, ) ) class WorksheetFlowthroughBatch(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_flowthrough_batch' __table_args__ = ( ForeignKeyConstraint( ['source_file_upload_id'], ['file_upload.file_upload_id'], ondelete='SET NULL', name='fk_worksheet_flowthrough_batch_source_file', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', name='fk_worksheet_flowthrough_batch_statement_period', ), Index('fk_worksheet_flowthrough_batch_source_file', 'source_file_upload_id'), Index('fk_worksheet_flowthrough_batch_statement_period', 'statement_period_id'), Index('idx_batch_status', 'batch_status'), Index('idx_created_at', 'created_at'), { 'comment': 'Batches of flowthrough data from file uploads, UI entry, or ' 'automatic generation. Tracks processing and approval statuses.' }, ) worksheet_flowthrough_batch_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to statement_period table.' ) batch_type: Mapped[str] = mapped_column( Enum('auto', 'manual', 'upload'), nullable=False, comment='Batch creation type: auto (generated), manual (UI entry), upload (file upload).', ) batch_status: Mapped[str] = mapped_column( Enum( 'pending', 'validating', 'importing', 'pending_approval', 'approved', 'rejected', 'applied', 'error', ), nullable=False, server_default=text("'pending'"), comment='Processing and approval status: pending (queued), validating (rules check), importing (writing to DB), pending_approval (awaiting human review), approved (accepted), rejected (declined), applied (writing to DB), error (failed processing).', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) source_file_upload_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='The uploaded source file that created this batch. NULL for manual/auto batch types.', default=None, ) errors: Mapped[Optional[dict]] = mapped_column( JSON, comment='Array of error codes. Example: ["HEADER_MISSING"]. NULL if no errors. See table reference_worksheet_flowthrough_batch_error for codes.', default=None, ) error_row_count: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Number of batch rows with errors.', default=None ) row_level_error_count: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Number of errors in batch rows (a single row can have multiple errors). Does not include batch-level errors.', default=None, ) total_row_count: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Total number of batch rows. See worksheet_flowthrough for row data.', default=None, ) total_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(30, 2), comment='Sum of imported amounts after rounding (mixed currencies, not normalized).', default=None, ) total_amount_raw: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(40, 12), comment='Sum of raw amounts from source (mixed currencies, not normalized). Used as checksum to verify import integrity.', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) source_file_upload: Mapped[Optional['FileUpload']] = relationship( 'FileUpload', back_populates='worksheet_flowthrough_batch', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_flowthrough_batch', init=False ) worksheet_flowthrough: Mapped[list['WorksheetFlowthrough']] = relationship( 'WorksheetFlowthrough', back_populates='worksheet_flowthrough_batch', init=False ) worksheet_flowthrough_file: Mapped[list['WorksheetFlowthroughFile']] = relationship( 'WorksheetFlowthroughFile', back_populates='worksheet_flowthrough_batch', init=False, ) class AccountContract(Base): __tablename__ = 'account_contract' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_contract_account_id', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_contract_contract_id', ), Index('fk_account_contract_account_id', 'account_id'), Index('uidx_account_contract_contract', 'contract_id', unique=True), ) account_contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_primary_for_calc: Mapped[Optional[int]] = mapped_column(TINYINT(1), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='account_contract', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='account_contract', init=False ) class AccountContractVatDetail(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_contract_vat_detail' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_vat_detail_account_id', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_vat_detail_contract_id', ), Index('account_id', 'account_id'), Index('account_id_2', 'account_id', 'contract_id', unique=True), Index('contract_id', 'contract_id'), ) account_contract_vat_detail_id: Mapped[int] = mapped_column( Integer, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) is_vat_eligible: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) is_vat_registered: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) company_code: Mapped[Optional[str]] = mapped_column(String(8), default=None) vat_country: Mapped[Optional[str]] = mapped_column(String(60), default=None) created_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) last_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_contract_vat_detail', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='account_contract_vat_detail', init=False ) class AccountPayeeHistory(Base, CreateMixin, UpdateMixin): __tablename__ = 'account_payee_history' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_account_payee_history', ), ForeignKeyConstraint( ['account_payee_id'], ['account_payee.account_payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payee_account_payee_history', ), Index('fk_account_account_payee_history', 'account_id'), Index('fk_account_payee_account_payee_history', 'account_payee_id'), ) account_payee_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payment_description: Mapped[str] = mapped_column( String(250), nullable=False, server_default=text("''") ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payoneer_program_id: Mapped[Optional[int]] = mapped_column(INTEGER, default=None) payoneer_payee_id: Mapped[Optional[int]] = mapped_column(BIGINT, default=None) payoneer_payee_name: Mapped[Optional[str]] = mapped_column( String(180), default=None ) payoneer_iframe_url: Mapped[Optional[str]] = mapped_column( String(180), default=None ) payoneer_iframe_url_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) payoneer_session_id: Mapped[Optional[str]] = mapped_column( String(180), default=None ) sap_vendor_id: Mapped[Optional[int]] = mapped_column(INTEGER, default=None) reference_payment_type_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='account_payee_history', init=False ) account_payee: Mapped['AccountPayee'] = relationship( 'AccountPayee', back_populates='account_payee_history', init=False ) class AccountPayeeKycNotification(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'account_payee_kyc_notification' __table_args__ = ( ForeignKeyConstraint( ['account_payee_id'], ['account_payee.account_payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_apkn_account_payee_id', ), Index('fk_apkn_account_payee_id', 'account_payee_id'), ) account_payee_kyc_notification_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_upload_link: Mapped[str] = mapped_column(String(1000), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) requirement_id: Mapped[Optional[str]] = mapped_column(String(1000), default=None) requirement_type_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) sub_requirement_id: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) possible_sub_requirement_types: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) sub_requirement_status_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) entity_reference_id: Mapped[Optional[str]] = mapped_column(String(36), default=None) entity_reference_type_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account_payee: Mapped['AccountPayee'] = relationship( 'AccountPayee', back_populates='account_payee_kyc_notification', init=False ) class AccountPayeeTaxFormInfo(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'account_payee_tax_form_info' __table_args__ = ( ForeignKeyConstraint( ['account_payee_id'], ['account_payee.account_payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_payee_id', ), Index( 'uidx_account_payee_id_revision_id', 'account_payee_id', 'revision_id', unique=True, ), ) account_payee_tax_form_info_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) tax_form_type: Mapped[str] = mapped_column( ENUM('W9', 'W8', 'W8BEN', 'W8BEN-E', 'W8IMY', 'W8ECI'), nullable=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) revision_id: Mapped[Optional[str]] = mapped_column( String(36, 'utf8mb4_general_ci'), default=None ) signed_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) expiration_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) account_payee: Mapped['AccountPayee'] = relationship( 'AccountPayee', back_populates='account_payee_tax_form_info', init=False ) class ContractAdvance(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_advance' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_contract_advance', ), ForeignKeyConstraint( ['reference_advance_payment_method_id'], ['reference_advance_payment_method.reference_advance_payment_method_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_reference_advance_payment_method', ), ForeignKeyConstraint( ['reference_payment_type_id'], ['reference_payment_type.reference_payment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_reference_payment_type', ), Index( 'fk_contract_advance_reference_advance_payment_method', 'reference_advance_payment_method_id', ), Index( 'fk_contract_advance_reference_payment_type', 'reference_payment_type_id' ), Index('fk_contract_contract_advance', 'contract_id'), ) contract_advance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) advance_description: Mapped[str] = mapped_column(String(180), nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) milestone: Mapped[str] = mapped_column( Enum( 'contract_execution', 'delivery', 'recoupment', 'scheduled_installment', 'sales_milestone', 'other', 'option', 'option_non_contingent', 'fund_contingent', 'fund_non_contingent', ), nullable=False, ) milestone_description: Mapped[str] = mapped_column(Text, nullable=False) advance_status: Mapped[str] = mapped_column( Enum( 'not_qualified', 'qualified', 'approved', 'paid', 'deleted', 'in_review', 'pending_payment', ), nullable=False, server_default=text("'not_qualified'"), ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) reference_payment_type_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) reference_advance_payment_method_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) withholding_tax_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) amount_after_withholding_and_vat: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) us_source_income_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(9, 6), default=None ) milestone_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) note: Mapped[Optional[str]] = mapped_column(String(255), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_advance', init=False ) reference_advance_payment_method: Mapped[ Optional['ReferenceAdvancePaymentMethod'] ] = relationship( 'ReferenceAdvancePaymentMethod', back_populates='contract_advance', init=False ) reference_payment_type: Mapped[Optional['ReferencePaymentType']] = relationship( 'ReferencePaymentType', back_populates='contract_advance', init=False ) contract_advance_history: Mapped[list['ContractAdvanceHistory']] = relationship( 'ContractAdvanceHistory', back_populates='contract_advance', init=False ) ledger_contract_advance_applied: Mapped[list['LedgerContractAdvanceApplied']] = ( relationship( 'LedgerContractAdvanceApplied', back_populates='contract_advance', init=False, ) ) worksheet_payment_contract_advance: Mapped[ list['WorksheetPaymentContractAdvance'] ] = relationship( 'WorksheetPaymentContractAdvance', back_populates='contract_advance', init=False ) class ContractExclusion(Base): __tablename__ = 'contract_exclusion' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_exclusion_contract', ), Index('uidx_contract_id', 'contract_id', unique=True), ) contract_exclusion_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) exclusions: Mapped[dict] = mapped_column(JSON, nullable=False) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_exclusion', init=False ) class ContractFlowthrough(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_flowthrough' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_flowthrough_contract', ), ForeignKeyConstraint( ['reference_flowthrough_calculation_id'], ['reference_flowthrough_calculation.reference_flowthrough_calculation_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_flowthrough_reference_flowthrough_calculation', ), Index('fk_contract_flowthrough_contract', 'contract_id'), Index( 'fk_contract_flowthrough_reference_flowthrough_calculation', 'reference_flowthrough_calculation_id', ), ) contract_flowthrough_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_flowthrough_calculation_id: Mapped[int] = mapped_column( TINYINT, nullable=False ) flowthrough_rate: Mapped[decimal.Decimal] = mapped_column( DECIMAL(5, 2), nullable=False ) flowthrough_status: Mapped[str] = mapped_column( Enum('active', 'shutoff', 'paused'), nullable=False, server_default=text("'active'"), ) has_automatic_shutoff: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) recoupment_cap: Mapped[Optional[int]] = mapped_column(BigInteger, default=None) calculation_comment: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) previous_flowthrough_status: Mapped[Optional[str]] = mapped_column( Enum('active', 'shutoff', 'paused'), default=None ) status_last_modified_by: Mapped[Optional[str]] = mapped_column( String(180), default=None ) status_last_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_flowthrough', init=False ) reference_flowthrough_calculation: Mapped['ReferenceFlowthroughCalculation'] = ( relationship( 'ReferenceFlowthroughCalculation', back_populates='contract_flowthrough', init=False, ) ) class ContractLifecycleSchedule(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_lifecycle_schedule' __table_args__ = ( ForeignKeyConstraint( ['collection_period_detail_id'], [ 'contract_lifecycle_schedule_detail.contract_lifecycle_schedule_detail_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_collection_period_detail_id', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_id', ), ForeignKeyConstraint( ['renewal_offset_detail_id'], [ 'contract_lifecycle_schedule_detail.contract_lifecycle_schedule_detail_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_renewal_offset_detail_id', ), ForeignKeyConstraint( ['termination_notice_detail_id'], [ 'contract_lifecycle_schedule_detail.contract_lifecycle_schedule_detail_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_termination_notice_detail_id', ), Index('fk_collection_period_detail_id', 'collection_period_detail_id'), Index('fk_contract_id', 'contract_id'), Index('fk_renewal_offset_detail_id', 'renewal_offset_detail_id'), Index('fk_termination_notice_detail_id', 'termination_notice_detail_id'), ) contract_lifecycle_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) renewal_type: Mapped[str] = mapped_column( ENUM('continuously_active', 'renew_after_certain_date', 'renew_periodically'), nullable=False, ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) termination_notice_detail_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) renewal_offset_detail_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) collection_period_detail_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) schedule_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) collection_period_detail: Mapped[Optional['ContractLifecycleScheduleDetail']] = ( relationship( 'ContractLifecycleScheduleDetail', foreign_keys=[collection_period_detail_id], back_populates='contract_lifecycle_schedule', init=False, ) ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_lifecycle_schedule', init=False ) renewal_offset_detail: Mapped[Optional['ContractLifecycleScheduleDetail']] = ( relationship( 'ContractLifecycleScheduleDetail', foreign_keys=[renewal_offset_detail_id], back_populates='contract_lifecycle_schedule_', init=False, ) ) termination_notice_detail: Mapped[Optional['ContractLifecycleScheduleDetail']] = ( relationship( 'ContractLifecycleScheduleDetail', foreign_keys=[termination_notice_detail_id], back_populates='contract_lifecycle_schedule1', init=False, ) ) contract_lifecycle: Mapped[list['ContractLifecycle']] = relationship( 'ContractLifecycle', back_populates='contract_lifecycle_schedule', init=False ) class ContractMechanicalDeduction(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_mechanical_deduction' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_mechanical_deduction_contract', ), Index( 'unique_contract_mech_deduction', 'contract_id', 'territory', 'deleted_at', unique=True, ), ) contract_mechanical_deduction_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) territory: Mapped[str] = mapped_column(ENUM('USA', 'CAN', 'ROW'), nullable=False) mechanical_type: Mapped[str] = mapped_column( SET('digital', 'physical', 'ringtone'), nullable=False ) admin_type: Mapped[str] = mapped_column( ENUM('both', 'business', 'customer'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) admin_fee: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_mechanical_deduction', init=False ) class ContractParty(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_party' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_party_contract', ), Index('fk_contract_party_contract', 'contract_id'), ) contract_party_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) target_type: Mapped[str] = mapped_column( ENUM('contributor', 'label'), nullable=False, server_default=text("'contributor'"), ) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_party', init=False ) contract_party_history: Mapped[list['ContractPartyHistory']] = relationship( 'ContractPartyHistory', back_populates='contract_party', init=False ) class ContractReserve(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_reserve' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_reserve_contract_id', ), Index( 'uidx_contract_reserve_deleted', 'contract_id', 'deleted_at', unique=True ), ) contract_reserve_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reserve_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) reserve_release_offset_in_months: Mapped[int] = mapped_column( TINYINT, nullable=False ) installments_in_months: Mapped[int] = mapped_column(TINYINT, nullable=False) release_schedule: Mapped[dict] = mapped_column(JSON, nullable=False) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) conditions: Mapped[Optional[dict]] = mapped_column(JSON, default=None) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_reserve', init=False ) ledger_reserve_taken: Mapped[list['LedgerReserveTaken']] = relationship( 'LedgerReserveTaken', back_populates='contract_reserve', init=False ) class ContractTerm(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_term_contract', ), Index('fk_contract_term_contract', 'contract_id'), ) contract_term_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) term_type: Mapped[str] = mapped_column( ENUM( 'artist', 'catalog', 'contribution', 'label', 'product', 'track', 'contributor_schedule', 'contribution_schedule', ), nullable=False, server_default=text("'label'"), ) is_base_term: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_term_name: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) attachments: Mapped[Optional[dict]] = mapped_column(JSON, default=None) attachments_relations: Mapped[Optional[dict]] = mapped_column(JSON, default=None) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_term', init=False ) contract_term_condition: Mapped[list['ContractTermCondition']] = relationship( 'ContractTermCondition', back_populates='contract_term', init=False ) contract_term_schedule: Mapped[list['ContractTermSchedule']] = relationship( 'ContractTermSchedule', back_populates='contract_term', init=False ) contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']] = ( relationship( 'ContractTermScheduleHistory', back_populates='contract_term', init=False ) ) class EarningsTransfer(Base, CreateMixin, UpdateMixin): __tablename__ = 'earnings_transfer' __table_args__ = ( ForeignKeyConstraint( ['from_contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_earnings_transfer_from_contract', ), ForeignKeyConstraint( ['to_contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_earnings_transfer_to_contract', ), Index('fk_earnings_transfer_from_contract', 'from_contract_id'), Index('fk_earnings_transfer_to_contract', 'to_contract_id'), ) earnings_transfer_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) from_contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) to_contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) transfer_type: Mapped[str] = mapped_column( Enum('cross_recoup', 'reclass', 'override', 'transfer', 'nr_transfer'), nullable=False, ) transfer_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 12), nullable=False ) negative: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) active: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) rate_type: Mapped[Optional[str]] = mapped_column( Enum('percent', 'flat_rate'), default=None ) input: Mapped[Optional[str]] = mapped_column( Enum('net_revenue', 'gross_revenue', 'closing_balance'), default=None ) comment: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) from_contract: Mapped['Contract'] = relationship( 'Contract', foreign_keys=[from_contract_id], back_populates='earnings_transfer', init=False, ) to_contract: Mapped['Contract'] = relationship( 'Contract', foreign_keys=[to_contract_id], back_populates='earnings_transfer_', init=False, ) class LedgerAccount(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_account' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_account_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_account_contract', ), Index('fk_ledger_account_abacus_event', 'abacus_event_id'), Index('fk_ledger_account_account', 'account_id'), Index('fk_ledger_account_contract', 'contract_id'), Index( 'uidx_account_contract_event', 'abacus_event_id', 'account_id', 'contract_id', unique=True, ), ) ledger_account_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) currency_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) previous_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) current_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) note: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_account', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_account', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_account', init=False ) ledger_account_current_balance: Mapped[list['LedgerAccountCurrentBalance']] = ( relationship( 'LedgerAccountCurrentBalance', back_populates='ledger_account', init=False ) ) class LedgerAccountContract(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_account_contract' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_contract', ), Index('fk_ledger_account_contract_abacus_event', 'abacus_event_id'), Index('fk_ledger_account_contract_account', 'account_id'), Index('fk_ledger_account_contract_contract', 'contract_id'), Index( 'uidx_ledger_account_contract_event', 'abacus_event_id', 'account_id', 'contract_id', unique=True, ), ) ledger_account_contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) currency_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) previous_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) current_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) note: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_account_contract', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_account_contract', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_account_contract', init=False ) ledger_account_contract_current_balance: Mapped[ list['LedgerAccountContractCurrentBalance'] ] = relationship( 'LedgerAccountContractCurrentBalance', back_populates='ledger_account_contract', init=False, ) worksheet_account_contract_closing_balance: Mapped[ list['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='ledger_account_contract', init=False, ) class LedgerAccountingRunBalance(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_accounting_run_balance' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_abacus_event_ledger', ), ForeignKeyConstraint( ['accounting_run_id'], ['accounting_run.accounting_run_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_accounting_run_ledger', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_ledger', ), Index('fk_abacus_event_ledger', 'abacus_event_id'), Index('fk_accounting_run_ledger', 'accounting_run_id'), Index('fk_contract_ledger', 'contract_id'), ) ledger_accounting_run_balance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounting_run_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) adjusted_net_revenue: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) total_gross_revenue_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) total_net_revenue_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) mechanical_deduction_total: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) mechanical_deduction_admin_fee_total: Mapped[Optional[decimal.Decimal]] = ( mapped_column(DECIMAL(20, 2), default=None) ) distribution_fee: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_accounting_run_balance', init=False ) accounting_run: Mapped['AccountingRun'] = relationship( 'AccountingRun', back_populates='ledger_accounting_run_balance', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_accounting_run_balance', init=False ) class LedgerAccountingRunVat(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_accounting_run_vat' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_accounting_run_vat_event', ), ForeignKeyConstraint( ['accounting_run_id'], ['accounting_run.accounting_run_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_accounting_run_vat_acc_run', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_accounting_run_vat_contract', ), Index('fk_ledger_accounting_run_vat_acc_run', 'accounting_run_id'), Index('fk_ledger_accounting_run_vat_contract', 'contract_id'), Index('fk_ledger_accounting_run_vat_event', 'abacus_event_id'), ) ledger_accounting_run_vat_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) accounting_run_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) country_of_tax_residence: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) gross_revenue: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) net_revenue: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) distribution_fee: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) gross_vat_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) distribution_vat_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) gross_vat: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) distribution_vat: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) adjusted_net_revenue: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) exempt_reason: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_accounting_run_vat', init=False ) accounting_run: Mapped['AccountingRun'] = relationship( 'AccountingRun', back_populates='ledger_accounting_run_vat', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_accounting_run_vat', init=False ) class LedgerAdjustment(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_adjustment' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_activity_statement_period', ), ForeignKeyConstraint( ['apply_to_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_to_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_contract', ), ForeignKeyConstraint( ['reference_adjustment_type_id'], ['reference_adjustment_type.reference_adjustment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_reference_adjustment_type', ), Index('fk_ledger_adjustment_abacus_event', 'abacus_event_id'), Index('fk_ledger_adjustment_account', 'account_id'), Index( 'fk_ledger_adjustment_activity_statement_period', 'activity_statement_period_id', ), Index( 'fk_ledger_adjustment_applied_to_statement_period', 'apply_to_statement_period_id', ), Index('fk_ledger_adjustment_contract', 'contract_id'), Index( 'fk_ledger_adjustment_reference_adjustment_type', 'reference_adjustment_type_id', ), ) ledger_adjustment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) apply_to_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_adjustment_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) adjustment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_adjustment', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_adjustment', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='ledger_adjustment', init=False, ) apply_to_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[apply_to_statement_period_id], back_populates='ledger_adjustment_', init=False, ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_adjustment', init=False ) reference_adjustment_type: Mapped['ReferenceAdjustmentType'] = relationship( 'ReferenceAdjustmentType', back_populates='ledger_adjustment', init=False ) ledger_adjustment_adjustment_detail: Mapped[ list['LedgerAdjustmentAdjustmentDetail'] ] = relationship( 'LedgerAdjustmentAdjustmentDetail', back_populates='ledger_adjustment', init=False, ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='ledger_adjustment', init=False ) class LedgerAdjustmentDetail(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_adjustment_detail' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_activity_statement_period', ), ForeignKeyConstraint( ['apply_to_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_apply_to_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_contract', ), ForeignKeyConstraint( ['reference_adjustment_type_id'], ['reference_adjustment_type.reference_adjustment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_type', ), Index('fk_ledger_adjustment_detail_account', 'account_id'), Index( 'fk_ledger_adjustment_detail_activity_statement_period', 'activity_statement_period_id', ), Index( 'fk_ledger_adjustment_detail_apply_to_statement_period', 'apply_to_statement_period_id', ), Index('fk_ledger_adjustment_detail_contract', 'contract_id'), Index('fk_ledger_adjustment_type', 'reference_adjustment_type_id'), ) ledger_adjustment_detail_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) apply_to_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_adjustment_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) upc: Mapped[str] = mapped_column(String(20, 'utf8mb4_general_ci'), nullable=False) distribution_type: Mapped[str] = mapped_column( ENUM('digital', 'physical'), nullable=False, server_default=text("'digital'") ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) note: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_adjustment_detail', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='ledger_adjustment_detail', init=False, ) apply_to_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[apply_to_statement_period_id], back_populates='ledger_adjustment_detail_', init=False, ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_adjustment_detail', init=False ) reference_adjustment_type: Mapped['ReferenceAdjustmentType'] = relationship( 'ReferenceAdjustmentType', back_populates='ledger_adjustment_detail', init=False ) ledger_adjustment_adjustment_detail: Mapped[ list['LedgerAdjustmentAdjustmentDetail'] ] = relationship( 'LedgerAdjustmentAdjustmentDetail', back_populates='ledger_adjustment_detail', init=False, ) ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']] = ( relationship( 'LedgerAdjustmentDetailApplied', back_populates='ledger_adjustment_detail', init=False, ) ) class LedgerContractFlowthrough(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_contract_flowthrough' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_contract_flowthrough_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_contract_flowthrough_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_contract_flowthrough_contract', ), Index('fk_ledger_contract_flowthrough_account', 'account_id'), Index('fk_ledger_contract_flowthrough_contract', 'contract_id'), Index( 'uidx_account_contract_event', 'abacus_event_id', 'account_id', 'contract_id', unique=True, ), { 'comment': 'Ledger table tracking flowthrough transactions at the contract ' 'level with historical balance changes.' }, ) ledger_contract_flowthrough_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key for flowthrough record.', autoincrement=True, init=False, ) abacus_event_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Reference to the abacus event that triggered this flowthrough record.', ) account_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Account receiving or providing the flowthrough amount.', ) contract_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Contract associated with this flowthrough record.', ) currency_code: Mapped[str] = mapped_column( CHAR(3), nullable=False, comment='ISO 4217 currency code (e.g., USD, EUR, GBP).' ) currency_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False, comment='Flowthrough amount in the specified currency.', ) previous_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False, comment='Contract balance before this transaction was applied.', ) current_balance: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False, comment='Contract balance after this transaction was applied.', ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, comment='User or component that last modified this record.', default=None, ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, comment='Timestamp of last modification.', default=None, ) created_by: Mapped[str] = mapped_column( String(255), nullable=False, comment='User or component that created this record.', default=None, ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='Timestamp when record was created.', default=None, ) note: Mapped[Optional[str]] = mapped_column( String(255), comment='Optional note about the flowthrough record.', default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_contract_flowthrough', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_contract_flowthrough', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_contract_flowthrough', init=False ) ledger_contract_flowthrough_current_balance: Mapped[ list['LedgerContractFlowthroughCurrentBalance'] ] = relationship( 'LedgerContractFlowthroughCurrentBalance', back_populates='ledger_contract_flowthrough', init=False, ) class LedgerDeposit(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_deposit' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_abacus_event_ledger_deposit', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_deposit_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_ledger_deposit', ), Index('fk_abacus_event_ledger_deposit', 'abacus_event_id'), Index('fk_contract_ledger_deposit', 'contract_id'), Index('fk_ledger_deposit_account', 'account_id'), ) ledger_deposit_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) rounded_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) remaining_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(38, 18), nullable=False ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_deposit', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_deposit', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_deposit', init=False ) class LedgerVatSummary(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_vat_summary' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_vat_summary_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_vat_summary_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_vat_summary_activity_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_vat_summary_contract', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_vat_summary_statement_period', ), Index('fk_ledger_vat_summary_account', 'account_id'), Index( 'fk_ledger_vat_summary_activity_statement_period', 'activity_statement_period_id', ), Index('fk_ledger_vat_summary_contract', 'contract_id'), Index('fk_ledger_vat_summary_event', 'abacus_event_id'), Index('fk_ledger_vat_summary_statement_period', 'statement_period_id'), ) ledger_vat_summary_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) vat_category: Mapped[str] = mapped_column( ENUM( 'gross_revenue', 'distribution_fee', 'closing_balance', 'commission', 'custom_payment', ), nullable=False, ) payee_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) vat_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) base_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) net_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) is_reporting_only: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'"), comment='this entry is for reporting only and does not affect the ledger', ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) vat_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) vat_amount_payee_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) vat_amount_vat_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) wht_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) wht_amount_vat_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) wht_amount_payee_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) abacus_exempt_reason: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) description: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_vat_summary', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_vat_summary', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='ledger_vat_summary', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_vat_summary', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[statement_period_id], back_populates='ledger_vat_summary_', init=False, ) class LegacyContract(Base): __tablename__ = 'legacy_contract' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_legacy_contract_contract', ), Index('fk_legacy_contract_contract', 'contract_id'), Index('idx_oa_contract_id', 'oa_contract_id'), Index('unique_legacy_contract', 'contract_id', 'oa_contract_id', unique=True), ) legacy_contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) oa_contract_id: Mapped[Optional[int]] = mapped_column(Integer, default=None) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='legacy_contract', init=False ) class PayeeCollaborator(Base, CreateMixin, UpdateMixin): __tablename__ = 'payee_collaborator' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payee_collaborator_account_id', ), ForeignKeyConstraint( ['payee_id'], ['payee.payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payee_collaborator_payee_id', ), Index('collaborator_id', 'collaborator_id', unique=True), Index('fk_payee_collaborator_account_id', 'account_id'), Index('fk_payee_collaborator_payee_id', 'payee_id'), ) payee_collaborator_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) collaborator_id: Mapped[int] = mapped_column(Integer, nullable=False) payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='payee_collaborator', init=False ) payee: Mapped['Payee'] = relationship( 'Payee', back_populates='payee_collaborator', init=False ) class PayeeKycNotification(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payee_kyc_notification' __table_args__ = ( ForeignKeyConstraint( ['payee_id'], ['payee.payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_apkn_payee_id', ), Index('fk_apkn_payee_id', 'payee_id'), ) payee_kyc_notification_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) file_upload_link: Mapped[str] = mapped_column(String(1000), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) requirement_id: Mapped[Optional[str]] = mapped_column(String(1000), default=None) requirement_type_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) sub_requirement_id: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) possible_sub_requirement_types: Mapped[Optional[str]] = mapped_column( String(1000), default=None ) sub_requirement_status_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) entity_reference_id: Mapped[Optional[str]] = mapped_column(String(36), default=None) entity_reference_type_id: Mapped[Optional[int]] = mapped_column( TINYINT, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) payee: Mapped['Payee'] = relationship( 'Payee', back_populates='payee_kyc_notification', init=False ) class PaymentAllocation(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_allocation' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', name='fk_payment_allocation_contract', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', name='fk_payment_allocation_statement_period', ), Index('fk_payment_allocation_contract', 'contract_id'), Index('fk_payment_allocation_statement_period', 'statement_period_id'), Index('idx_payment_allocation_ledger_status', 'ledger_status'), Index('idx_payment_allocation_payee', 'payee_type', 'payee_id'), Index('idx_payment_allocation_payment_status', 'payment_status'), { 'comment': 'Payment allocations tracking amounts to be paid to payees and ' 'ledger adjustments' }, ) payment_allocation_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) contract_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to the contract we are adjusting the payment for.', ) payee_type: Mapped[str] = mapped_column( Enum('payee', 'account_payee'), nullable=False, comment='Payee type that this payment adjustment is for.', ) payee_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='ID of the payee. References either payee or account_payee table depending on payee_type.', ) statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to the statement period this is adjusting.', ) payment_allocation_type: Mapped[str] = mapped_column( Enum('collaborator', 'flowthrough', 'transfer_of_earning'), nullable=False, comment='Type of payment allocation.', ) amount_to_payment: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False, comment='Amount of money to pay to payee.' ) payment_status: Mapped[str] = mapped_column( Enum('init', 'attached_to_payment', 'paid', 'returned'), nullable=False, comment='Current payment status.', ) amount_to_ledger: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False, comment='Amount of money to add/deduct from contract ledger.', ) ledger_status: Mapped[str] = mapped_column( Enum('debited', 'returned', 'init', 'attached_to_payment'), nullable=False, comment='Current ledger status.', ) currency_code: Mapped[str] = mapped_column( String(3), nullable=False, comment='Currency code.' ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) payment_status_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Timestamp when payment_status was last modified.', default=None, ) ledger_status_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, comment='Timestamp when ledger_status was last modified.', default=None, ) description: Mapped[Optional[str]] = mapped_column( MEDIUMTEXT, comment='General description about purpose of this allocation.', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='payment_allocation', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='payment_allocation', init=False ) payment_allocation_ledger_adjustment: Mapped[ list['PaymentAllocationLedgerAdjustment'] ] = relationship( 'PaymentAllocationLedgerAdjustment', back_populates='payment_allocation', init=False, ) class PaymentGroupPaymentBatchAccount(Base, CreateMixin, UpdateMixin): __tablename__ = 'payment_group_payment_batch_account' __table_args__ = ( ForeignKeyConstraint( ['payment_group_payment_account_id'], ['payment_group_payment_account.payment_group_payment_account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_group_payment_account', ), ForeignKeyConstraint( ['payment_group_payment_batch_id'], ['payment_group_payment_batch.payment_group_payment_batch_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_payment_batch_account_payment_group_payment_batch', ), Index( 'fk_payment_batch_account_payment_group_payment_batch', 'payment_group_payment_batch_id', ), Index('fk_payment_group_payment_account', 'payment_group_payment_account_id'), ) payment_group_payment_batch_account_id: Mapped[int] = mapped_column( BIGINT, primary_key=True, autoincrement=True, init=False ) payment_group_payment_account_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) payment_group_payment_batch_id: Mapped[int] = mapped_column(BIGINT, nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) payment_group_payment_account: Mapped['PaymentGroupPaymentAccount'] = relationship( 'PaymentGroupPaymentAccount', back_populates='payment_group_payment_batch_account', init=False, ) payment_group_payment_batch: Mapped['PaymentGroupPaymentBatch'] = relationship( 'PaymentGroupPaymentBatch', back_populates='payment_group_payment_batch_account', init=False, ) class ProjectTransferTerm(Base, CreateMixin): __tablename__ = 'project_transfer_term' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='FK_project_transfer_term_contract', ), Index('IDX_project_transfer_term_contract_id', 'contract_id'), Index('IDX_project_transfer_term_job_id', 'job_id'), ) project_transfer_term_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) job_id: Mapped[int] = mapped_column(INTEGER, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) term_type: Mapped[str] = mapped_column( Enum( 'artist', 'catalog', 'contribution', 'label', 'product', 'track', 'contributor_schedule', 'contribution_schedule', ), nullable=False, ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) name: Mapped[Optional[str]] = mapped_column(String(180), default=None) attachments: Mapped[Optional[dict]] = mapped_column(JSON, default=None) attachment_relations: Mapped[Optional[dict]] = mapped_column(JSON, default=None) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='project_transfer_term', init=False ) project_transfer_term_condition: Mapped[list['ProjectTransferTermCondition']] = ( relationship( 'ProjectTransferTermCondition', back_populates='project_transfer_term', init=False, ) ) class ReportsTaxInfo(Base, CreateMixin, UpdateMixin): __tablename__ = 'reports_tax_info' __table_args__ = ( ForeignKeyConstraint( ['account_tax_info_history_id'], ['account_tax_info_history.account_tax_info_history_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_tax_info_history', ), Index('fk_account_tax_info_history', 'account_tax_info_history_id'), ) reports_tax_info_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_tax_info_history_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) tax_type: Mapped[str] = mapped_column(Enum('details', 'form'), nullable=False) revision_id: Mapped[str] = mapped_column(String(36), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) account_tax_info_history: Mapped['AccountTaxInfoHistory'] = relationship( 'AccountTaxInfoHistory', back_populates='reports_tax_info', init=False ) class RunControllerContract(Base, AuditMixin, CreateMixin, UpdateMixin): __tablename__ = 'run_controller_contract' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_run_controller_contract_contract', ), ForeignKeyConstraint( ['run_controller_id'], ['run_controller.run_controller_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_run_controller_contract_run_controller', ), Index('fk_run_controller_contract_run_controller', 'run_controller_id'), Index('run_controller_contract_contract_unique', 'contract_id', unique=True), ) run_controller_contract_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) run_controller_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) audit_id: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) created_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) created_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) last_modified_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) last_modified: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='run_controller_contract', init=False ) run_controller: Mapped['RunController'] = relationship( 'RunController', back_populates='run_controller_contract', init=False ) class StatementPeriodAdjustmentBatchCriteria(Base, CreateMixin, UpdateMixin): __tablename__ = 'statement_period_adjustment_batch_criteria' __table_args__ = ( ForeignKeyConstraint( ['statement_period_adjustment_file_id'], ['statement_period_adjustment_file.statement_period_adjustment_file_id'], ondelete='RESTRICT', name='fk_statement_period_adjustment_batch_criteria_file', ), Index( 'fk_statement_period_adjustment_batch_criteria_file', 'statement_period_adjustment_file_id', ), Index( 'uidx_statement_period_adjustment_file_id', 'statement_period_adjustment_file_id', unique=True, ), ) statement_period_adjustment_batch_criteria_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) batch_criteria: Mapped[dict] = mapped_column( JSON, nullable=False, comment='The set of attributes used to create adjustments. eg: {"payment_schedules": ["30_days_after_quarter_end"], "reference_payment_entities": [1,2,3]}', ) statement_period_adjustment_file_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='The statement_period_adjustment_file created using this batch criteria.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) statement_period_adjustment_file: Mapped['StatementPeriodAdjustmentFile'] = ( relationship( 'StatementPeriodAdjustmentFile', back_populates='statement_period_adjustment_batch_criteria', init=False, ) ) class TaxWithholdingOverride(Base, CreateMixin, UpdateMixin): __tablename__ = 'tax_withholding_override' __table_args__ = ( ForeignKeyConstraint( ['account_payee_id'], ['account_payee.account_payee_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tax_withholding_override_account_payee_id', ), Index('account_payee_id', 'account_payee_id', unique=True), ) tax_withholding_override_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_payee_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) rate_override: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(5, 2), default=None ) certificate_expiration_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) message: Mapped[Optional[str]] = mapped_column(Text, default=None) account_payee: Mapped['AccountPayee'] = relationship( 'AccountPayee', back_populates='tax_withholding_override', init=False ) class WorksheetAdjustment(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_adjustment' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_activity_statement_period', ), ForeignKeyConstraint( ['apply_to_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_apply_to_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_contract', ), ForeignKeyConstraint( ['reference_adjustment_type_id'], ['reference_adjustment_type.reference_adjustment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_reference_adjustment_type', ), ForeignKeyConstraint( ['statement_period_adjustment_file_id'], ['statement_period_adjustment_file.statement_period_adjustment_file_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_statement_period_adjustment_file', ), Index('fk_worksheet_adjustment_abacus_event', 'abacus_event_id'), Index('fk_worksheet_adjustment_account', 'account_id'), Index( 'fk_worksheet_adjustment_activity_statement_period', 'activity_statement_period_id', ), Index( 'fk_worksheet_adjustment_apply_to_statement_period', 'apply_to_statement_period_id', ), Index('fk_worksheet_adjustment_contract', 'contract_id'), Index( 'fk_worksheet_adjustment_reference_adjustment_type', 'reference_adjustment_type_id', ), Index( 'fk_worksheet_adjustment_statement_period_adjustment_file', 'statement_period_adjustment_file_id', ), ) worksheet_adjustment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_adjustment_file_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) apply_to_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_adjustment_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) adjustment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) internal_note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='worksheet_adjustment', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_adjustment', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='worksheet_adjustment', init=False, ) apply_to_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[apply_to_statement_period_id], back_populates='worksheet_adjustment_', init=False, ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='worksheet_adjustment', init=False ) reference_adjustment_type: Mapped['ReferenceAdjustmentType'] = relationship( 'ReferenceAdjustmentType', back_populates='worksheet_adjustment', init=False ) statement_period_adjustment_file: Mapped['StatementPeriodAdjustmentFile'] = ( relationship( 'StatementPeriodAdjustmentFile', back_populates='worksheet_adjustment', init=False, ) ) ledger_adjustment_applied: Mapped[list['LedgerAdjustmentApplied']] = relationship( 'LedgerAdjustmentApplied', back_populates='worksheet_adjustment', init=False ) worksheet_adjustment_detail: Mapped[list['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', back_populates='worksheet_adjustment', init=False, ) ) ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']] = ( relationship( 'LedgerAdjustmentDetailApplied', back_populates='worksheet_adjustment', init=False, ) ) class WorksheetCorrection(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_correction' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_worksheet_correction', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_worksheet_correction', ), ForeignKeyConstraint( ['correction_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_correction_statement_period_worksheet_correction', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_worksheet_correction', ), Index('fk_account_worksheet_correction', 'account_id'), Index('fk_contract_worksheet_correction', 'contract_id'), Index( 'fk_correction_statement_period_worksheet_correction', 'correction_statement_period_id', ), Index('fk_statement_period_worksheet_correction', 'statement_period_id'), ) worksheet_correction_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) correction_statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) correction_type: Mapped[str] = mapped_column( ENUM('royalty_reversal', 'royalty_correction'), nullable=False ) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) gross_revenue: Mapped[decimal.Decimal] = mapped_column( DECIMAL(38, 18), nullable=False ) distribution_fee: Mapped[decimal.Decimal] = mapped_column( DECIMAL(38, 18), nullable=False ) net_revenue: Mapped[decimal.Decimal] = mapped_column( DECIMAL(38, 18), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) mechanical_deduction_total: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(38, 18), default=None ) mechanical_deduction_admin_fee_total: Mapped[Optional[decimal.Decimal]] = ( mapped_column(DECIMAL(38, 18), default=None) ) note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_correction', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='worksheet_correction', init=False ) correction_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[correction_statement_period_id], back_populates='worksheet_correction', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[statement_period_id], back_populates='worksheet_correction_', init=False, ) ledger_correction: Mapped[list['LedgerCorrection']] = relationship( 'LedgerCorrection', back_populates='worksheet_correction', init=False ) class WorksheetFlowthrough(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_flowthrough' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', name='fk_worksheet_flowthrough_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', name='fk_worksheet_flowthrough_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', name='fk_worksheet_flowthrough_contract', ), ForeignKeyConstraint( ['worksheet_flowthrough_batch_id'], ['worksheet_flowthrough_batch.worksheet_flowthrough_batch_id'], ondelete='CASCADE', name='fk_worksheet_flowthrough_worksheet_flowthrough_batch', ), Index('fk_worksheet_flowthrough_account', 'account_id'), Index('fk_worksheet_flowthrough_contract', 'contract_id'), Index( 'fk_worksheet_flowthrough_statement_period', 'activity_statement_period_id' ), Index( 'fk_worksheet_flowthrough_worksheet_flowthrough_batch', 'worksheet_flowthrough_batch_id', ), Index( 'uidx_batch_row', 'worksheet_flowthrough_batch_id', 'batch_row_index', unique=True, ), { 'comment': 'Entries for worksheet flowthrough records, tracking individual ' 'flowthrough amounts' }, ) worksheet_flowthrough_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) worksheet_flowthrough_batch_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to worksheet_flowthrough_batch table.', ) batch_row_index: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Zero-based index of this entry within the batch.', ) source_data: Mapped[dict] = mapped_column( JSON, nullable=False, comment='Original source data, before validation. Example: {"account_id": "ABC123", "amount": "Not a number", ...}.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) account_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Foreign key to account table. NULL if invalid. Original account ID in source_data.', default=None, ) contract_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Foreign key to contract table. NULL if invalid. Original contract ID in source_data.', default=None, ) amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), comment='Amount after rounding. NULL if invalid. Original amount in source_data.', default=None, ) amount_raw: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(30, 12), comment='Raw amount. NULL if invalid. Original amount in source_data.', default=None, ) activity_month: Mapped[Optional[int]] = mapped_column( TINYINT, comment='Activity month (1-12). NULL if invalid. Original month in source_data.', default=None, ) activity_year: Mapped[Optional[int]] = mapped_column( SMALLINT, comment='Activity year (e.g., 2025). NULL if invalid. Original year in source_data.', default=None, ) activity_statement_period_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, comment='Foreign key to statement_period table. Derived from activity_month and activity_year. NULL if statement period could not be determined.', default=None, ) note: Mapped[Optional[str]] = mapped_column( MEDIUMTEXT, comment='User-visible note about this entry. NULL if invalid. Original note in source_data.', default=None, ) internal_note: Mapped[Optional[str]] = mapped_column( MEDIUMTEXT, comment='Internal note for operational purposes. NULL if invalid or not given. Original internal note in source_data.', default=None, ) errors: Mapped[Optional[dict]] = mapped_column( JSON, comment='Array of error codes. Example: ["ACCOUNT_ID_NOT_FOUND"]. NULL if no errors. See table reference_worksheet_flowthrough_error for codes.', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) account: Mapped[Optional['Account']] = relationship( 'Account', back_populates='worksheet_flowthrough', init=False ) activity_statement_period: Mapped[Optional['StatementPeriod']] = relationship( 'StatementPeriod', back_populates='worksheet_flowthrough', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='worksheet_flowthrough', init=False ) worksheet_flowthrough_batch: Mapped['WorksheetFlowthroughBatch'] = relationship( 'WorksheetFlowthroughBatch', back_populates='worksheet_flowthrough', init=False ) class WorksheetFlowthroughFile(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_flowthrough_file' __table_args__ = ( ForeignKeyConstraint( ['worksheet_flowthrough_batch_id'], ['worksheet_flowthrough_batch.worksheet_flowthrough_batch_id'], ondelete='CASCADE', name='fk_worksheet_flowthrough_file_worksheet_flowthrough_batch', ), Index( 'fk_worksheet_flowthrough_file_worksheet_flowthrough_batch', 'worksheet_flowthrough_batch_id', ), Index('idx_batch_file_type', 'worksheet_flowthrough_batch_id', 'file_type'), Index('uidx_file_key', 'file_key', unique=True), { 'comment': 'Generated download files representing flowthrough batch data in ' 'various formats for user consumption.' }, ) worksheet_flowthrough_file_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) worksheet_flowthrough_batch_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='The parent worksheet_flowthrough_batch.' ) file_key: Mapped[str] = mapped_column( String(36), nullable=False, comment='Unique identifier for the file (UUID).' ) file_name: Mapped[str] = mapped_column( String(255), nullable=False, comment='Generated filename.' ) file_size_bytes: Mapped[int] = mapped_column( BIGINT, nullable=False, comment='File size in bytes.' ) s3_key: Mapped[str] = mapped_column( String(1024), nullable=False, comment='S3 file location.' ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='When the file was generated.', default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) file_type: Mapped[Optional[str]] = mapped_column( String(10), comment='File extension without leading dot and lowercase (e.g., csv, pdf, xlsx).', default=None, ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) worksheet_flowthrough_batch: Mapped['WorksheetFlowthroughBatch'] = relationship( 'WorksheetFlowthroughBatch', back_populates='worksheet_flowthrough_file', init=False, ) class WorksheetPaymentCustom(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_payment_custom' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_payment_custom_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_payment_custom_activity_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_payment_custom_contract', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_payment_custom_statement_period', ), Index('fk_worksheet_payment_custom_account', 'account_id'), Index( 'fk_worksheet_payment_custom_activity_statement_period', 'activity_statement_period_id', ), Index('fk_worksheet_payment_custom_contract', 'contract_id'), Index('fk_worksheet_payment_custom_statement_period', 'statement_period_id'), ) worksheet_payment_custom_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) withholding_tax_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) withholding_tax_rate: Mapped[decimal.Decimal] = mapped_column( DECIMAL(5, 2), nullable=False ) vat_amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) vat_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) amount_after_withholding_and_vat: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payment_name: Mapped[str] = mapped_column(String(180), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_payment_custom', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='worksheet_payment_custom', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_payment_custom', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[statement_period_id], back_populates='worksheet_payment_custom_', init=False, ) class WorksheetTaxCorrection(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_tax_correction' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tc_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tc_contract', ), ForeignKeyConstraint( ['correction_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tc_statement_period', ), ForeignKeyConstraint( ['payable_detail_type_id'], ['reference_payable_detail_type.reference_payable_detail_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tc_ref_payable_detail', ), Index('fk_tc_account', 'account_id'), Index('fk_tc_contract', 'contract_id'), Index('fk_tc_ref_payable_detail', 'payable_detail_type_id'), Index( 'idx_correction_statement_period_id_contract_id', 'correction_statement_period_id', 'contract_id', ), ) worksheet_tax_correction_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) correction_statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) payable_detail_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) note: Mapped[Optional[str]] = mapped_column(String(255), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_tax_correction', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_tax_correction', init=False ) correction_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_tax_correction', init=False ) payable_detail_type: Mapped['ReferencePayableDetailType'] = relationship( 'ReferencePayableDetailType', back_populates='worksheet_tax_correction', init=False, ) class WorksheetTaxCorrectionVat(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_tax_correction_vat' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tcv_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tcv_contract', ), ForeignKeyConstraint( ['correction_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tcv_statement_period', ), ForeignKeyConstraint( ['payable_detail_type_id'], ['reference_payable_detail_type.reference_payable_detail_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_tcv_ref_payable_detail', ), Index('fk_tcv_account', 'account_id'), Index('fk_tcv_contract', 'contract_id'), Index('fk_tcv_ref_payable_detail', 'payable_detail_type_id'), Index( 'idx_correction_statement_period_id_contract_id', 'correction_statement_period_id', 'contract_id', ), ) worksheet_tax_correction_vat_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payable_detail_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) correction_statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) base_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) payee_currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) vat_currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) vat_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) vat_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) vat_amount_vat_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) net_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) vat_category: Mapped[Optional[str]] = mapped_column( Enum('gross_revenue', 'distribution_fee', 'closing_balance', 'commission'), default=None, ) wht_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) wht_amount_payee_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) wht_amount_vat_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) note: Mapped[Optional[str]] = mapped_column(String(255), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_tax_correction_vat', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_tax_correction_vat', init=False ) correction_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_tax_correction_vat', init=False ) payable_detail_type: Mapped['ReferencePayableDetailType'] = relationship( 'ReferencePayableDetailType', back_populates='worksheet_tax_correction_vat', init=False, ) class ContractAdvanceHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_advance_history' __table_args__ = ( ForeignKeyConstraint( ['contract_advance_id'], ['contract_advance.contract_advance_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_contract_advance_history', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_contract_advance_history', ), ForeignKeyConstraint( ['reference_advance_payment_method_id'], ['reference_advance_payment_method.reference_advance_payment_method_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_history_reference_advance_payment_method', ), ForeignKeyConstraint( ['reference_payment_type_id'], ['reference_payment_type.reference_payment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_history_reference_payment_type', ), Index('fk_contract_advance_contract_advance_history', 'contract_advance_id'), Index( 'fk_contract_advance_history_reference_advance_payment_method', 'reference_advance_payment_method_id', ), Index( 'fk_contract_advance_history_reference_payment_type', 'reference_payment_type_id', ), Index('fk_contract_contract_advance_history', 'contract_id'), ) contract_advance_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_advance_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) advance_description: Mapped[str] = mapped_column(String(180), nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) milestone: Mapped[str] = mapped_column( Enum( 'contract_execution', 'delivery', 'recoupment', 'scheduled_installment', 'sales_milestone', 'other', 'option', 'option_non_contingent', 'fund_contingent', 'fund_non_contingent', ), nullable=False, ) milestone_description: Mapped[str] = mapped_column(Text, nullable=False) advance_status: Mapped[str] = mapped_column( Enum( 'not_qualified', 'qualified', 'approved', 'paid', 'deleted', 'in_review', 'pending_payment', ), nullable=False, server_default=text("'not_qualified'"), ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) reference_payment_type_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) reference_advance_payment_method_id: Mapped[Optional[int]] = mapped_column( SMALLINT, default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) withholding_tax_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) amount_after_withholding_and_vat: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) us_source_income_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(9, 6), default=None ) milestone_date: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) note: Mapped[Optional[str]] = mapped_column(String(255), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) contract_advance: Mapped['ContractAdvance'] = relationship( 'ContractAdvance', back_populates='contract_advance_history', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_advance_history', init=False ) reference_advance_payment_method: Mapped[ Optional['ReferenceAdvancePaymentMethod'] ] = relationship( 'ReferenceAdvancePaymentMethod', back_populates='contract_advance_history', init=False, ) reference_payment_type: Mapped[Optional['ReferencePaymentType']] = relationship( 'ReferencePaymentType', back_populates='contract_advance_history', init=False ) class ContractLifecycle(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_lifecycle' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_lifecycle_contract', ), ForeignKeyConstraint( ['contract_lifecycle_schedule_id'], ['contract_lifecycle_schedule.contract_lifecycle_schedule_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_lifecycle_contract_lifecycle_schedule', ), Index('fk_contract_lifecycle_contract', 'contract_id'), Index( 'fk_contract_lifecycle_contract_lifecycle_schedule', 'contract_lifecycle_schedule_id', ), ) contract_lifecycle_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_lifecycle_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) lifecycle_status: Mapped[str] = mapped_column( ENUM( 'init', 'active', 'to_be_terminated', 'terminated', 'in_collection_period', 'inactive', ), nullable=False, server_default=text("'init'"), ) lifecycle_term_start: Mapped[datetime.date] = mapped_column( NormalizedDate, nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) lifecycle_term_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) renewal_effective: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_notice_deadline: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_notice_received: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) termination_effective: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) collection_start: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) collection_end: Mapped[Optional[datetime.date]] = mapped_column( NormalizedDate, default=None ) last_renewed: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_lifecycle', init=False ) contract_lifecycle_schedule: Mapped['ContractLifecycleSchedule'] = relationship( 'ContractLifecycleSchedule', back_populates='contract_lifecycle', init=False ) class ContractPartyHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_party_history' __table_args__ = ( ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_party_history_contract', ), ForeignKeyConstraint( ['contract_party_id'], ['contract_party.contract_party_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_contract_party_contract_party_history', ), Index('fk_contract_party_contract_party_history', 'contract_party_id'), Index('fk_contract_party_history_contract', 'contract_id'), ) contract_party_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_party_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) target_type: Mapped[str] = mapped_column( ENUM('contributor', 'label'), nullable=False, server_default=text("'contributor'"), ) target_id: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='contract_party_history', init=False ) contract_party: Mapped['ContractParty'] = relationship( 'ContractParty', back_populates='contract_party_history', init=False ) class ContractTermCondition(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term_condition' __table_args__ = ( ForeignKeyConstraint( ['contract_term_id'], ['contract_term.contract_term_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_term_cond_term_cond', ), Index('fk_contract_term_cond_term_cond', 'contract_term_id'), ) contract_term_condition_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) conditions: Mapped[dict] = mapped_column(JSON, nullable=False) term_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) commission: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) priority: Mapped[int] = mapped_column( TINYINT, nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_term_condition_name: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract_term: Mapped['ContractTerm'] = relationship( 'ContractTerm', back_populates='contract_term_condition', init=False ) class ContractTermSchedule(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term_schedule' __table_args__ = ( ForeignKeyConstraint( ['contract_term_id'], ['contract_term.contract_term_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_term_schedule_contract_term', ), ForeignKeyConstraint( ['schedule_id'], ['schedule.schedule_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_term_schedule_schedule', ), Index('fk_contract_term_schedule_contract_term', 'contract_term_id'), Index('fk_contract_term_schedule_schedule', 'schedule_id'), ) contract_term_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract_term: Mapped['ContractTerm'] = relationship( 'ContractTerm', back_populates='contract_term_schedule', init=False ) schedule: Mapped['Schedule'] = relationship( 'Schedule', back_populates='contract_term_schedule', init=False ) contract_term_schedule_history: Mapped[list['ContractTermScheduleHistory']] = ( relationship( 'ContractTermScheduleHistory', back_populates='contract_term_schedule', init=False, ) ) class LedgerAccountContractCurrentBalance(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_account_contract_current_balance' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_current_balance_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_current_balance_contract', ), ForeignKeyConstraint( ['ledger_account_contract_id'], ['ledger_account_contract.ledger_account_contract_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_ledger_account_contract_current_balance_ledger_', ), Index('fk_ledger_account_contract_current_balance_account', 'account_id'), Index('fk_ledger_account_contract_current_balance_contract', 'contract_id'), Index( 'fk_ledger_account_contract_current_balance_ledger_', 'ledger_account_contract_id', ), Index('uidx_contract_id', 'contract_id', unique=True), ) ledger_account_contract_current_balance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) ledger_account_contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_account_contract_current_balance', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_account_contract_current_balance', init=False ) ledger_account_contract: Mapped['LedgerAccountContract'] = relationship( 'LedgerAccountContract', back_populates='ledger_account_contract_current_balance', init=False, ) class LedgerAccountCurrentBalance(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_account_current_balance' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_account_current_balance_account', ), ForeignKeyConstraint( ['ledger_account_id'], ['ledger_account.ledger_account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_account_current_balance_ledger_account_', ), Index('fk_ledger_account_current_balance_account', 'account_id'), Index('fk_ledger_account_current_balance_ledger_account_', 'ledger_account_id'), Index('uidx_account_id', 'account_id', unique=True), ) ledger_account_current_balance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) ledger_account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_account_current_balance', init=False ) ledger_account: Mapped['LedgerAccount'] = relationship( 'LedgerAccount', back_populates='ledger_account_current_balance', init=False ) class LedgerAdjustmentAdjustmentDetail(Base): __tablename__ = 'ledger_adjustment_adjustment_detail' __table_args__ = ( ForeignKeyConstraint( ['ledger_adjustment_detail_id'], ['ledger_adjustment_detail.ledger_adjustment_detail_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_adjustment_ledger_adjustment_detail', ), ForeignKeyConstraint( ['ledger_adjustment_id'], ['ledger_adjustment.ledger_adjustment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_adjustment_ledger_adjustment', ), Index( 'fk_ledger_adjustment_adjustment_ledger_adjustment', 'ledger_adjustment_id' ), Index( 'uidx_ledger_adjustment_detail_id', 'ledger_adjustment_detail_id', unique=True, ), ) ledger_adjustment_adjustment_detail_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) ledger_adjustment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) ledger_adjustment_detail_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) detail_count: Mapped[int] = mapped_column(SMALLINT, nullable=False) ledger_adjustment_detail: Mapped['LedgerAdjustmentDetail'] = relationship( 'LedgerAdjustmentDetail', back_populates='ledger_adjustment_adjustment_detail', init=False, ) ledger_adjustment: Mapped['LedgerAdjustment'] = relationship( 'LedgerAdjustment', back_populates='ledger_adjustment_adjustment_detail', init=False, ) class LedgerAdjustmentApplied(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_adjustment_applied' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_contract', ), ForeignKeyConstraint( ['ledger_adjustment_id'], ['ledger_adjustment.ledger_adjustment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_ledger_adjustment', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied_statement_period', ), ForeignKeyConstraint( ['worksheet_adjustment_id'], ['worksheet_adjustment.worksheet_adjustment_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_adjustment_applied_worksheet_adjustment', ), Index('fk_ledger_adjustment_applied_abacus_event', 'abacus_event_id'), Index('fk_ledger_adjustment_applied_account', 'account_id'), Index('fk_ledger_adjustment_applied_contract', 'contract_id'), Index('fk_ledger_adjustment_applied_ledger_adjustment', 'ledger_adjustment_id'), Index('fk_ledger_adjustment_applied_statement_period', 'statement_period_id'), Index('idx_worksheet_adjustment_id', 'worksheet_adjustment_id', unique=True), Index('uidx_worksheet_adjustment_id', 'worksheet_adjustment_id', unique=True), ) ledger_adjustment_applied_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) adjustment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) adjustment_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_payee_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) ledger_adjustment_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) worksheet_adjustment_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_adjustment_applied', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_adjustment_applied', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_adjustment_applied', init=False ) ledger_adjustment: Mapped[Optional['LedgerAdjustment']] = relationship( 'LedgerAdjustment', back_populates='ledger_adjustment_applied', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='ledger_adjustment_applied', init=False ) worksheet_adjustment: Mapped[Optional['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='ledger_adjustment_applied', init=False ) payment_allocation_ledger_adjustment: Mapped[ list['PaymentAllocationLedgerAdjustment'] ] = relationship( 'PaymentAllocationLedgerAdjustment', back_populates='ledger_adjustment_applied', init=False, ) ledger_adjustment_adjustment_detail_applied: Mapped[ list['LedgerAdjustmentAdjustmentDetailApplied'] ] = relationship( 'LedgerAdjustmentAdjustmentDetailApplied', back_populates='ledger_adjustment_applied', init=False, ) class LedgerContractAdvanceApplied(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_contract_advance_applied' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_abacus_event_contract_advance_applied', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_account_contract_advance_applied', ), ForeignKeyConstraint( ['contract_advance_id'], ['contract_advance.contract_advance_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance_contract_advance_applied', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_contract_advance_applied', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period_contract_advance_applied', ), Index('fk_abacus_event_contract_advance_applied', 'abacus_event_id'), Index('fk_account_contract_advance_applied', 'account_id'), Index('fk_contract_contract_advance_applied', 'contract_id'), Index('fk_statement_period_contract_advance_applied', 'statement_period_id'), Index( 'unique_contract_worksheet_event', 'contract_advance_id', 'worksheet_payment_contract_advance_id', 'abacus_event_id', unique=True, ), ) ledger_contract_advance_applied_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_advance_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) advance_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) advance_currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) advance_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) advance_payee_currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) worksheet_payment_contract_advance_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) withholding_tax_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) amount_after_withholding_and_vat: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) vat_amount_payee_currency: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) withholding_tax_amount_payee_currency: Mapped[Optional[decimal.Decimal]] = ( mapped_column(DECIMAL(20, 2), default=None) ) amount_after_withholding_and_vat_payee_currency: Mapped[ Optional[decimal.Decimal] ] = mapped_column(DECIMAL(20, 2), default=None) us_source_income_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(9, 6), default=None ) exchange_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(30, 19), default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_contract_advance_applied', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_contract_advance_applied', init=False ) contract_advance: Mapped['ContractAdvance'] = relationship( 'ContractAdvance', back_populates='ledger_contract_advance_applied', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_contract_advance_applied', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='ledger_contract_advance_applied', init=False ) class LedgerContractFlowthroughCurrentBalance(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_contract_flowthrough_current_balance' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_lcf_current_balance_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_lcf_current_balance_contract', ), ForeignKeyConstraint( ['ledger_contract_flowthrough_id'], ['ledger_contract_flowthrough.ledger_contract_flowthrough_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_lcf_current_balance_ledger_contract_flowthrough', ), Index('fk_lcf_current_balance_account', 'account_id'), Index( 'fk_lcf_current_balance_ledger_contract_flowthrough', 'ledger_contract_flowthrough_id', ), Index('uidx_contract_id', 'contract_id', unique=True), { 'comment': 'Tracks the current balance for each contract by referencing the ' 'most recent flowthrough transaction. Provides quick access to ' 'current state without scanning historical records.' }, ) ledger_contract_flowthrough_current_balance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key for the current balance record.', autoincrement=True, init=False, ) ledger_contract_flowthrough_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Reference to the most recent flowthrough record for this contract.', ) account_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Account associated with this current balance.', ) contract_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Contract associated with this current balance.', ) created_by: Mapped[str] = mapped_column( String(255), nullable=False, comment='User or component that created this record.', default=None, ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='Timestamp when record was created.', default=None, ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, comment='User or component that last modified this record.', default=None, ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, comment='Timestamp of last modification.', default=None, ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_contract_flowthrough_current_balance', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='ledger_contract_flowthrough_current_balance', init=False, ) ledger_contract_flowthrough: Mapped['LedgerContractFlowthrough'] = relationship( 'LedgerContractFlowthrough', back_populates='ledger_contract_flowthrough_current_balance', init=False, ) class LedgerCorrection(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_correction' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_contract', ), ForeignKeyConstraint( ['correction_statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_correction_statement_period', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_statement_period', ), ForeignKeyConstraint( ['worksheet_correction_id'], ['worksheet_correction.worksheet_correction_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_correction_worksheet_correction', ), Index('fk_ledger_correction_abacus_event', 'abacus_event_id'), Index('fk_ledger_correction_account', 'account_id'), Index('fk_ledger_correction_contract', 'contract_id'), Index( 'fk_ledger_correction_correction_statement_period', 'correction_statement_period_id', ), Index('fk_ledger_correction_statement_period', 'statement_period_id'), Index('fk_ledger_correction_worksheet_correction', 'worksheet_correction_id'), ) ledger_correction_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) worksheet_correction_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) correction_statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) correction_type: Mapped[str] = mapped_column( ENUM('royalty_reversal', 'royalty_correction'), nullable=False ) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) gross_revenue: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) distribution_fee: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) net_revenue: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) mechanical_deduction_total: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) mechanical_deduction_admin_fee_total: Mapped[Optional[decimal.Decimal]] = ( mapped_column(DECIMAL(20, 2), default=None) ) note: Mapped[Optional[str]] = mapped_column(MEDIUMTEXT, default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_correction', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_correction', init=False ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='ledger_correction', init=False ) correction_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[correction_statement_period_id], back_populates='ledger_correction', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[statement_period_id], back_populates='ledger_correction_', init=False, ) worksheet_correction: Mapped['WorksheetCorrection'] = relationship( 'WorksheetCorrection', back_populates='ledger_correction', init=False ) class LedgerReserveTaken(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_reserve_taken' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_taken_abacus_event_id', ), ForeignKeyConstraint( ['accounting_run_id'], ['accounting_run.accounting_run_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_taken_accounting_run_id', ), ForeignKeyConstraint( ['contract_reserve_id'], ['contract_reserve.contract_reserve_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_taken_contract_reserve_id', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_taken_statement_period_id', ), Index('fk_ledger_reserve_taken_abacus_event_id', 'abacus_event_id'), Index('fk_ledger_reserve_taken_accounting_run_id', 'accounting_run_id'), Index('fk_ledger_reserve_taken_contract_reserve_id', 'contract_reserve_id'), Index('fk_ledger_reserve_taken_statement_period_id', 'statement_period_id'), ) ledger_reserve_taken_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_reserve_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) accounting_run_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) gross_sales: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) gross_returns: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) net_revenue: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) reserve_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) net_revenue_after_reserve: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_reserve_taken', init=False ) accounting_run: Mapped['AccountingRun'] = relationship( 'AccountingRun', back_populates='ledger_reserve_taken', init=False ) contract_reserve: Mapped['ContractReserve'] = relationship( 'ContractReserve', back_populates='ledger_reserve_taken', init=False ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='ledger_reserve_taken', init=False ) ledger_reserve_release_schedule: Mapped[list['LedgerReserveReleaseSchedule']] = ( relationship( 'LedgerReserveReleaseSchedule', back_populates='ledger_reserve_taken', init=False, ) ) class ProjectTransferTermCondition(Base, CreateMixin): __tablename__ = 'project_transfer_term_condition' __table_args__ = ( ForeignKeyConstraint( ['project_transfer_term_id'], ['project_transfer_term.project_transfer_term_id'], ondelete='CASCADE', onupdate='CASCADE', name='FK_project_transfer_term_condition_term', ), Index( 'IDX_project_transfer_term_condition_term_id', 'project_transfer_term_id' ), ) project_transfer_term_condition_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) project_transfer_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) conditions: Mapped[dict] = mapped_column(JSON, nullable=False) term_rate: Mapped[decimal.Decimal] = mapped_column(DECIMAL(5, 2), nullable=False) commission: Mapped[decimal.Decimal] = mapped_column( DECIMAL(5, 2), nullable=False, server_default=text("'0.00'") ) priority: Mapped[int] = mapped_column( TINYINT, nullable=False, server_default=text("'1'") ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) name: Mapped[Optional[str]] = mapped_column(String(180), default=None) project_transfer_term: Mapped['ProjectTransferTerm'] = relationship( 'ProjectTransferTerm', back_populates='project_transfer_term_condition', init=False, ) class WorksheetAccountContractClosingBalance( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'worksheet_account_contract_closing_balance' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_waccb_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_waccb_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_waccb_contract', ), ForeignKeyConstraint( ['ledger_account_contract_id'], ['ledger_account_contract.ledger_account_contract_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_waccb_ledger_account_contract', ), ForeignKeyConstraint( ['reference_payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_waccb_reference_payment_entity', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_waccb_statement_period', ), Index('fk_waccb_abacus_event', 'abacus_event_id'), Index('fk_waccb_account', 'account_id'), Index('fk_waccb_ledger_account_contract', 'ledger_account_contract_id'), Index('fk_waccb_reference_payment_entity', 'reference_payment_entity_id'), Index('fk_waccb_statement_period', 'statement_period_id'), Index( 'unique_waccb_contract_statement_period_event', 'contract_id', 'statement_period_id', 'abacus_event_id', unique=True, ), ) worksheet_account_contract_closing_balance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_payment_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) includes_tax_adjustments: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) ledger_account_contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='worksheet_account_contract_closing_balance', init=False, ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_account_contract_closing_balance', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_account_contract_closing_balance', init=False, ) ledger_account_contract: Mapped['LedgerAccountContract'] = relationship( 'LedgerAccountContract', back_populates='worksheet_account_contract_closing_balance', init=False, ) reference_payment_entity: Mapped['ReferencePaymentEntity'] = relationship( 'ReferencePaymentEntity', back_populates='worksheet_account_contract_closing_balance', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_account_contract_closing_balance', init=False, ) worksheet_account_contract_payable_after_tax: Mapped[ list['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='worksheet_account_contract_closing_balance', init=False, ) worksheet_account_contract_taxable_revenue: Mapped[ list['WorksheetAccountContractTaxableRevenue'] ] = relationship( 'WorksheetAccountContractTaxableRevenue', back_populates='worksheet_account_contract_closing_balance', init=False, ) class WorksheetAdjustmentDetail(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_adjustment_detail' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_account', ), ForeignKeyConstraint( ['activity_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_activity_statement_period', ), ForeignKeyConstraint( ['apply_to_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_apply_to_statement_period', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_contract', ), ForeignKeyConstraint( ['reference_adjustment_type_id'], ['reference_adjustment_type.reference_adjustment_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_reference_adjustment_type', ), ForeignKeyConstraint( ['statement_period_adjustment_file_id'], ['statement_period_adjustment_file.statement_period_adjustment_file_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_statement_period_adjustment_file', ), ForeignKeyConstraint( ['worksheet_adjustment_id'], ['worksheet_adjustment.worksheet_adjustment_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_worksheet_adjustment_detail_worksheet_adjustment', ), Index('fk_worksheet_adjustment_detail_account', 'account_id'), Index( 'fk_worksheet_adjustment_detail_activity_statement_period', 'activity_statement_period_id', ), Index( 'fk_worksheet_adjustment_detail_apply_to_statement_period', 'apply_to_statement_period_id', ), Index('fk_worksheet_adjustment_detail_contract', 'contract_id'), Index( 'fk_worksheet_adjustment_detail_reference_adjustment_type', 'reference_adjustment_type_id', ), Index( 'fk_worksheet_adjustment_detail_statement_period_adjustment_file', 'statement_period_adjustment_file_id', ), Index( 'fk_worksheet_adjustment_detail_worksheet_adjustment', 'worksheet_adjustment_id', ), ) worksheet_adjustment_detail_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) statement_period_adjustment_file_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) worksheet_adjustment_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) activity_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) apply_to_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_adjustment_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) upc: Mapped[str] = mapped_column(String(20, 'utf8mb4_general_ci'), nullable=False) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) contract_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) distribution_type: Mapped[Optional[str]] = mapped_column( ENUM('digital', 'physical'), default=None ) note: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) internal_note: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_adjustment_detail', init=False ) activity_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[activity_statement_period_id], back_populates='worksheet_adjustment_detail', init=False, ) apply_to_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[apply_to_statement_period_id], back_populates='worksheet_adjustment_detail_', init=False, ) contract: Mapped[Optional['Contract']] = relationship( 'Contract', back_populates='worksheet_adjustment_detail', init=False ) reference_adjustment_type: Mapped['ReferenceAdjustmentType'] = relationship( 'ReferenceAdjustmentType', back_populates='worksheet_adjustment_detail', init=False, ) statement_period_adjustment_file: Mapped['StatementPeriodAdjustmentFile'] = ( relationship( 'StatementPeriodAdjustmentFile', back_populates='worksheet_adjustment_detail', init=False, ) ) worksheet_adjustment: Mapped['WorksheetAdjustment'] = relationship( 'WorksheetAdjustment', back_populates='worksheet_adjustment_detail', init=False ) ledger_adjustment_detail_applied: Mapped[list['LedgerAdjustmentDetailApplied']] = ( relationship( 'LedgerAdjustmentDetailApplied', back_populates='worksheet_adjustment_detail', init=False, ) ) class WorksheetPaymentContractAdvance(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'worksheet_payment_contract_advance' __table_args__ = ( ForeignKeyConstraint( ['contract_advance_id'], ['contract_advance.contract_advance_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_contract_advance', ), ForeignKeyConstraint( ['exchange_rate_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_exchange_rate_statement_period_id', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_statement_period', ), Index('fk_contract_advance', 'contract_advance_id'), Index( 'fk_exchange_rate_statement_period_id', 'exchange_rate_statement_period_id' ), Index('fk_statement_period', 'statement_period_id'), ) worksheet_payment_contract_advance_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_advance_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) exchange_rate_statement_period_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) payment_name: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False ) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) payee_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) exchange_rate: Mapped[decimal.Decimal] = mapped_column( DECIMAL(30, 19), nullable=False ) withholding_tax_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) vat_amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) amount_after_withholding_and_vat: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) withholding_tax_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) vat_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) amount_after_withholding_and_vat_payee_currency: Mapped[decimal.Decimal] = ( mapped_column(DECIMAL(20, 2), nullable=False) ) is_internal: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) us_source_income_rate: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(9, 6), default=None ) salesforce_id: Mapped[Optional[str]] = mapped_column( String(180, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) contract_advance: Mapped['ContractAdvance'] = relationship( 'ContractAdvance', back_populates='worksheet_payment_contract_advance', init=False, ) exchange_rate_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[exchange_rate_statement_period_id], back_populates='worksheet_payment_contract_advance', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[statement_period_id], back_populates='worksheet_payment_contract_advance_', init=False, ) class ContractTermScheduleHistory(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'contract_term_schedule_history' __table_args__ = ( ForeignKeyConstraint( ['contract_term_id'], ['contract_term.contract_term_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_contract_term_schedule_history_contract_term', ), ForeignKeyConstraint( ['contract_term_schedule_id'], ['contract_term_schedule.contract_term_schedule_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fl_contract_term_schedule_history_term_schedule', ), ForeignKeyConstraint( ['schedule_id'], ['schedule.schedule_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_contract_term_schedule_history_schedule', ), Index('fk_contract_term_schedule_history_contract_term', 'contract_term_id'), Index('fk_contract_term_schedule_history_schedule', 'schedule_id'), Index( 'fl_contract_term_schedule_history_term_schedule', 'contract_term_schedule_id', ), ) contract_term_schedule_history_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_term_schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_term_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) schedule_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) created_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column( String(255, 'utf8mb4_general_ci'), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) contract_term: Mapped['ContractTerm'] = relationship( 'ContractTerm', back_populates='contract_term_schedule_history', init=False ) contract_term_schedule: Mapped['ContractTermSchedule'] = relationship( 'ContractTermSchedule', back_populates='contract_term_schedule_history', init=False, ) schedule: Mapped['Schedule'] = relationship( 'Schedule', back_populates='contract_term_schedule_history', init=False ) class LedgerAdjustmentDetailApplied(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_adjustment_detail_applied' __table_args__ = ( ForeignKeyConstraint( ['ledger_adjustment_detail_id'], ['ledger_adjustment_detail.ledger_adjustment_detail_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_applied_ledger_adjustment_detail_id', ), ForeignKeyConstraint( ['worksheet_adjustment_detail_id'], ['worksheet_adjustment_detail.worksheet_adjustment_detail_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_adjustment_detail_applied_adjustment_detail', ), ForeignKeyConstraint( ['worksheet_adjustment_id'], ['worksheet_adjustment.worksheet_adjustment_id'], ondelete='RESTRICT', onupdate='CASCADE', name='fk_ledger_adjustment_detail_worksheet_adjustment', ), Index( 'fk_ledger_adjustment_detail_applied_ledger_adjustment_detail_id', 'ledger_adjustment_detail_id', ), Index( 'fk_ledger_adjustment_detail_worksheet_adjustment', 'worksheet_adjustment_id', ), Index( 'idx_worksheet_adjustment_detail_id', 'worksheet_adjustment_detail_id', unique=True, ), Index( 'uidx_worksheet_adjustment_detail_id', 'worksheet_adjustment_detail_id', unique=True, ), ) ledger_adjustment_detail_applied_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) adjustment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) adjustment_amount_payee_currency: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) adjustment_payee_currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) ledger_adjustment_detail_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) worksheet_adjustment_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) worksheet_adjustment_detail_id: Mapped[Optional[int]] = mapped_column( MEDIUMINT, default=None ) apply_to_flowthrough_payment: Mapped[Optional[int]] = mapped_column( TINYINT(1), default=None ) ledger_adjustment_detail: Mapped[Optional['LedgerAdjustmentDetail']] = relationship( 'LedgerAdjustmentDetail', back_populates='ledger_adjustment_detail_applied', init=False, ) worksheet_adjustment_detail: Mapped[Optional['WorksheetAdjustmentDetail']] = ( relationship( 'WorksheetAdjustmentDetail', back_populates='ledger_adjustment_detail_applied', init=False, ) ) worksheet_adjustment: Mapped[Optional['WorksheetAdjustment']] = relationship( 'WorksheetAdjustment', back_populates='ledger_adjustment_detail_applied', init=False, ) ledger_adjustment_adjustment_detail_applied: Mapped[ list['LedgerAdjustmentAdjustmentDetailApplied'] ] = relationship( 'LedgerAdjustmentAdjustmentDetailApplied', back_populates='ledger_adjustment_detail_applied', init=False, ) class LedgerReserveReleaseSchedule(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_reserve_release_schedule' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_release_schedule_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_release_schedule_account', ), ForeignKeyConstraint( ['ledger_reserve_taken_id'], ['ledger_reserve_taken.ledger_reserve_taken_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_release_schedule_reserve_taken', ), ForeignKeyConstraint( ['release_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_release_schedule_statement_period_release', ), ForeignKeyConstraint( ['taken_statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_release_schedule_statement_period_taken', ), Index('fk_release_schedule_abacus_event', 'abacus_event_id'), Index('fk_release_schedule_account', 'account_id'), Index('fk_release_schedule_reserve_taken', 'ledger_reserve_taken_id'), Index( 'fk_release_schedule_statement_period_release', 'release_statement_period_id', ), Index( 'fk_release_schedule_statement_period_taken', 'taken_statement_period_id' ), ) ledger_reserve_release_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) taken_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) release_statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) ledger_reserve_taken_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) currency_code: Mapped[str] = mapped_column( CHAR(3, 'utf8mb4_general_ci'), nullable=False ) installment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) outstanding_amount_after_installment: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) early_release_date: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_reserve_release_schedule', init=False ) account: Mapped['Account'] = relationship( 'Account', back_populates='ledger_reserve_release_schedule', init=False ) ledger_reserve_taken: Mapped['LedgerReserveTaken'] = relationship( 'LedgerReserveTaken', back_populates='ledger_reserve_release_schedule', init=False, ) release_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[release_statement_period_id], back_populates='ledger_reserve_release_schedule', init=False, ) taken_statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', foreign_keys=[taken_statement_period_id], back_populates='ledger_reserve_release_schedule_', init=False, ) ledger_reserve_release: Mapped[list['LedgerReserveRelease']] = relationship( 'LedgerReserveRelease', back_populates='ledger_reserve_release_schedule', init=False, ) class PaymentAllocationLedgerAdjustment( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'payment_allocation_ledger_adjustment' __table_args__ = ( ForeignKeyConstraint( ['ledger_adjustment_applied_id'], ['ledger_adjustment_applied.ledger_adjustment_applied_id'], ondelete='CASCADE', name='fk_payment_alloc_ledger_adj_ledger_adjustment_applied', ), ForeignKeyConstraint( ['payment_allocation_id'], ['payment_allocation.payment_allocation_id'], ondelete='CASCADE', name='fk_payment_alloc_ledger_adj_payment_allocation', ), Index( 'fk_payment_alloc_ledger_adj_ledger_adjustment_applied', 'ledger_adjustment_applied_id', ), Index( 'fk_payment_alloc_ledger_adj_payment_allocation', 'payment_allocation_id' ), Index( 'uidx_payment_allocation_ledger_adjustment', 'payment_allocation_id', 'ledger_adjustment_applied_id', unique=True, ), {'comment': 'Mapping table between payment allocations and ledger adjustments'}, ) payment_allocation_ledger_adjustment_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, comment='Primary key.', autoincrement=True, init=False, ) payment_allocation_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to payment_allocation table.' ) ledger_adjustment_applied_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False, comment='Foreign key to ledger_adjustment_applied table.', ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), default=None, ) created_by: Mapped[str] = mapped_column(String(180), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), default=None, ) last_modified_by: Mapped[str] = mapped_column( String(180), nullable=False, default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(180), default=None) ledger_adjustment_applied: Mapped['LedgerAdjustmentApplied'] = relationship( 'LedgerAdjustmentApplied', back_populates='payment_allocation_ledger_adjustment', init=False, ) payment_allocation: Mapped['PaymentAllocation'] = relationship( 'PaymentAllocation', back_populates='payment_allocation_ledger_adjustment', init=False, ) class WorksheetAccountContractPayableAfterTax( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'worksheet_account_contract_payable_after_tax' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='RESTRICT', onupdate='RESTRICT', name='fk_wacpat_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpat_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpat_contract', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpat_statement_period', ), ForeignKeyConstraint( ['worksheet_account_contract_closing_balance_id'], [ 'worksheet_account_contract_closing_balance.worksheet_account_contract_closing_balance_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpat_waccb', ), Index('fk_wacpat_abacus_event', 'abacus_event_id'), Index('fk_wacpat_account', 'account_id'), Index('fk_wacpat_contract', 'contract_id'), Index('fk_wacpat_statement_period', 'statement_period_id'), Index('fk_wacpat_waccb', 'worksheet_account_contract_closing_balance_id'), ) worksheet_account_contract_payable_after_tax_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) worksheet_account_contract_closing_balance_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payable_amount_pre_tax: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) payable_amount_post_tax: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) country_of_tax_residence: Mapped[str] = mapped_column(CHAR(3), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) tax_withholding_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) country_of_tax_policy: Mapped[Optional[str]] = mapped_column(CHAR(3), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) worksheet_account_contract_closing_balance: Mapped[ 'WorksheetAccountContractClosingBalance' ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) payment_group_payment_account_detail: Mapped[ list['PaymentGroupPaymentAccountDetail'] ] = relationship( 'PaymentGroupPaymentAccountDetail', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) worksheet_account_contract_payable_details: Mapped[ list['WorksheetAccountContractPayableDetails'] ] = relationship( 'WorksheetAccountContractPayableDetails', back_populates='worksheet_account_contract_payable_after_tax', init=False, ) class WorksheetAccountContractTaxableRevenue( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'worksheet_account_contract_taxable_revenue' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_abacus_event', ), ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_contract', ), ForeignKeyConstraint( ['reference_payment_entity_id'], ['reference_payment_entity.reference_payment_entity_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_ref_payment_entity', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_statement_period', ), ForeignKeyConstraint( ['worksheet_account_contract_closing_balance_id'], [ 'worksheet_account_contract_closing_balance.worksheet_account_contract_closing_balance_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_wactr_waccb', ), Index('fk_wactr_abacus_event', 'abacus_event_id'), Index('fk_wactr_account', 'account_id'), Index('fk_wactr_contract', 'contract_id'), Index('fk_wactr_ref_payment_entity', 'reference_payment_entity_id'), Index('fk_wactr_statement_period', 'statement_period_id'), Index('fk_wactr_waccb', 'worksheet_account_contract_closing_balance_id'), ) account_contract_taxable_revenue_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) reference_payment_entity_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) amount: Mapped[decimal.Decimal] = mapped_column(DECIMAL(20, 2), nullable=False) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) revenue_transaction_type: Mapped[str] = mapped_column( Enum('digital', 'physical', 'closing_balance'), nullable=False ) is_us_revenue: Mapped[int] = mapped_column( TINYINT(1), nullable=False, server_default=text("'0'") ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) worksheet_account_contract_closing_balance_id: Mapped[Optional[int]] = ( mapped_column(MEDIUMINT, default=None) ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) reference_payment_entity: Mapped['ReferencePaymentEntity'] = relationship( 'ReferencePaymentEntity', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) worksheet_account_contract_closing_balance: Mapped[ Optional['WorksheetAccountContractClosingBalance'] ] = relationship( 'WorksheetAccountContractClosingBalance', back_populates='worksheet_account_contract_taxable_revenue', init=False, ) class LedgerAdjustmentAdjustmentDetailApplied(Base): __tablename__ = 'ledger_adjustment_adjustment_detail_applied' __table_args__ = ( ForeignKeyConstraint( ['ledger_adjustment_applied_id'], ['ledger_adjustment_applied.ledger_adjustment_applied_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_applied', ), ForeignKeyConstraint( ['ledger_adjustment_detail_applied_id'], ['ledger_adjustment_detail_applied.ledger_adjustment_detail_applied_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_adjustment_detail_applied', ), Index('fk_ledger_adjustment_applied', 'ledger_adjustment_applied_id'), Index( 'fk_ledger_adjustment_detail_applied', 'ledger_adjustment_detail_applied_id' ), ) ledger_adjustment_adjustment_detail_applied_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) ledger_adjustment_applied_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) ledger_adjustment_detail_applied_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) ledger_adjustment_applied: Mapped['LedgerAdjustmentApplied'] = relationship( 'LedgerAdjustmentApplied', back_populates='ledger_adjustment_adjustment_detail_applied', init=False, ) ledger_adjustment_detail_applied: Mapped['LedgerAdjustmentDetailApplied'] = ( relationship( 'LedgerAdjustmentDetailApplied', back_populates='ledger_adjustment_adjustment_detail_applied', init=False, ) ) class LedgerReserveRelease(Base, CreateMixin, UpdateMixin): __tablename__ = 'ledger_reserve_release' __table_args__ = ( ForeignKeyConstraint( ['abacus_event_id'], ['abacus_event.abacus_event_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_release_abacus_event_id', ), ForeignKeyConstraint( ['ledger_reserve_release_schedule_id'], ['ledger_reserve_release_schedule.ledger_reserve_release_schedule_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_release_schedule_id', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_ledger_reserve_release_statement_period_id', ), Index('fk_ledger_reserve_release_abacus_event_id', 'abacus_event_id'), Index('fk_ledger_reserve_release_statement_period_id', 'statement_period_id'), Index( 'uidx_ledger_reserve_release_schedule_id', 'ledger_reserve_release_schedule_id', unique=True, ), ) ledger_reserve_release_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) abacus_event_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) ledger_reserve_release_schedule_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) installment_amount: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) created_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(180, 'utf8mb4_general_ci'), nullable=False, default=None ) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) abacus_event: Mapped['AbacusEvent'] = relationship( 'AbacusEvent', back_populates='ledger_reserve_release', init=False ) ledger_reserve_release_schedule: Mapped['LedgerReserveReleaseSchedule'] = ( relationship( 'LedgerReserveReleaseSchedule', back_populates='ledger_reserve_release', init=False, ) ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='ledger_reserve_release', init=False ) class PaymentGroupPaymentAccountDetail(Base, CreateMixin, SoftDeleteMixin, UpdateMixin): __tablename__ = 'payment_group_payment_account_detail' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_pgpad_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_pgpad_contract', ), ForeignKeyConstraint( ['payment_group_payment_account_id'], ['payment_group_payment_account.payment_group_payment_account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_pgpad_payment_group_payment_account', ), ForeignKeyConstraint( ['worksheet_account_contract_payable_after_tax_id'], [ 'worksheet_account_contract_payable_after_tax.worksheet_account_contract_payable_after_tax_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_pgpad_wacpat', ), Index('fk_pgpad_account', 'account_id'), Index('fk_pgpad_contract', 'contract_id'), Index( 'fk_pgpad_payment_group_payment_account', 'payment_group_payment_account_id' ), Index( 'idx_pgpad_wacpat_deleted', 'worksheet_account_contract_payable_after_tax_id', 'deleted_at', ), ) payment_group_payment_account_detail_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) payment_group_payment_account_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) worksheet_account_contract_payable_after_tax_id: Mapped[int] = mapped_column( MEDIUMINT, nullable=False ) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payable_amount_pre_tax: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) payable_amount_post_tax: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) currency_code: Mapped[str] = mapped_column(CHAR(3), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) tax_withholding_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) vat_amount: Mapped[Optional[decimal.Decimal]] = mapped_column( DECIMAL(20, 2), default=None ) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='payment_group_payment_account_detail', init=False ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='payment_group_payment_account_detail', init=False ) payment_group_payment_account: Mapped['PaymentGroupPaymentAccount'] = relationship( 'PaymentGroupPaymentAccount', back_populates='payment_group_payment_account_detail', init=False, ) worksheet_account_contract_payable_after_tax: Mapped[ 'WorksheetAccountContractPayableAfterTax' ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='payment_group_payment_account_detail', init=False, ) class WorksheetAccountContractPayableDetails( Base, CreateMixin, SoftDeleteMixin, UpdateMixin ): __tablename__ = 'worksheet_account_contract_payable_details' __table_args__ = ( ForeignKeyConstraint( ['account_id'], ['account.account_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpd_account', ), ForeignKeyConstraint( ['contract_id'], ['contract.contract_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpd_contract', ), ForeignKeyConstraint( ['payable_detail_type_id'], ['reference_payable_detail_type.reference_payable_detail_type_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpd_ref_payable_detail', ), ForeignKeyConstraint( ['statement_period_id'], ['statement_period.statement_period_id'], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpd_statement_period', ), ForeignKeyConstraint( ['worksheet_account_contract_payable_after_tax_id'], [ 'worksheet_account_contract_payable_after_tax.worksheet_account_contract_payable_after_tax_id' ], ondelete='CASCADE', onupdate='CASCADE', name='fk_wacpd_wacpat', ), Index('fk_wacpd_account', 'account_id'), Index('fk_wacpd_contract', 'contract_id'), Index('fk_wacpd_ref_payable_detail', 'payable_detail_type_id'), Index('fk_wacpd_statement_period', 'statement_period_id'), Index('fk_wacpd_wacpat', 'worksheet_account_contract_payable_after_tax_id'), Index( 'idx_wacpd_target_table_target_id', 'target_table', 'target_id', 'deleted_at', ), ) worksheet_account_contract_payable_details_id: Mapped[int] = mapped_column( MEDIUMINT, primary_key=True, autoincrement=True, init=False ) contract_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) account_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) statement_period_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) target_table: Mapped[str] = mapped_column(String(255), nullable=False) target_id: Mapped[int] = mapped_column(MEDIUMINT, nullable=False) payable_detail_type_id: Mapped[int] = mapped_column(TINYINT, nullable=False) amount_payable: Mapped[decimal.Decimal] = mapped_column( DECIMAL(20, 2), nullable=False ) currency: Mapped[str] = mapped_column(CHAR(3), nullable=False) created_at: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) created_by: Mapped[str] = mapped_column(String(255), nullable=False, default=None) last_modified: Mapped[datetime.datetime] = mapped_column( NormalizedDateTime, nullable=False, default=None ) last_modified_by: Mapped[str] = mapped_column( String(255), nullable=False, default=None ) worksheet_account_contract_payable_after_tax_id: Mapped[Optional[int]] = ( mapped_column(MEDIUMINT, default=None) ) reference_target_table: Mapped[Optional[str]] = mapped_column( String(255), default=None ) reference_target_id: Mapped[Optional[int]] = mapped_column(MEDIUMINT, default=None) notes: Mapped[Optional[str]] = mapped_column(String(255), default=None) deleted_at: Mapped[Optional[datetime.datetime]] = mapped_column( NormalizedDateTime, default=None ) deleted_by: Mapped[Optional[str]] = mapped_column(String(255), default=None) account: Mapped['Account'] = relationship( 'Account', back_populates='worksheet_account_contract_payable_details', init=False, ) contract: Mapped['Contract'] = relationship( 'Contract', back_populates='worksheet_account_contract_payable_details', init=False, ) payable_detail_type: Mapped['ReferencePayableDetailType'] = relationship( 'ReferencePayableDetailType', back_populates='worksheet_account_contract_payable_details', init=False, ) statement_period: Mapped['StatementPeriod'] = relationship( 'StatementPeriod', back_populates='worksheet_account_contract_payable_details', init=False, ) worksheet_account_contract_payable_after_tax: Mapped[ Optional['WorksheetAccountContractPayableAfterTax'] ] = relationship( 'WorksheetAccountContractPayableAfterTax', back_populates='worksheet_account_contract_payable_details', init=False, )