diff --git a/server/backend/handlers/yandex_handler.py b/server/backend/handlers/yandex_handler.py index 86db072..b440ca0 100644 --- a/server/backend/handlers/yandex_handler.py +++ b/server/backend/handlers/yandex_handler.py @@ -23,6 +23,7 @@ def process_sheet(df, multiply_price=1, sheet_name=''): #Группировка df = df.groupby('arti', as_index=False).agg({'counts': 'sum', 'price': 'sum'}) #groupping + print(df) df = processing(df) #vlookup for ref_keys validated_rows, errors = [], [] for i, row in df.iterrows(): #проходит построчно по df, где i - индекс строки, row - данные строки diff --git a/server/backend/schemas/pydantic.py b/server/backend/schemas/pydantic.py index 13f8610..f62eac5 100644 --- a/server/backend/schemas/pydantic.py +++ b/server/backend/schemas/pydantic.py @@ -6,10 +6,6 @@ class ExcelDigitalization(BaseModel): class ExcelInfo(ExcelDigitalization): counts:int = Field(..., gt=0, description="the quantity of the clothes") ref_key:str = Field(..., description="reffering key from db") -class ExcelReturning(BaseModel): - pass -class ExcelOut(BaseModel): - pass class Settings(BaseSettings): DIR:str PRICES_DIR:str diff --git a/server/backend/services/excel.py b/server/backend/services/excel.py index e08a53c..931f859 100644 --- a/server/backend/services/excel.py +++ b/server/backend/services/excel.py @@ -30,14 +30,12 @@ class BaseHandler: except Exception as e: raise Exception(f"⚠️ Ошибка при получении структуры {self.file_path}: {e}") - def process(self): - raise NotImplementedError - class YandexHandler(BaseHandler): def process(self): - dfs = self.read(skiprows=[0,1,3]) - # проверяем наличие нужных листов - if "Получено от потребителей" not in dfs or "Возвращено потребителям" not in dfs: + xls= self.struct() + if "Получено от потребителей" in xls.sheet_names and "Возвращено потребителям" in xls.sheet_names: + dfs = self.read(xls,sheet_name=["Получено от потребителей","Возвращено потребителям"], skiprows=[0,1,3]) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") # вызываем функцию evaluating validated_data = yandex_handler.evaluating(dfs) @@ -64,8 +62,10 @@ class YandexHandler(BaseHandler): doc_creator.fill_document_items_report(doc_key, validated_data[0], validated_data[1]) class WBHandler(BaseHandler): def process(self): - dfs = self.read() - if "Sheet1" not in dfs : + xls= self.struct() + if "Sheet1" in xls.sheet_names: + dfs = self.read(xls) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") validated_data = wb_handler.evaluating(dfs) print("Реализация WB завершена, валидированных строк:", len(validated_data[0]), "Реализация", len(validated_data[1]), "Возвраты", validated_data[2], "Дата") @@ -91,8 +91,10 @@ class WBHandler(BaseHandler): doc_creator.fill_document_items_report(doc_key, validated_data[0], validated_data[1]) class OZONHandler(BaseHandler): def process(self): - dfs = self.read(skiprows=14, skipfooter=17) - if "Отчет о реализации" not in dfs: + xls= self.struct() + if "Отчет о реализации" in xls.sheet_names: + dfs = self.read(xls, skiprows=14, skipfooter=17) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") validated_data = ozon_handler.evaluating(dfs) print("Реализация OZON завершена, валидированных строк:", len(validated_data[0]), "Реализация", len(validated_data[1]), "Возвраты", validated_data[2], "Дата") @@ -120,8 +122,10 @@ class OZONHandler(BaseHandler): class OZONPurchasesHandler(BaseHandler): def process(self): - dfs = self.read(skiprows=[0,3,4,5,6,7,8,9,10,11], skipfooter=1) - if "Отчёт о выкупленных товарах" not in dfs: + xls= self.struct() + if "Отчёт о выкупленных товарах" in xls.sheet_names: + dfs = self.read(xls, skiprows=[0,3,4,5,6,7,8,9,10,11], skipfooter=1) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") validated_data, date = ozon_purchases_handler.evaluating(dfs) print("Выкупы OZON завершены, валидированных строк:", len(validated_data), "Реализация", date, "Дата") @@ -140,8 +144,10 @@ class OZONPurchasesHandler(BaseHandler): doc_creator.fill_document_items_purchase(doc_key, validated_data) class WBPurchasesHandler(BaseHandler): def process(self): - dfs = self.read(skiprows=[0,3,4,5,6,7,8], skipfooter=7) - if "Sheet1" not in dfs: + xls= self.struct() + if "Sheet1" in xls.sheet_names: + dfs = self.read(xls, skiprows=[0,3,4,5,6,7,8], skipfooter=7) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") validated_data, date = wb_purchases_handler.evaluating(dfs) print("Выкупы WB завершены, валидированных строк:", len(validated_data), "Реализация", date, "Дата" ) @@ -160,8 +166,10 @@ class WBPurchasesHandler(BaseHandler): doc_creator.fill_document_items_purchase(doc_key, validated_data) class OZONComHandler(BaseHandler): def process(self): - dfs = self.read(skipfooter=1) - if "Лист_1" not in dfs: + xls= self.struct() + if "Лист_1" in xls.sheet_names: + dfs = self.read(xls, skipfooter=1) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") df = dfs["Лист_1"] # контрагент @@ -186,8 +194,10 @@ class OZONComHandler(BaseHandler): doc_creator.fill_document_items_to_real(doc_key, validated_data) class WBComHandler(BaseHandler): def process(self): - dfs = self.read(skipfooter=1) - if "Лист_1" not in dfs: + xls= self.struct() + if "Лист_1" in xls.sheet_names: + dfs = self.read(xls, skipfooter=1) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") df = dfs["Лист_1"] # контрагент @@ -213,8 +223,10 @@ class WBComHandler(BaseHandler): class YandexComHandler(BaseHandler): def process(self): - dfs = self.read(skipfooter=1) - if "Лист_1" not in dfs: + xls= self.struct() + if "Лист_1" in xls.sheet_names: + dfs = self.read(xls, skipfooter=1) + else: raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы") df = dfs["Лист_1"] # контрагент