"""Constants.""" from collections import namedtuple SERVICE_NAME = 'ows-royalties-workflows' AIRFLOW_SERVICE_NAME = 'abacus-managed-airflow' # DAG constants DAG_ACCOUNTING_PERIOD_CLOSE_EVENT_NAME = 'accounting_period_close' DAG_ACCOUNTING_PERIOD_CLOSE_NAME = 'accounting_period_close' DAG_ACCOUNTING_PERIOD_CLOSE_TARGET_TYPE = 'accounting_period' DAG_ACCOUNTING_PERIOD_SALES_APPROVE_NAME = 'accounting_period_sales_approve' DAG_ACCOUNTING_PERIOD_SALES_APPROVE_EVENT_NAME = 'approve_sales_files' DAG_ACCOUNTING_PERIOD_SALES_APPROVE_TARGET_TYPE = 'accounting_period' DAG_ACCOUNTING_RUN_COMMIT_EVENT_NAME = 'accounting_run_commit' DAG_ACCOUNTING_RUN_COMMIT_TARGET_TYPE = 'accounting_run' DAG_ADJUSTMENT_FILE_GENERATE_FLOWTHROUGH_EVENT_NAME = 'generate_flowthrough_adjustments' DAG_ADJUSTMENT_FILE_GENERATE_NAME = 'adjustment_file_generate' DAG_ADJUSTMENT_FILE_GENERATE_TARGET_TYPE = 'statement_period_adjustment_file' DAG_ADJUSTMENT_FILE_IMPORT_EVENT_NAME = 'adjustment_file_worksheet_import' DAG_ADJUSTMENT_FILE_IMPORT_NAME = 'adjustment_file_import' DAG_ADJUSTMENT_FILE_IMPORT_TARGET_TYPE = 'statement_period_adjustment_file' DAG_ADJUSTMENT_FILE_UPLOAD_EVENT_NAME = 'adjustment_file_upload' DAG_ADJUSTMENT_FILE_UPLOAD_NAME = 'adjustment_file_upload' DAG_ADJUSTMENT_FILE_UPLOAD_TARGET_TYPE = 'statement_period_adjustment_file' DAG_ADJUSTMENT_FILE_REQUIRED_HEADERS = 15 DAG_ADJUSTMENT_FILE_MAX_ROWS = 70000 DAG_APPLY_ADJUSTMENTS_NAME = 'apply_adjustments' DAG_APPLY_ADJUSTMENTS_EVENT_NAME = 'apply_pending_adjustments' DAG_APPLY_ADJUSTMENTS_TARGET_TYPE = 'statement_period' DAG_APPLY_PENDING_ADJUSTMENTS_EVENT_NAME = 'apply_pending_adjustments' DAG_APPLY_PENDING_ADJUSTMENTS_NAME = 'apply_pending_adjustments' DAG_APPLY_PENDING_ADJUSTMENTS_TARGET_TYPE = 'statement_period_adjustment_file' DAG_CALC_TARGET_TYPE = 'accounting_run' DAG_CALC_EVENT_NAME = 'accounting_run_calculate' DAG_NR_CALC_EVENT_NAME = 'accounting_run_calculate_nr' DAG_CALC_VAT_EVENT_NAME = 'accounting_period_calculate_vat' DAG_CALC_VAT_TARGET_TYPE = 'accounting_period' DAG_COMMIT_COMMIT_ROYALTIES_EVENT_NAME = 'commit_royalties' DAG_COMMIT_MECHANICALS_EVENT_NAME = 'commit_mechanicals' DAG_COMMIT_TAKE_RESERVES_EVENT_NAME = 'take_reserves' DAG_EXAMPLE_EVENT_NAME = 'example_lambda_invocation' DAG_EXAMPLE_TARGET_TYPE = 'object_type' DAG_MECHANICALS_EVENT_NAME = 'accounting_period_mechanicals' DAG_MECHANICALS_TARGET_TYPE = 'accounting_period' DAG_PAYMENTS_GENERATE_EVENT_NAME = 'payments_generate' DAG_PAYMENTS_GENERATE_TARGET_TYPE = 'payment_group_payment' DAG_PAYMENTS_GENERATE_EXPORT_EVENT_NAME = 'generate_export' DAG_PAYMENTS_GENERATE_EXPORT_NAME = 'payments_generate_export' DAG_PAYMENTS_GENERATE_EXPORT_TARGET_TYPE = 'payment_group_payment' DAG_PAYONEER_PAYMENTS_PAYOUT_EVENT_NAME = 'send_payments' DAG_PAYONEER_PAYMENTS_PAYOUT_NAME = 'payoneer_payments_payout' DAG_PAYONEER_PAYMENTS_PAYOUT_TARGET_TYPE = 'payment_group_payment' DAG_PAYMENTS_UPLOAD_APPROVAL_EVENT_NAME = 'upload_approval' DAG_PAYMENTS_UPLOAD_APPROVAL_NAME = 'payments_upload_approval' DAG_PAYMENTS_UPLOAD_APPROVAL_TARGET_TYPE = 'payment_group_payment' DAG_RESERVES_RELEASE_EVENT_NAME = 'release_reserves' DAG_RESERVES_RELEASE_NAME = 'reserves_release' DAG_RESERVES_RELEASE_TARGET_TYPE = 'statement_period' DAG_SALES_APPROVE_EVENT_NAME = 'approve_sales' DAG_SALES_APPROVE_NAME = 'sales_approve' DAG_SALES_APPROVE_TARGET_TYPE = 'sales_file' DAG_SALES_GET_ELIGIBLE_EVENT_NAME = 'get_eligible_sales' DAG_SALES_GET_ELIGIBLE_NAME = 'sales_get_eligible' DAG_SALES_GET_ELIGIBLE_TARGET_TYPE = 'sales_file' DAG_SALES_INGEST_NR_EVENT_NAME = 'ingest_sales_nr' DAG_SALES_INGEST_DISTRO_EVENT_NAME = 'ingest_sales_distro' DAG_SALES_INGEST_NAME = 'sales_ingest' DAG_SALES_INGEST_ELIGIBLE_TARGET_TYPE = 'batch' DAG_SCHEDULE_RESERVES = 'schedule_reserves' # Errors ERROR_DUPLICATE_JOB = 'A processing job for this file is already underway.' ERROR_UNEXPECTED_EVENT = 'Expecting {field} "{expected}", received "{actual}"' ERROR_UNKNOWN_COUNTRY = 'Country code not recognized: {code}' # Files FILE_NAME_CONTRACTS_CSV = 'contracts.csv' FILE_NAME_CONTRACT_TERMS_CSV = 'contract-terms.csv' FILE_NAME_EXCHANGE_RATES_PARQUET = 'exchange-rates/' FILE_NAME_MECHANICAL_EXPORT_TSV = 'mechanical-export.tsv' FILE_NAME_PAYMENT_SUMMARY_SUFFIX = 'summary.tsv' FILE_NAME_RESULTS_PARQUET = 'results/' # Directories DIRECTORY_APPROVALS = 'approval' DIRECTORY_ARCHIVE = 'archive' DIRECTORY_ELIGIBLE_SALES = 'eligible-sales' DIRECTORY_MODULE_CALCULATE_TOTALS = 'totals' DIRECTORY_MODULE_MATCH_CONTRACTS = 'match-contracts' DIRECTORY_MODULE_VAT = 'vat' DIRECTORY_SNAPSHOTS = 'snapshots' DIRECTORY_SUMMARY = 'summary' # OWS services SERVICE_ABACUS_ACCOUNT = 'ows-abacus-account' SERVICE_ABACUS_EVENT = 'ows-abacus-event' SERVICE_ABACUS_STATE = 'ows-abacus-state' SERVICE_LEDGER = 'ows-ledger' SERVICE_PAYMENT = 'ows-payment' SERVICE_ROYALTIES = 'ows-royalties' # ABACUS STATES _acct_period_actions = namedtuple( 'AccountingPeriodActions', [ 'APPROVE_SALES_FILES', 'PREP_MECHANICAL_DEDUCTIONS', 'CLOSE_PERIOD' ] ) ACCOUNTING_PERIOD_ACTIONS = _acct_period_actions( APPROVE_SALES_FILES='approve_sales_files', PREP_MECHANICAL_DEDUCTIONS='prep_mechanical_deductions', CLOSE_PERIOD='close_period' ) _acct_run_actions = namedtuple( 'AccountingRunActions', [ 'COMMIT_ROYALTIES' ] ) ACCOUNTING_RUN_ACTIONS = _acct_run_actions( COMMIT_ROYALTIES='commit_royalties' ) _sales_file_actions = namedtuple( 'SalesFileActions', [ 'GET_ELIGIBLE_SALES', 'APPROVE_SALES' ] ) SALES_FILE_ACTIONS = _sales_file_actions( GET_ELIGIBLE_SALES='get_eligible_sales', APPROVE_SALES='approve_sales' ) _abacus_state_statuses = namedtuple( 'AbacusStateStatuses', [ 'INIT', 'RUNNING', 'ERROR', 'COMPLETE', 'APPROVED' ] ) ABACUS_STATE_STATUSES = _abacus_state_statuses( INIT='init', RUNNING='running', ERROR='error', COMPLETE='complete', APPROVED='approved' ) _acct_run_statuses = namedtuple( 'AccountingRunStatuses', [ 'COMPLETE', 'ERROR', 'RUNNING', 'WAITING_TO_RUN' ] ) ACCOUNTING_RUN_STATUSES = _acct_run_statuses( COMPLETE='Complete', ERROR='Error', RUNNING='Running', WAITING_TO_RUN='Waiting to Run' ) _payment_group_payment_actions = namedtuple( 'PaymentGroupPaymentActions', [ 'CALCULATE_PAYMENTS', 'GENERATE_PAYMENTS', 'GENERATE_EXPORT', 'UPLOAD_APPROVAL', 'SEND_PAYMENTS' ] ) PAYMENT_GROUP_PAYMENT_ACTIONS = _payment_group_payment_actions( CALCULATE_PAYMENTS='calculate_payments', GENERATE_PAYMENTS='generate_payments', GENERATE_EXPORT='generate_export', UPLOAD_APPROVAL='upload_approval', SEND_PAYMENTS='send_payments' ) _payment_group_payment_report_types = namedtuple( 'PaymentGroupPaymentReportTypes', [ 'APPROVAL', 'SUMMARY' ] ) PAYMENT_GROUP_PAYMENT_REPORT_TYPES = _payment_group_payment_report_types( APPROVAL='approval', SUMMARY='summary' ) __statement_period_actions = namedtuple( 'StatementPeriodActions', [ 'UPLOAD_EXCHANGE_RATES', 'RELEASE_RESERVES', 'APPLY_PENDING_ADJUSTMENTS', 'MARK_ADJUSTMENTS_APPLIED', 'STATEMENT_PERIOD_CLOSE' ] ) STATEMENT_PERIOD_ACTIONS = __statement_period_actions( UPLOAD_EXCHANGE_RATES='upload_exchange_rates', RELEASE_RESERVES='release_reserves', APPLY_PENDING_ADJUSTMENTS='apply_pending_adjustments', MARK_ADJUSTMENTS_APPLIED='mark_adjustments_applied', STATEMENT_PERIOD_CLOSE='statement_period_close', ) __statement_period_adjustment_file_actions = namedtuple( 'StatementPeriodAdjustmentFileActions', [ 'UPLOAD_FILE', 'IMPORT_FILE', 'APPLY_FILE' ] ) STATEMENT_PERIOD_ADJUSTMENT_FILE_ACTIONS = __statement_period_adjustment_file_actions( UPLOAD_FILE='upload_file', IMPORT_FILE='import_file', APPLY_FILE='apply_file' ) __auto_generated_statement_period_adjustment_file_actions = namedtuple( 'AutoGeneratedStatementPeriodAdjustmentFileActions', [ 'UPLOAD_FILE', 'VALIDATE_FILE', 'IMPORT_FILE' ] ) AUTO_GENERATED_STATEMENT_PERIOD_ADJUSTMENT_FILE_ACTIONS = ( __auto_generated_statement_period_adjustment_file_actions( UPLOAD_FILE='upload_file', VALIDATE_FILE='validate_file', IMPORT_FILE='import_file' ) ) _statement_period_action_statuses = namedtuple( 'StatementPeriodActionStatuses', [ 'INIT', 'RUNNING', 'ERROR', 'COMPLETE' ] ) STATEMENT_PERIOD_ACTION_STATUSES = _statement_period_action_statuses( INIT='init', RUNNING='running', ERROR='error', COMPLETE='complete' ) _contract_types = namedtuple( 'ContractTypes', [ 'DISTRIBUTION', 'NEIGHBOURING_RIGHTS' ] ) # ACCOUNTING PERIOD CONSTANTS _accounting_period_statuses = namedtuple( 'AccountingPeriodStatuses', [ 'OPEN', 'LOCKED', 'CLOSED' ] ) ACCOUNTING_PERIOD_STATUSES = _accounting_period_statuses( OPEN='open', LOCKED='locked', CLOSED='closed' ) # CONTRACT CONSTANTS _contract_term_conditions = namedtuple( 'ContractTermConditions', [ 'COUNTRIES', 'STORES', 'TRANSACTION_TYPES' ] ) CONTRACT_TERM_CONDITIONS = _contract_term_conditions( COUNTRIES='countries', STORES='stores', TRANSACTION_TYPES='transaction_types' ) CONTRACT_TYPES = _contract_types( DISTRIBUTION='distribution', NEIGHBOURING_RIGHTS='neighbouring_rights' ) STMT_DB_SALES_TEMP_TABLES = { CONTRACT_TYPES.DISTRIBUTION: 'STMT_DB_SALES_DISTRO_TEMP', CONTRACT_TYPES.NEIGHBOURING_RIGHTS: 'STMT_DB_SALES_NR_TEMP' } # FILE HEADERS DAG_ADJUSTMENT_FILE_HEADERS = { 'Account Name', 'Account ID *', 'Contract Name', 'Contract ID *', 'UPC', 'Amount *', 'Currency *', 'Activity Month *', 'Activity Year *', 'Statement Month *', 'Statement Year *', 'Adjustment Type *', 'Client Facing Comments *', 'Distribution Type', 'Internal Note' } PAYMENT_SUMMARY_HEADERS_MAP = { 'account_name': 'Account Name', 'account_id': 'Account ID', 'currency_code': 'Currency', 'last_payment': 'Last Payment', 'last_statement_period_name': 'Last Payment Statement Period', 'balance_after_tax': 'Current Payment', 'current_statement_period_name': 'Current Payment Statement Period', 'payment_difference': 'Diff', 'percent_difference': 'Diff %', 'note': 'Note' } # use if the feature flag calculate_payments_separately is enabled PAYMENT_SUMMARY_HEADERS_MAP_CALCULATE_PAYMENTS = { 'account_name': 'Account Name', 'account_id': 'Account ID', 'currency_code': 'Currency', 'last_payment': 'Last Payment', 'last_statement_period_name': 'Last Payment Statement Period', 'current_balance': 'Outstanding Balance', 'tax_withholding': 'Tax Withholding', 'vat_amount': 'Vat Amount', 'balance_after_tax': 'Current Payment', 'current_statement_period_name': 'Current Payment Statement Period', 'payment_difference': 'Diff', 'percent_difference': 'Diff %', 'note': 'Note' } VAT_EXEMPT_HEADERS_MAP = { 'account_name': 'Account', 'account_id': 'Account ID', 'contract_name': 'Contract', 'contract_id': 'Contract ID', 'country_of_tax_residence': 'Country Of Tax Residence', 'exempt_reason': 'VAT Exempt Reason' } VAT_APPLIED_HEADERS_MAP = { 'account_name': 'Account', 'account_id': 'Account ID', 'contract_name': 'Contract', 'contract_id': 'Contract ID', 'country_of_tax_residence': 'Country Of Tax Residence', 'currency_code': 'Payment Currency', 'gross_revenue': 'Gross Revenue', 'gross_vat': 'VAT On Gross Revenue', 'distribution_fee': 'Dist. Fee', 'distribution_vat': 'VAT On Dist. Fee', 'net_revenue': 'Net Revenue', 'adjusted_net_revenue': 'Net Revenue Including VAT' } PAYMENT_SCHEDULE_MAP = { '30_days_after_month_end': '30 days after month end', '45_days_after_month_end': '45 days after month end', '60_days_after_month_end': '60 days after month end', '90_days_after_month_end': '90 days after month end', '30_days_after_quarter_end': '30 days after quarter end', '45_days_after_quarter_end': '45 days after quarter end', '60_days_after_quarter_end': '60 days after quarter end', '90_days_after_quarter_end': '90 days after quarter end', '30_days_after_half_year_end': '30 days after half-year end', '45_days_after_half_year_end': '45 days after half-year end', '60_days_after_half_year_end': '60 days after half-year end', '90_days_after_half_year_end': '90 days after half-year end', 'TEMPORARY': 'Temporary' } # MECHANICAL DEDUCTION CONSTANTS ALBUM = 'album' TRACK = 'track' # SLACK SLACK_CONN_NAME = 'slack' SLACK_NOTIFICATION_CHANNEL = '#royalty-accounting-devs' SLACK_MESSAGE = """ # {title} * Task: {task} * Dag: {dag} * Execution Time: {exec_date} * Log Url: {log_url} """