осталось немного дописать инициализацию БД и переходим к API
This commit is contained in:
+77
-21
@@ -40,11 +40,21 @@ class StocksActions:
|
||||
reason=reason,
|
||||
quantity=quantity,
|
||||
price=price,
|
||||
return_record_id=True,
|
||||
)
|
||||
logger.info(
|
||||
f"Оприходование инструмента {toolkit_id} на складе {toolbox_id} прошло {'успешно' if recorded else 'не успешно'}"
|
||||
)
|
||||
return recorded
|
||||
if recorded:
|
||||
accepted = await StocksRecordsHandler.accept(
|
||||
recorded, user_id, None, quantity, price
|
||||
)
|
||||
if not accepted:
|
||||
logger.error(
|
||||
f"Принятие записи о оприходовании инструмента {toolkit_id} на складе {toolbox_id} не удалось"
|
||||
)
|
||||
return accepted
|
||||
return False
|
||||
|
||||
async def moving(
|
||||
action: str,
|
||||
@@ -74,7 +84,7 @@ class StocksActions:
|
||||
return False
|
||||
|
||||
totalTakeQuantity = 0
|
||||
writeDownLIst = []
|
||||
writeDownList = []
|
||||
|
||||
for stock in availability:
|
||||
if quantity == totalTakeQuantity:
|
||||
@@ -99,7 +109,7 @@ class StocksActions:
|
||||
)
|
||||
|
||||
if not target_toolbox_id:
|
||||
writeDownLIst.append(
|
||||
writeDownList.append(
|
||||
{
|
||||
"id": sourceEdit["id"],
|
||||
"quantity": takeQuantity,
|
||||
@@ -169,45 +179,45 @@ class StocksActions:
|
||||
logger.info(
|
||||
f"{action} инструмента {toolkit_id} со склада {source_toolbox_id} на склад {target_toolbox_id} прошло успешно"
|
||||
)
|
||||
return True if target_toolbox_id else writeDownLIst
|
||||
return True if target_toolbox_id else writeDownList
|
||||
|
||||
async def writeDownRequest(
|
||||
async def movingRequest(
|
||||
action: str,
|
||||
toolkit_id: int,
|
||||
toolbox_id: int,
|
||||
source_toolbox_id: int,
|
||||
target_toolbox_id: int,
|
||||
quantity: int,
|
||||
reason: str,
|
||||
user_id: int,
|
||||
price: int = 0,
|
||||
return_record_id: bool = False,
|
||||
):
|
||||
logger.info(
|
||||
f"Запрос на списание инструмента {toolkit_id} со склада {toolbox_id} в количестве {quantity} по цене {price} ..."
|
||||
f"Запрос на {action} инструмента {toolkit_id} со склада {source_toolbox_id} в количестве {quantity} по цене {price} ..."
|
||||
)
|
||||
recorded = await StocksRecordsHandler.add(
|
||||
action="Списание",
|
||||
action=action,
|
||||
source_stock_id=None,
|
||||
target_stock_id=None,
|
||||
source_toolbox_id=toolbox_id,
|
||||
target_toolbox_id=None,
|
||||
source_toolbox_id=source_toolbox_id,
|
||||
target_toolbox_id=target_toolbox_id,
|
||||
toolkit_id=toolkit_id,
|
||||
init_user_id=user_id,
|
||||
reason=reason,
|
||||
quantity=quantity,
|
||||
price=price,
|
||||
return_record_id=return_record_id,
|
||||
)
|
||||
logger.info(
|
||||
f"Запрос на списание инструмента {toolkit_id} со склада {toolbox_id} в количестве {quantity} по цене {price} {'успешно завершен' if recorded else 'завершен с ошибкой'}"
|
||||
f"Запрос на {action} инструмента {toolkit_id} со склада {source_toolbox_id} в количестве {quantity} по цене {price} {'успешно завершен' if recorded else 'завершен с ошибкой'}"
|
||||
)
|
||||
return recorded
|
||||
|
||||
async def writeDownAcceptance(self, record_id: int, user_id: int):
|
||||
logger.info(f"Принятие записи о списании инструмента {record_id} ...")
|
||||
async def movingAcceptance(self, record_id: int, user_id: int):
|
||||
logger.info(f"Принятие записи о движении инструмента {record_id} ...")
|
||||
writeDownARecord = await StocksRecordsHandler.getById(record_id, True)
|
||||
if not writeDownARecord:
|
||||
return False
|
||||
if writeDownARecord.action != "Списание":
|
||||
logger.error(
|
||||
f"Запись {record_id} не является записью о списании инструмента"
|
||||
)
|
||||
logger.error(f"Запись {record_id} не найдена")
|
||||
return False
|
||||
if writeDownARecord.accepted_at is not None:
|
||||
logger.error(f"Запись {record_id} уже была принята")
|
||||
@@ -222,7 +232,7 @@ class StocksActions:
|
||||
reason=writeDownARecord.reason,
|
||||
)
|
||||
if not stocksMovements:
|
||||
logger.error(f"Ошибка при списании инструмента")
|
||||
logger.error(f"Ошибка при {writeDownARecord.action} инструмента")
|
||||
return False
|
||||
|
||||
accept = await StocksRecordsHandler.accept(
|
||||
@@ -266,11 +276,57 @@ class StocksActions:
|
||||
totalRecordsIds.append(recorded)
|
||||
|
||||
logger.info(
|
||||
f"Записи {', '.join(map(str, totalRecordsIds))} о списании инструмента успешно приняты {user_id}"
|
||||
f"Записи {', '.join(map(str, totalRecordsIds))} о {writeDownARecord.action} инструмента успешно приняты {user_id}"
|
||||
)
|
||||
return True
|
||||
|
||||
# TODO Дописать возврат на склад
|
||||
async def takeToolkit(
|
||||
self,
|
||||
source_toolbox_id: int,
|
||||
target_toolbox_id: int,
|
||||
toolkit_id: int,
|
||||
quantity: int,
|
||||
reason: str,
|
||||
user_id: int,
|
||||
price: int = 0,
|
||||
):
|
||||
logger.info(
|
||||
f"Формирование запроса на получение инструмента {toolkit_id} на склад {target_toolbox_id} со склада {source_toolbox_id} в количестве {quantity} ..."
|
||||
)
|
||||
takeRequest = await self.movingRequest(
|
||||
action="Получение",
|
||||
source_toolbox_id=source_toolbox_id,
|
||||
target_toolbox_id=target_toolbox_id,
|
||||
toolkit_id=toolkit_id,
|
||||
quantity=quantity,
|
||||
user_id=user_id,
|
||||
reason=reason,
|
||||
price=price,
|
||||
return_record_id=True,
|
||||
)
|
||||
if not takeRequest:
|
||||
logger.error(
|
||||
f"Формирование запроса на получение инструмента {toolkit_id} не удалось"
|
||||
)
|
||||
return False
|
||||
logger.info(
|
||||
f"Формирование запроса на получение инструмента {toolkit_id} успешно завершено"
|
||||
)
|
||||
logger.info(
|
||||
f"Принятие запроса {takeRequest} на получение инструмента {toolkit_id} ..."
|
||||
)
|
||||
accepted = await self.movingAcceptance(takeRequest, user_id)
|
||||
if not accepted:
|
||||
logger.error(
|
||||
f"Принятие запроса {takeRequest} на получение инструмента {toolkit_id} не удалось"
|
||||
)
|
||||
return False
|
||||
logger.info(
|
||||
f"Принятие запроса {takeRequest} на получение инструмента {toolkit_id} успешно завершено"
|
||||
)
|
||||
return True
|
||||
|
||||
async def initialize():
|
||||
# TODO прописать наполнение общих складов, получение на личные, возвраты и списания.
|
||||
# Не все запросы на возвраты и списания нужно принять автоматически, нужно оставить несколько для демонстрации
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user