"""Tax report kick-off script.""" import os from time import time from dotenv import load_dotenv from royalties.csv import write_tax_report from royalties.period_ids import PeriodIds from royalties.tax_report import execute_tax_report_query load_dotenv() from royalties import config # noqa: E402,I100,I202 STATS_TEXT = """# Params: - Payment Interval: {payment_interval} - Period ID(s): {period_ids} - Territories: {territory_filter}""" def validate_args(): """Validate environment variables for the job.""" period_ids_list = os.environ.get('PERIOD_IDS').split(',') period_ids = PeriodIds(period_ids_list) payment_interval = os.environ.get('PAYMENT_INTERVAL') assert payment_interval in ['month', 'quarter'] territory_filter = os.environ.get('TERRITORY_FILTER') assert territory_filter in ['domestic', 'foreign', 'all'] print(STATS_TEXT.format( payment_interval=payment_interval, period_ids=period_ids, territory_filter=territory_filter )) schema = os.environ.get('SNOWFLAKE_SCHEMA', 'prod') assert schema in ['prod', 'qa'] output_dir = os.environ.get('OUTPUT_DIRECTORY') if not os.path.isdir(output_dir): os.mkdir(output_dir) assert os.path.isdir(output_dir) return period_ids, payment_interval, territory_filter, schema, output_dir def get_output_filename(period_ids, territory_filter, payment_interval): """Template out the filename.""" return ( 'tax-withholding-' f'territories_{territory_filter}-' f'interval_{payment_interval}-' f'periods_{str(period_ids).replace(" ", "").replace(",", "_")}' f'.csv' ) def execute(): """Execute the tax report script.""" print('-- EXPORT START --') period_ids, payment_interval, \ territory_filter, schema, output_dir = validate_args() start_time = time() results = execute_tax_report_query( config.sf_config, period_ids, territory_filter, payment_interval, schema ) duration = time() - start_time print(f'# Found {len(results)} records in {duration}s') if not results: return output_filename = get_output_filename( period_ids, territory_filter, payment_interval ) write_tax_report(output_dir, results, output_filename) print(f'# Writing results to {output_dir}/{output_filename}') print('-- EXPORT COMPLETE --\n') if __name__ == '__main__': execute()