feat(ItemPedido): Altera a situação do item pedido

This commit is contained in:
Keven 2025-12-03 18:02:42 -03:00
parent 8d7cdac663
commit 7e31386acd
6 changed files with 162 additions and 0 deletions

View file

@ -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

View file

@ -2,6 +2,7 @@ from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import ( from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
TServicoItemIndexSchema, TServicoItemIndexSchema,
TServicoItemPedidoSaveSchema, TServicoItemPedidoSaveSchema,
TServicoItemPedidoSaveSituacaoSchema,
TServicoItemPedidoUpdateSchema, TServicoItemPedidoUpdateSchema,
TServicoItemPedidoIdSchema, TServicoItemPedidoIdSchema,
) )
@ -75,6 +76,26 @@ class TServicoItemPedidoController:
"data": self.save_service.execute(t_servico_itempedido_save_schema), "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 # Atualiza um registro existente de T_SERVICO_ITEMPEDIDO
# ---------------------------------------------------- # ----------------------------------------------------

View file

@ -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 ( from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
TServicoItemIndexSchema, TServicoItemIndexSchema,
TServicoItemPedidoSaveSchema, TServicoItemPedidoSaveSchema,
TServicoItemPedidoSaveSituacaoSchema,
TServicoItemPedidoUpdateSchema, TServicoItemPedidoUpdateSchema,
TServicoItemPedidoIdSchema, TServicoItemPedidoIdSchema,
) )
@ -106,6 +107,29 @@ async def update(
return response 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 # Exclui um registro de T_SERVICO_ITEMPEDIDO
# ---------------------------------------------------- # ----------------------------------------------------

View file

@ -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}",
)

View file

@ -111,6 +111,15 @@ class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema):
from_attributes = True from_attributes = True
class TServicoItemPedidoSaveSituacaoSchema(BaseModel):
servico_itempedido_id: int = None
situacao: str = None
class Config:
from_attributes = True
# ---------------------------------------------------- # ----------------------------------------------------
# Schema para atualização (PUT) # Schema para atualização (PUT)
# - inclui o ID + campos opcionais para alterar # - inclui o ID + campos opcionais para alterar

View file

@ -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)