Spaces:
Sleeping
Sleeping
| """ | |
| ERP μλ μ ν μμ± λ©μΈ μ€ν νμΌ | |
| """ | |
| import os | |
| import argparse | |
| from datetime import datetime | |
| import config as cfg | |
| import mapping_utils | |
| import data_processor | |
| import erp_generator | |
| import file_handler | |
| import reporter | |
| import pandas as pd | |
| def process_rental_company(company_name: str): | |
| """ | |
| νΉμ λ νμ¬μ λ°μ΄ν° μ²λ¦¬ (CLI μ€νμ©) | |
| Args: | |
| company_name: μ²λ¦¬ν λ νμ¬ μ΄λ¦ | |
| """ | |
| if company_name not in cfg.RENTAL_COMPANIES: | |
| print(f"μ€λ₯: '{company_name}' λ νμ¬ μ€μ μ μ°Ύμ μ μμ΅λλ€.") | |
| return | |
| company_config = cfg.RENTAL_COMPANIES[company_name] | |
| print(f"'{company_name}' λ νμ¬ λ°μ΄ν° μ²λ¦¬ μμ...") | |
| input_file = company_config['input_file'] | |
| mapping_file = company_config['mapping_file'] | |
| erp_form_file = company_config['erp_form_file'] | |
| output_csv = company_config['output_csv'] | |
| output_excel = company_config['output_excel'] | |
| report_file = os.path.join(cfg.OUTPUT_DIR, f'λ³΄κ³ μ_{company_name}_{datetime.now().strftime("%Y%m%d")}.txt') | |
| mapping_dict = mapping_utils.load_mapping_file(mapping_file) | |
| df, df_filtered = data_processor.load_and_preprocess_data(input_file, company_config, mapping_dict) | |
| summary = data_processor.summarize_data(df_filtered, mapping_dict) | |
| erp_df = erp_generator.generate_erp_data(df_filtered, company_config) | |
| erp_df = erp_generator.prepare_erp_columns(erp_df) | |
| erp_df = erp_generator.set_management_items(erp_df, df_filtered, company_config) | |
| erp_form = file_handler.load_erp_form_template(erp_form_file) | |
| result_df = file_handler.prepare_file_with_template(erp_df, erp_form) | |
| file_handler.save_to_files(result_df, output_csv, output_excel, len(erp_df)) | |
| reporter.print_data_summary(summary, company_config) | |
| # reporter.generate_report_file(summary, erp_df, report_file) | |
| print(f"\n'{company_name}' λ νμ¬ λ°μ΄ν° μ²λ¦¬ μλ£.") | |
| def process_rental_company_with_voucher(uploaded_file_path, voucher_number): | |
| company_name = "νκ΅λ ν" | |
| company_config = cfg.RENTAL_COMPANIES[company_name] | |
| mapping_file = company_config['mapping_file'] | |
| mapping_dict = mapping_utils.load_mapping_file(mapping_file) | |
| df, df_filtered = data_processor.load_and_preprocess_data(uploaded_file_path, company_config, mapping_dict) | |
| summary = data_processor.summarize_data(df_filtered, mapping_dict) | |
| erp_df = erp_generator.generate_erp_data(df_filtered, company_config) | |
| erp_df = erp_generator.prepare_erp_columns(erp_df) | |
| erp_df = erp_generator.set_management_items(erp_df, df_filtered, company_config) | |
| # μ νλ²νΈ μ±μλ£κΈ° | |
| if 'ROW_ID' in erp_df.columns: | |
| erp_df['ROW_ID'] = voucher_number | |
| if 'NO_DOCU' in erp_df.columns: | |
| erp_df['NO_DOCU'] = voucher_number | |
| # ERP μμ λ‘λ | |
| erp_form = file_handler.load_erp_form_template(company_config['erp_form_file']) | |
| # ERP μμμ λ§μΆ°μ λ°μ΄ν° μ€λΉ | |
| result_df = file_handler.prepare_file_with_template(erp_df, erp_form) | |
| # μ μ₯ | |
| output_filename = f"μλμ ν_μμ±νμΌ_{datetime.now().strftime('%Y%m%d')}.xlsx" | |
| output_path = os.path.join(cfg.OUTPUT_DIR, output_filename) | |
| os.makedirs(cfg.OUTPUT_DIR, exist_ok=True) | |
| # μ΄μ μ€λΉλ result_dfλ₯Ό μ μ₯ | |
| result_df.to_excel(output_path, index=False, engine='openpyxl') | |
| return output_path | |
| def main(): | |
| """ | |
| λ©μΈ μ€ν ν¨μ (CLI μ€ν) | |
| """ | |
| parser = argparse.ArgumentParser(description='ERP μλ μ ν μμ± νλ‘κ·Έλ¨') | |
| parser.add_argument('-c', '--company', type=str, help='μ²λ¦¬ν λ νμ¬ μ΄λ¦') | |
| parser.add_argument('-a', '--all', action='store_true', help='λͺ¨λ λ νμ¬ μ²λ¦¬') | |
| args = parser.parse_args() | |
| if args.all: | |
| for company_name in cfg.RENTAL_COMPANIES.keys(): | |
| process_rental_company(company_name) | |
| print('-' * 80) | |
| elif args.company: | |
| process_rental_company(args.company) | |
| else: | |
| process_rental_company('νκ΅λ ν') | |
| if __name__ == "__main__": | |
| main() | |