digitalization

This commit is contained in:
2026-01-21 19:39:37 +03:00
parent cd5fcd3452
commit 5041e6bd51
8 changed files with 122 additions and 11 deletions

View File

@@ -5,18 +5,30 @@ import server.backend.handlers.ozon_handler as ozon_handler
import server.backend.handlers.ozon_purchases_handler as ozon_purchases_handler
import server.backend.handlers.wb_purchases_handler as wb_purchases_handler
import server.backend.handlers.ozon_wb_yandex_com_handler as ozon_wb_yandex_com_handler
import server.backend.handlers.digitalization as digitalization
from server.backend.schemas.pydantic import settings
from server.backend.api.report import DocumentCreation
class BaseHandler:
def __init__(self, file_path):
self.file_path = file_path
self.dfs = self.read()
def read(self, skiprows=None, skipfooter=0):
def read(self, xls=None, skiprows=None, skipfooter=0, sheet_name=None):
source = xls if xls is not None else self.file_path
try:
return pd.read_excel(self.file_path, sheet_name=None, skiprows=skiprows,skipfooter=skipfooter)
return pd.read_excel(
source,
sheet_name=sheet_name,
skiprows=skiprows,
skipfooter=skipfooter
)
except Exception as e:
raise Exception(f"⚠️ Ошибка при чтении {self.file_path}: {e}")
def struct(self):
try:
return pd.ExcelFile(self.file_path)
except Exception as e:
raise Exception(f"⚠️ Ошибка при получении структуры {self.file_path}: {e}")
def process(self):
raise NotImplementedError
@@ -225,4 +237,29 @@ class YandexComHandler(BaseHandler):
СчетУчетаРасчетовСКонтрагентом_Key=settings.A76_09
)
doc_creator.fill_document_items_to_real(doc_key, validated_data)
class YandexDigital(BaseHandler):
def process(self):
xls = self.struct()
if "Себестоимость товаров" in xls.sheet_names:
df = self.read(xls, sheet_name="Себестоимость товаров", skiprows=2)
else:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = digitalization.evaluating(df, real_arti=0, types="yandex")
print(validated_data)
class OzonDigital(BaseHandler):
def process(self):
xls = self.struct()
if "Себестоимость" in xls.sheet_names:
df = self.read(xls, sheet_name="Себестоимость", skiprows=1)
else:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = digitalization.evaluating(df, real_arti=3, types="ozon")
class WBDigital(BaseHandler):
def process(self):
xls = self.struct()
if "Себестоимость" in xls.sheet_names:
df = self.read(xls, sheet_name="Себестоимость", skiprows=2)
else:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = digitalization.evaluating(df, real_arti=4, types="wb")
print(validated_data)

View File

@@ -11,7 +11,10 @@ handlers = { #метки какие файлы есть и должны быть
"уведомление о выкупе": excel.WBPurchasesHandler,
"Товары, переданные на комиссию озон": excel.OZONComHandler,
"Товары, переданные на комиссию вб": excel.WBComHandler,
"Товары, переданные на комиссию яндекс": excel.YandexComHandler
"Товары, переданные на комиссию яндекс": excel.YandexComHandler,
"Яндекс":excel.YandexDigital,
"Озон":excel.OzonDigital,
"ВБ":excel.WBDigital
}
#Проход по всем файлам в директории
@@ -43,6 +46,12 @@ def validating():
label = "realizationreportcis"
case _ if "уведомление о выкупе" in name:
label = "уведомление о выкупе"
case _ if "yandex" in name:
label = "Яндекс"
case _ if "ozon" in name:
label = "Озон"
case _ if "wb" in name:
label = "ВБ"
case _: #Для неизвестных файлов
print("Неизвестный файл")
if label: