"""Constants and Enums.""" from enum import Enum from enum import StrEnum from typing import TypedDict from config import OWS_PROFILE_ID from config import OWS_PROFILE_ROLES from config import OWS_PROFILE_TYPE # Headers DEFAULT_HEADERS = { 'Orchard-Profile-Type': OWS_PROFILE_TYPE, 'Orchard-Profile-Id': OWS_PROFILE_ID, 'Orchard-Roles': OWS_PROFILE_ROLES, 'Accept-Encoding': 'gzip', } class TaxDetails(TypedDict, total=False): """Tax details structure.""" address: dict[str, str | None] business_name: str vat_number: int local_tax_id: str tax_number: str fake_tax_details: TaxDetails = { 'address': { 'country_code': 'NOR', 'address_1': 'Fake Address', 'address_2': '', 'city': 'Bergen', 'province': None, 'zip': '24601', }, 'business_name': 'Fake Business Name', 'vat_number': 1, 'local_tax_id': 'ES2-fake', } class Encoding(Enum): """Encoding enum.""" UTF8 = 'utf-8' UTF8_SIG = 'utf-8-sig' UTF16 = 'utf-16' # Feature flags class FeatureFlag(StrEnum): """Feature Flag Enum.""" KNR_CSV_CORRECTIONS = 'moneyhub_knr_csv_corrections' SPEED_IMPROVEMENTS = 'moneyhub_lambda_speed_improvements' NEW_PDF_LIBRARY = 'moneyhub_new_pdf_library' # Request Methods class RequestMethod(StrEnum): """Request methods enum.""" GET = 'get' PUT = 'put' class StatementAttachmentFailureReason(StrEnum): """Statement Attachment Failure Reason.""" MISSING_TAX = 'missing_tax_information' MISSING_BANK = 'missing_bank_information' SYSTEM_ERROR = 'system_error' class StatementAttachmentStatus(StrEnum): """Statement Attachment Status.""" COMPLETE = 'complete' ERROR = 'error' IN_PROGRESS = 'in_progress' RETRY = 'retry' class StatementAttachmentType(StrEnum): """Statement Attachment Type.""" DISTRIBUTION_FEE = 'distribution_fee_invoice' LEGACY_REVENUE_DETAIL_FULL = 'legacy_revenue_detail_full' LEGACY_REVENUE_DETAIL_PHYSICAL = 'legacy_revenue_detail_physical' NEIGHBOURING_RIGHTS_LABEL_REVENUE = 'nr_label_revenue' NEIGHBOURING_RIGHTS_PERFORMER_REVENUE = 'nr_performer_revenue' REVENUE_DETAIL = 'revenue_detail' SELF_BILLING = 'self_billing_invoice' COLLECTION_SUMMARY_LABEL = 'collection_summary_label' COLLECTION_SUMMARY_PERFORMER = 'collection_summary_performer' INTERNAL_UPLOAD = 'internal_upload' class NumberFormat(StrEnum): """File Numbers Format.""" EU = 'eu' US = 'us' class VatCategoryType(StrEnum): """Vat Category Type.""" DISTRIBUTION_FEE = 'distribution_fee' COMMISSION = 'commission' GROSS_REVENUE = 'gross_revenue' CLOSING_BALANCE = 'closing_balance' CUSTOM_PAYMENT = 'custom_payment' VAT_CATEGORY_DESCRIPTIONS = { VatCategoryType.CLOSING_BALANCE: 'Royalties for the period', VatCategoryType.COMMISSION: 'Commission for the period', VatCategoryType.DISTRIBUTION_FEE: 'Fees for the period', VatCategoryType.GROSS_REVENUE: 'Royalties for statement period', VatCategoryType.CUSTOM_PAYMENT: 'Royalties for the period', } DBT_TABLE_DISTRIBUTION = 'REVENUE_DISTRO_DBT' DBT_TABLE_NEIGHBOURING_RIGHTS = 'REVENUE_NR_DBT' CONTRIBUTOR_ONLY_SCHEDULE_MSG = 'Recording Details Not Reported By Society.' # Decimal columns REVENUE_DETAIL_DECIMAL_COLUMNS = [ 'UNIT_PRICE_SALE_CURRENCY', 'GROSS_REVENUE_AFTER_WITHHOLDING_TAX_SALE_CURRENCY', 'EXCHANGE_RATE', 'GROSS_REVENUE_AFTER_WITHHOLDING_TAX_PAYEE_CURRENCY', 'ROYALTY_RATE', 'NET_SHARE_PAYEE_CURRENCY', 'PHYS_PPD_USD', 'MECHANICAL_DEDUCTION_AMOUNT_PAYEE_CURRENCY', 'PUBLISHER_ADMIN_FEE_PAYEE_CURRENCY', ]