Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -15,7 +15,7 @@ import pandas as pd
|
|
| 15 |
|
| 16 |
def process_rental_company(company_name: str):
|
| 17 |
"""
|
| 18 |
-
특정 렌탈사의 데이터 처리 (
|
| 19 |
|
| 20 |
Args:
|
| 21 |
company_name: 처리할 렌탈사 이름
|
|
@@ -51,38 +51,6 @@ def process_rental_company(company_name: str):
|
|
| 51 |
print(f"\n'{company_name}' 렌탈사 데이터 처리 완료.")
|
| 52 |
|
| 53 |
|
| 54 |
-
def process_uploaded_file(file_obj):
|
| 55 |
-
"""
|
| 56 |
-
사용자가 업로드한 파일 직접 처리 (Gradio용)
|
| 57 |
-
|
| 58 |
-
Args:
|
| 59 |
-
file_obj: 업로드된 파일 객체
|
| 60 |
-
Returns:
|
| 61 |
-
생성된 CSV 파일 경로
|
| 62 |
-
"""
|
| 63 |
-
company_config = cfg.RENTAL_COMPANIES['한국렌탈']
|
| 64 |
-
mapping_dict = mapping_utils.load_mapping_file(company_config['mapping_file'])
|
| 65 |
-
|
| 66 |
-
# 직접 file_obj를 Pandas로 읽어옴
|
| 67 |
-
df, df_filtered = data_processor.load_and_preprocess_data(file_obj, company_config, mapping_dict)
|
| 68 |
-
summary = data_processor.summarize_data(df_filtered, mapping_dict)
|
| 69 |
-
erp_df = erp_generator.generate_erp_data(df_filtered, company_config)
|
| 70 |
-
erp_df = erp_generator.prepare_erp_columns(erp_df)
|
| 71 |
-
erp_df = erp_generator.set_management_items(erp_df, df_filtered, company_config)
|
| 72 |
-
|
| 73 |
-
erp_form = file_handler.load_erp_form_template(company_config['erp_form_file'])
|
| 74 |
-
result_df = file_handler.prepare_file_with_template(erp_df, erp_form)
|
| 75 |
-
|
| 76 |
-
# output 경로 세팅
|
| 77 |
-
output_csv = os.path.join(cfg.OUTPUT_DIR, f'자동전표_업로드파일_{cfg.CURRENT_DATE}.csv')
|
| 78 |
-
output_excel = os.path.join(cfg.OUTPUT_DIR, f'자동전표_업로드파일_{cfg.CURRENT_DATE}.xlsx')
|
| 79 |
-
report_file = os.path.join(cfg.OUTPUT_DIR, f'보고서_업로드파일_{cfg.CURRENT_DATE}.txt')
|
| 80 |
-
|
| 81 |
-
file_handler.save_to_files(result_df, output_csv, output_excel, len(erp_df))
|
| 82 |
-
reporter.generate_report_file(summary, erp_df, report_file)
|
| 83 |
-
|
| 84 |
-
return output_csv
|
| 85 |
-
|
| 86 |
def process_rental_company_with_voucher(uploaded_file_path, voucher_number):
|
| 87 |
"""
|
| 88 |
사용자가 업로드한 파일과 전표번호를 받아 ERP 자동 전표파일을 생성하는 함수
|
|
@@ -94,43 +62,35 @@ def process_rental_company_with_voucher(uploaded_file_path, voucher_number):
|
|
| 94 |
Returns:
|
| 95 |
output_path (str): 최종 저장된 파일 경로 (xlsx)
|
| 96 |
"""
|
| 97 |
-
# 한국렌탈 기준으로 설정 (혹시 다르면 추후 확장 가능)
|
| 98 |
company_name = "한국렌탈"
|
| 99 |
company_config = cfg.RENTAL_COMPANIES[company_name]
|
| 100 |
|
| 101 |
-
# 매핑 정보 로드
|
| 102 |
mapping_file = company_config['mapping_file']
|
| 103 |
mapping_dict = mapping_utils.load_mapping_file(mapping_file)
|
| 104 |
|
| 105 |
-
# 데이터 로드 및 전처리
|
| 106 |
df, df_filtered = data_processor.load_and_preprocess_data(uploaded_file_path, company_config, mapping_dict)
|
| 107 |
-
|
| 108 |
-
# 데이터 요약 생성
|
| 109 |
summary = data_processor.summarize_data(df_filtered, mapping_dict)
|
| 110 |
-
|
| 111 |
-
# ERP 데이터 생성
|
| 112 |
erp_df = erp_generator.generate_erp_data(df_filtered, company_config)
|
| 113 |
-
|
| 114 |
-
# ERP 표준 컬럼 구조로 준비
|
| 115 |
erp_df = erp_generator.prepare_erp_columns(erp_df)
|
| 116 |
-
|
| 117 |
-
# 관리항목 설정
|
| 118 |
erp_df = erp_generator.set_management_items(erp_df, df_filtered, company_config)
|
| 119 |
|
| 120 |
-
#
|
| 121 |
if 'ROW_ID' in erp_df.columns:
|
| 122 |
erp_df['ROW_ID'] = voucher_number
|
| 123 |
if 'NO_DOCU' in erp_df.columns:
|
| 124 |
erp_df['NO_DOCU'] = voucher_number
|
| 125 |
|
| 126 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
output_filename = f"자동전표_완성파일_{datetime.now().strftime('%Y%m%d')}.xlsx"
|
| 128 |
output_path = os.path.join(cfg.OUTPUT_DIR, output_filename)
|
| 129 |
-
|
| 130 |
os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
|
| 131 |
|
| 132 |
-
#
|
| 133 |
-
|
| 134 |
|
| 135 |
return output_path
|
| 136 |
|
|
|
|
| 15 |
|
| 16 |
def process_rental_company(company_name: str):
|
| 17 |
"""
|
| 18 |
+
특정 렌탈사의 데이터 처리 (CLI 실행용)
|
| 19 |
|
| 20 |
Args:
|
| 21 |
company_name: 처리할 렌탈사 이름
|
|
|
|
| 51 |
print(f"\n'{company_name}' 렌탈사 데이터 처리 완료.")
|
| 52 |
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
def process_rental_company_with_voucher(uploaded_file_path, voucher_number):
|
| 55 |
"""
|
| 56 |
사용자가 업로드한 파일과 전표번호를 받아 ERP 자동 전표파일을 생성하는 함수
|
|
|
|
| 62 |
Returns:
|
| 63 |
output_path (str): 최종 저장된 파일 경로 (xlsx)
|
| 64 |
"""
|
|
|
|
| 65 |
company_name = "한국렌탈"
|
| 66 |
company_config = cfg.RENTAL_COMPANIES[company_name]
|
| 67 |
|
|
|
|
| 68 |
mapping_file = company_config['mapping_file']
|
| 69 |
mapping_dict = mapping_utils.load_mapping_file(mapping_file)
|
| 70 |
|
|
|
|
| 71 |
df, df_filtered = data_processor.load_and_preprocess_data(uploaded_file_path, company_config, mapping_dict)
|
|
|
|
|
|
|
| 72 |
summary = data_processor.summarize_data(df_filtered, mapping_dict)
|
|
|
|
|
|
|
| 73 |
erp_df = erp_generator.generate_erp_data(df_filtered, company_config)
|
|
|
|
|
|
|
| 74 |
erp_df = erp_generator.prepare_erp_columns(erp_df)
|
|
|
|
|
|
|
| 75 |
erp_df = erp_generator.set_management_items(erp_df, df_filtered, company_config)
|
| 76 |
|
| 77 |
+
# 전표번호 채우기
|
| 78 |
if 'ROW_ID' in erp_df.columns:
|
| 79 |
erp_df['ROW_ID'] = voucher_number
|
| 80 |
if 'NO_DOCU' in erp_df.columns:
|
| 81 |
erp_df['NO_DOCU'] = voucher_number
|
| 82 |
|
| 83 |
+
# ⭐ ERP 템플릿 양식에 맞춰서 준비
|
| 84 |
+
erp_form = file_handler.load_erp_form_template(company_config['erp_form_file'])
|
| 85 |
+
result_df = file_handler.prepare_file_with_template(erp_df, erp_form)
|
| 86 |
+
|
| 87 |
+
# 저장
|
| 88 |
output_filename = f"자동전표_완성파일_{datetime.now().strftime('%Y%m%d')}.xlsx"
|
| 89 |
output_path = os.path.join(cfg.OUTPUT_DIR, output_filename)
|
|
|
|
| 90 |
os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
|
| 91 |
|
| 92 |
+
# ⭐ 반드시 result_df 저장
|
| 93 |
+
result_df.to_excel(output_path, index=False, engine="openpyxl")
|
| 94 |
|
| 95 |
return output_path
|
| 96 |
|