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)