[MVPTN-126] feat(): Endpoint de cancelamento de itempedido

This commit is contained in:
Keven 2025-12-04 18:00:42 -03:00
parent 7e31386acd
commit 6d8468a4e2
7 changed files with 66 additions and 41 deletions

View file

@ -1,13 +1,12 @@
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 (
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
TServicoItemPedidoSaveSituacaoSchema,
)
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_situacao_repository import (
TServicoItemPedidoSaveSituacaoRepository,
)
class TServicoItemPedidoSaveSituacaoAction(BaseAction):
class TServicoItemPedidoSaveSituacaoAction:
"""
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.
@ -27,12 +26,12 @@ class TServicoItemPedidoSaveSituacaoAction(BaseAction):
# ----------------------------------------------------
# Instanciamento do repositório
# ----------------------------------------------------
t_servico_itempedido_save_repository = TServicoItemPedidoSaveRepository()
save_situacao_repository = TServicoItemPedidoSaveSituacaoRepository()
# ----------------------------------------------------
# Execução do repositório
# ----------------------------------------------------
response = t_servico_itempedido_save_repository.execute(data)
response = save_situacao_repository.execute(data)
# ----------------------------------------------------
# Retorno da informação

View file

@ -79,21 +79,21 @@ class TServicoItemPedidoController:
# ----------------------------------------------------
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
# ----------------------------------------------------
def saveSituacao(self, data: TServicoItemPedidoSaveSituacaoSchema):
def cancelar(self, data: TServicoItemPedidoIdSchema):
# Importação da classe desejada
save_service = self.dynamic_import.service(
"t_servico_itempedido_save_situacao_service",
"TServicoItemPedidoSaveSituacaoService",
cancelar_service = self.dynamic_import.service(
"t_servico_itempedido_cancelar_service",
"TServicoItemPedidoCancelarService",
)
# Instância da classe service
self.save_service = save_service()
self.cancelar_service = cancelar_service()
# Execução do salvamento
return {
"message": "Registro de T_SERVICO_ITEMPEDIDO salvo com sucesso.",
"data": self.save_service.execute(data),
"data": self.cancelar_service.execute(data),
}
# ----------------------------------------------------

View file

@ -7,7 +7,6 @@ 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,
)
@ -111,22 +110,19 @@ async def update(
# Atualiza a situação de um registro de T_SERVICO_ITEMPEDIDO
# ----------------------------------------------------
@router.put(
"/{servico_itempedido_id}/situacao",
"/{servico_itempedido_id}/cancelar",
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",
summary="Cancela um T_SERVICO_ITEMPEDIDO",
response_description="Cancelamento realizado com sucesso",
)
async def save_situacao(
async def cancelar(
servico_itempedido_id: int,
data: TServicoItemPedidoSaveSituacaoSchema,
current_user: dict = Depends(get_current_user),
current_user: dict = Depends(dependency=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)
response = t_servico_itempedido_controller.cancelar(
TServicoItemPedidoIdSchema(servico_itempedido_id=servico_itempedido_id)
)
return response

View file

@ -26,6 +26,15 @@ class TServicoItemPedidoSaveSituacaoRepository(BaseRepository):
"""
try:
# ----------------------------------------------------
# Montagem do SQL dinâmico
# ----------------------------------------------------
sql = """ UPDATE T_SERVICO_ITEMPEDIDO tsip
SET tsip.SITUACAO = :situacao
WHERE
tsip.SERVICO_ITEMPEDIDO_ID = :servico_itempedido_id
RETURNING *"""
# ----------------------------------------------------
# Preenchimento dos parâmetros
# ----------------------------------------------------
@ -33,11 +42,6 @@ class TServicoItemPedidoSaveSituacaoRepository(BaseRepository):
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
# ----------------------------------------------------

View file

@ -94,8 +94,8 @@ class TServicoItemIndexSchema(BaseModel):
# ----------------------------------------------------
# Schema para localizar um registro pelo ID (GET /{id})
# ----------------------------------------------------
class TServicoItemPedidoIdSchema(TServicoItemPedidoSchema):
servico_itempedido_id: Decimal
class TServicoItemPedidoIdSchema(BaseModel):
servico_itempedido_id: Optional[Decimal] = None
class Config:
from_attributes = True

View file

@ -0,0 +1,25 @@
from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_situacao_action import (
TServicoItemPedidoSaveSituacaoAction,
)
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
TServicoItemPedidoSaveSituacaoSchema,
)
class TServicoItemPedidoCancelarService:
"""
Serviço responsável por cancelar um item de pedido de serviço,
alterando sua situação via Action TServicoItemPedidoSaveSituacaoAction.
"""
def execute(self, data: TServicoItemPedidoSaveSituacaoSchema):
# Instancia corretamente a Action (classe)
save_situacao_action = TServicoItemPedidoSaveSituacaoAction()
# Executa o fluxo da action com o schema recebido
return save_situacao_action.execute(
TServicoItemPedidoSaveSituacaoSchema(
servico_itempedido_id=data.servico_itempedido_id, situacao="C"
)
)

View file

@ -29,6 +29,7 @@ set "TS=%date%_%time%"
set "TS=%TS:/=%"
set "TS=%TS::=%"
set "TS=%TS:.=%"
set "TS=%TS:,=%"
set "TS=%TS: =0%"
set "LOG=%ROOT%\cleanup_pycache_%TS%.log"
@ -42,20 +43,20 @@ echo ================================================== >> "%LOG%"
set /a FOUND=0, OK=0, ERR=0
:: ===== Procura e (opcionalmente) remove =====
for /f "delims=" %%D in ('dir /ad /b /s "%ROOT%\__pycache__" 2^>nul') do (
for /d /r "%ROOT%" %%D in (__pycache__) do (
set /a FOUND+=1
if defined DRYRUN (
echo [LISTAR] "%%D"
>>"%LOG%" echo [LISTAR] "%%D"
echo [LISTAR] "%%~fD"
>>"%LOG%" echo [LISTAR] "%%~fD"
) else (
echo [APAGAR] "%%D"
rd /s /q "%%D" 1>nul 2>nul
if exist "%%D" (
echo [APAGAR] "%%~fD"
rd /s /q "%%~fD" 1>nul 2>nul
if exist "%%~fD" (
set /a ERR+=1
>>"%LOG%" echo [FALHA] "%%D"
>>"%LOG%" echo [FALHA] "%%~fD"
) else (
set /a OK+=1
>>"%LOG%" echo [OK] "%%D"
>>"%LOG%" echo [OK] "%%~fD"
)
)
)