From 7e31386acd77a082c4e1b9d2f4f561b51b6fe688 Mon Sep 17 00:00:00 2001 From: Keven Date: Wed, 3 Dec 2025 18:02:42 -0300 Subject: [PATCH] =?UTF-8?q?feat(ItemPedido):=20Altera=20a=20situa=C3=A7?= =?UTF-8?q?=C3=A3o=20do=20item=20pedido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...servico_itempedido_save_situacao_action.py | 40 ++++++++++++++ .../t_servico_itempedido_controller.py | 21 ++++++++ .../t_servico_itempedido_endpoint.py | 24 +++++++++ ...ico_itempedido_save_situacao_repository.py | 53 +++++++++++++++++++ .../schemas/t_servico_itempedido_schema.py | 9 ++++ ...ervico_itempedido_save_situacao_service.py | 15 ++++++ 6 files changed, 162 insertions(+) create mode 100644 packages/v1/servicos/balcao/actions/t_servico_itempedido/t_servico_itempedido_save_situacao_action.py create mode 100644 packages/v1/servicos/balcao/repositories/t_servico_itempedido/t_servico_itempedido_save_situacao_repository.py create mode 100644 packages/v1/servicos/balcao/services/t_servico_itempedido/go/t_servico_itempedido_save_situacao_service.py diff --git a/packages/v1/servicos/balcao/actions/t_servico_itempedido/t_servico_itempedido_save_situacao_action.py b/packages/v1/servicos/balcao/actions/t_servico_itempedido/t_servico_itempedido_save_situacao_action.py new file mode 100644 index 0000000..3aa3985 --- /dev/null +++ b/packages/v1/servicos/balcao/actions/t_servico_itempedido/t_servico_itempedido_save_situacao_action.py @@ -0,0 +1,40 @@ +from abstracts.action import BaseAction +from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_repository import ( + TServicoItemPedidoSaveRepository, +) +from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import ( + TServicoItemPedidoSaveSituacaoSchema, +) + + +class TServicoItemPedidoSaveSituacaoAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de salvamento de um novo registro na tabela T_SERVICO_ITEMPEDIDO. + """ + + def execute(self, data: TServicoItemPedidoSaveSituacaoSchema): + """ + Executa a operação de salvamento. + + Args: + t_servico_itempedido_schema (TServicoItemPedidoSchema): + O esquema com os dados a serem persistidos. + + Returns: + O resultado da operação de salvamento. + """ + # ---------------------------------------------------- + # Instanciamento do repositório + # ---------------------------------------------------- + t_servico_itempedido_save_repository = TServicoItemPedidoSaveRepository() + + # ---------------------------------------------------- + # Execução do repositório + # ---------------------------------------------------- + response = t_servico_itempedido_save_repository.execute(data) + + # ---------------------------------------------------- + # Retorno da informação + # ---------------------------------------------------- + return response diff --git a/packages/v1/servicos/balcao/controllers/t_servico_itempedido_controller.py b/packages/v1/servicos/balcao/controllers/t_servico_itempedido_controller.py index c6eddfd..e4bc1e1 100644 --- a/packages/v1/servicos/balcao/controllers/t_servico_itempedido_controller.py +++ b/packages/v1/servicos/balcao/controllers/t_servico_itempedido_controller.py @@ -2,6 +2,7 @@ from actions.dynamic_import.dynamic_import import DynamicImport from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import ( TServicoItemIndexSchema, TServicoItemPedidoSaveSchema, + TServicoItemPedidoSaveSituacaoSchema, TServicoItemPedidoUpdateSchema, TServicoItemPedidoIdSchema, ) @@ -75,6 +76,26 @@ class TServicoItemPedidoController: "data": self.save_service.execute(t_servico_itempedido_save_schema), } + # ---------------------------------------------------- + # Cadastra um novo registro em T_SERVICO_ITEMPEDIDO + # ---------------------------------------------------- + def saveSituacao(self, data: TServicoItemPedidoSaveSituacaoSchema): + + # Importação da classe desejada + save_service = self.dynamic_import.service( + "t_servico_itempedido_save_situacao_service", + "TServicoItemPedidoSaveSituacaoService", + ) + + # Instância da classe service + self.save_service = save_service() + + # Execução do salvamento + return { + "message": "Registro de T_SERVICO_ITEMPEDIDO salvo com sucesso.", + "data": self.save_service.execute(data), + } + # ---------------------------------------------------- # Atualiza um registro existente de T_SERVICO_ITEMPEDIDO # ---------------------------------------------------- diff --git a/packages/v1/servicos/balcao/endpoints/t_servico_itempedido_endpoint.py b/packages/v1/servicos/balcao/endpoints/t_servico_itempedido_endpoint.py index b584928..c59ab10 100644 --- a/packages/v1/servicos/balcao/endpoints/t_servico_itempedido_endpoint.py +++ b/packages/v1/servicos/balcao/endpoints/t_servico_itempedido_endpoint.py @@ -7,6 +7,7 @@ from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller imp from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import ( TServicoItemIndexSchema, TServicoItemPedidoSaveSchema, + TServicoItemPedidoSaveSituacaoSchema, TServicoItemPedidoUpdateSchema, TServicoItemPedidoIdSchema, ) @@ -106,6 +107,29 @@ async def update( return response +# ---------------------------------------------------- +# Atualiza a situação de um registro de T_SERVICO_ITEMPEDIDO +# ---------------------------------------------------- +@router.put( + "/{servico_itempedido_id}/situacao", + status_code=status.HTTP_200_OK, + summary="Atualiza a situação de um registro em T_SERVICO_ITEMPEDIDO", + response_description="Situação atualizada com sucesso", +) +async def save_situacao( + servico_itempedido_id: int, + data: TServicoItemPedidoSaveSituacaoSchema, + current_user: dict = Depends(get_current_user), +): + """ + Atualiza a situação de um registro de T_SERVICO_ITEMPEDIDO com base no ID informado. + """ + data.servico_itempedido_id = servico_itempedido_id + + response = t_servico_itempedido_controller.update(data) + return response + + # ---------------------------------------------------- # Exclui um registro de T_SERVICO_ITEMPEDIDO # ---------------------------------------------------- diff --git a/packages/v1/servicos/balcao/repositories/t_servico_itempedido/t_servico_itempedido_save_situacao_repository.py b/packages/v1/servicos/balcao/repositories/t_servico_itempedido/t_servico_itempedido_save_situacao_repository.py new file mode 100644 index 0000000..4b0bfd2 --- /dev/null +++ b/packages/v1/servicos/balcao/repositories/t_servico_itempedido/t_servico_itempedido_save_situacao_repository.py @@ -0,0 +1,53 @@ +from fastapi import HTTPException, status +from abstracts.repository import BaseRepository +from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import ( + TServicoItemPedidoSaveSituacaoSchema, +) + + +class TServicoItemPedidoSaveSituacaoRepository(BaseRepository): + """ + Repositório responsável pela operação de salvamento de um novo registro + na tabela T_SERVICO_ITEMPEDIDO. + """ + + def execute(self, data: TServicoItemPedidoSaveSituacaoSchema): + """ + Executa a operação de salvamento no banco de dados. + + Args: + t_servico_itempedido_save_schema (TServicoItemPedidoSchema): O esquema com os dados a serem salvos. + + Returns: + O registro recém-criado. + + Raises: + HTTPException: Caso ocorra um erro na execução da query. + """ + try: + + # ---------------------------------------------------- + # Preenchimento dos parâmetros + # ---------------------------------------------------- + params = data.model_dump( + exclude_unset=True, + ) + + # ---------------------------------------------------- + # Montagem do SQL dinâmico + # ---------------------------------------------------- + sql = """ UPDATE T_SERVICO_ITEMPEDIDO tsip SET tsip.SITUACAO LIKE :situacao WHERE tsip.SERVICO_ITEMPEDIDO_ID = :item_servicopedido_id """ + + # ---------------------------------------------------- + # Execução do SQL e retorno do registro + # ---------------------------------------------------- + return self.run_and_return(sql, params) + + except Exception as e: + # ---------------------------------------------------- + # Tratamento de erros e lançamento de exceção HTTP + # ---------------------------------------------------- + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Erro ao salvar registro em T_SERVICO_ITEMPEDIDO: {e}", + ) diff --git a/packages/v1/servicos/balcao/schemas/t_servico_itempedido_schema.py b/packages/v1/servicos/balcao/schemas/t_servico_itempedido_schema.py index 9ed540f..1c5c42b 100644 --- a/packages/v1/servicos/balcao/schemas/t_servico_itempedido_schema.py +++ b/packages/v1/servicos/balcao/schemas/t_servico_itempedido_schema.py @@ -111,6 +111,15 @@ class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema): from_attributes = True +class TServicoItemPedidoSaveSituacaoSchema(BaseModel): + + servico_itempedido_id: int = None + situacao: str = None + + class Config: + from_attributes = True + + # ---------------------------------------------------- # Schema para atualização (PUT) # - inclui o ID + campos opcionais para alterar diff --git a/packages/v1/servicos/balcao/services/t_servico_itempedido/go/t_servico_itempedido_save_situacao_service.py b/packages/v1/servicos/balcao/services/t_servico_itempedido/go/t_servico_itempedido_save_situacao_service.py new file mode 100644 index 0000000..230c91b --- /dev/null +++ b/packages/v1/servicos/balcao/services/t_servico_itempedido/go/t_servico_itempedido_save_situacao_service.py @@ -0,0 +1,15 @@ +from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_action import ( + TServicoItemPedidoSaveAction, +) +from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_situacao_action import ( + TServicoItemPedidoSaveSituacaoSchema, +) + + +class TServicoItemPedidoSaveSituacaoService: + + def execute(self, data: TServicoItemPedidoSaveSituacaoSchema): + + t_servico_itempedido_save_action = TServicoItemPedidoSaveAction() + + return t_servico_itempedido_save_action.execute(data)