[MVPTN-126] feat(Pedido): Cria endpoints e recursos para estornar e ativar um item do pedido
This commit is contained in:
parent
6d8468a4e2
commit
571e59bfb8
5 changed files with 208 additions and 21 deletions
|
|
@ -3,6 +3,7 @@ from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
|||
TServicoItemIndexSchema,
|
||||
TServicoItemPedidoSaveSchema,
|
||||
TServicoItemPedidoSaveSituacaoSchema,
|
||||
TServicoItemPedidoSituacaoSchema,
|
||||
TServicoItemPedidoUpdateSchema,
|
||||
TServicoItemPedidoIdSchema,
|
||||
)
|
||||
|
|
@ -79,7 +80,7 @@ class TServicoItemPedidoController:
|
|||
# ----------------------------------------------------
|
||||
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
||||
# ----------------------------------------------------
|
||||
def cancelar(self, data: TServicoItemPedidoIdSchema):
|
||||
def cancelar(self, data: TServicoItemPedidoSituacaoSchema):
|
||||
|
||||
# Importação da classe desejada
|
||||
cancelar_service = self.dynamic_import.service(
|
||||
|
|
@ -96,6 +97,26 @@ class TServicoItemPedidoController:
|
|||
"data": self.cancelar_service.execute(data),
|
||||
}
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
||||
# ----------------------------------------------------
|
||||
def ativar(self, data: TServicoItemPedidoIdSchema):
|
||||
|
||||
# Importação da classe desejada
|
||||
ativar_service = self.dynamic_import.service(
|
||||
"t_servico_itempedido_ativar_service",
|
||||
"TServicoItemPedidoAtivarService",
|
||||
)
|
||||
|
||||
# Instância da classe service
|
||||
self.ativar_service = ativar_service()
|
||||
|
||||
# Execução do salvamento
|
||||
return {
|
||||
"message": "Registro de T_SERVICO_ITEMPEDIDO ativado com sucesso.",
|
||||
"data": self.ativar_service.execute(data),
|
||||
}
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Atualiza um registro existente de T_SERVICO_ITEMPEDIDO
|
||||
# ----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# Importação de bibliotecas
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from actions.data.dict_to_namespace import dict_to_namespace
|
||||
from actions.jwt.get_current_user import get_current_user
|
||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
||||
TServicoItemPedidoController,
|
||||
|
|
@ -7,6 +8,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,
|
||||
TServicoItemPedidoSituacaoSchema,
|
||||
TServicoItemPedidoUpdateSchema,
|
||||
TServicoItemPedidoIdSchema,
|
||||
)
|
||||
|
|
@ -119,9 +121,43 @@ async def cancelar(
|
|||
servico_itempedido_id: int,
|
||||
current_user: dict = Depends(dependency=get_current_user),
|
||||
):
|
||||
"""
|
||||
Cria um novo registro na tabela T_SERVICO_PEDIDO.
|
||||
"""
|
||||
current_user = dict_to_namespace(current_user)
|
||||
|
||||
response = t_servico_itempedido_controller.cancelar(
|
||||
TServicoItemPedidoIdSchema(servico_itempedido_id=servico_itempedido_id)
|
||||
TServicoItemPedidoSituacaoSchema(
|
||||
servico_itempedido_id=servico_itempedido_id,
|
||||
usuario_id=current_user.data.usuario_id,
|
||||
)
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Atualiza a situação de um registro de T_SERVICO_ITEMPEDIDO
|
||||
# ----------------------------------------------------
|
||||
@router.put(
|
||||
"/{servico_itempedido_id}/ativar",
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary="Ativa um T_SERVICO_ITEMPEDIDO",
|
||||
response_description="Ativação realizado com sucesso",
|
||||
)
|
||||
async def ativar(
|
||||
servico_itempedido_id: int,
|
||||
current_user: dict = Depends(dependency=get_current_user),
|
||||
):
|
||||
"""
|
||||
Cria um novo registro na tabela T_SERVICO_PEDIDO.
|
||||
"""
|
||||
current_user = dict_to_namespace(current_user)
|
||||
|
||||
response = t_servico_itempedido_controller.ativar(
|
||||
TServicoItemPedidoSituacaoSchema(
|
||||
servico_itempedido_id=servico_itempedido_id,
|
||||
usuario_id=current_user.data.usuario_id,
|
||||
)
|
||||
)
|
||||
return response
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,6 @@ from decimal import Decimal
|
|||
from datetime import datetime
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema base - representa a tabela T_SERVICO_ITEMPEDIDO
|
||||
# ----------------------------------------------------
|
||||
class TServicoItemPedidoSchema(BaseModel):
|
||||
servico_itempedido_id: Optional[Decimal] = None
|
||||
servico_pedido_id: Optional[Decimal] = None
|
||||
|
|
@ -81,9 +78,6 @@ class TServicoItemPedidoSchema(BaseModel):
|
|||
from_attributes = True
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para listagem (GET index)
|
||||
# ----------------------------------------------------
|
||||
class TServicoItemIndexSchema(BaseModel):
|
||||
servico_pedido_id: Optional[Decimal] = None
|
||||
|
||||
|
|
@ -91,9 +85,6 @@ class TServicoItemIndexSchema(BaseModel):
|
|||
from_attributes = True
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para localizar um registro pelo ID (GET /{id})
|
||||
# ----------------------------------------------------
|
||||
class TServicoItemPedidoIdSchema(BaseModel):
|
||||
servico_itempedido_id: Optional[Decimal] = None
|
||||
|
||||
|
|
@ -101,10 +92,14 @@ class TServicoItemPedidoIdSchema(BaseModel):
|
|||
from_attributes = True
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para criação (POST)
|
||||
# - normalmente sem o ID (gerado pelo banco)
|
||||
# ----------------------------------------------------
|
||||
class TServicoItemPedidoSituacaoSchema(BaseModel):
|
||||
servico_itempedido_id: Optional[Decimal] = None
|
||||
usuario_id: Optional[Decimal] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema):
|
||||
|
||||
class Config:
|
||||
|
|
@ -120,10 +115,6 @@ class TServicoItemPedidoSaveSituacaoSchema(BaseModel):
|
|||
from_attributes = True
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para atualização (PUT)
|
||||
# - inclui o ID + campos opcionais para alterar
|
||||
# ----------------------------------------------------
|
||||
class TServicoItemPedidoUpdateSchema(TServicoItemPedidoSchema):
|
||||
|
||||
class Config:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSchema
|
||||
from packages.v1.administrativo.schemas.t_servico_tipo_schema import (
|
||||
TServicoTipoIdSchema,
|
||||
)
|
||||
from packages.v1.administrativo.services.t_servico_tipo.go.t_servico_tipo_show_service import (
|
||||
ShowService,
|
||||
)
|
||||
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,
|
||||
TServicoItemPedidoSituacaoSchema,
|
||||
)
|
||||
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
||||
SaveService,
|
||||
)
|
||||
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
||||
TServicoPedidoIdSchema,
|
||||
)
|
||||
from packages.v1.servicos.balcao.services.t_servico_pedido.go.t_servico_pedido_show_service import (
|
||||
TServicoPedidoShowService,
|
||||
)
|
||||
|
||||
|
||||
class TServicoItemPedidoAtivarService:
|
||||
"""
|
||||
Serviço responsável por cancelar um item de pedido de serviço,
|
||||
alterando sua situação via Action TServicoItemPedidoSaveSituacaoAction.
|
||||
"""
|
||||
|
||||
def execute(self, data: TServicoItemPedidoSituacaoSchema):
|
||||
|
||||
# Instancia corretamente a Action (classe)
|
||||
save_situacao_action = TServicoItemPedidoSaveSituacaoAction()
|
||||
|
||||
# Executa o fluxo da action com o schema recebido
|
||||
response = save_situacao_action.execute(
|
||||
TServicoItemPedidoSaveSituacaoSchema(
|
||||
servico_itempedido_id=data.servico_itempedido_id, situacao="F"
|
||||
)
|
||||
)
|
||||
|
||||
pedido_show = TServicoPedidoShowService()
|
||||
|
||||
# Busca o pedido
|
||||
response_pedido_show = pedido_show.execute(
|
||||
TServicoPedidoIdSchema(servico_pedido_id=response.servico_pedido_id)
|
||||
)
|
||||
|
||||
if response:
|
||||
|
||||
# Busca os detalhes do serviço do item
|
||||
t_servico_tipo_show = ShowService()
|
||||
|
||||
response_t_servico_tipo_show = t_servico_tipo_show.execute(
|
||||
TServicoTipoIdSchema(servico_tipo_id=response.servico_tipo_id)
|
||||
)
|
||||
|
||||
# Controle de pedidos
|
||||
c_caixa_item_save_service = SaveService()
|
||||
|
||||
# Salva o serviço no caixa
|
||||
c_caixa_item_save_service.execute(
|
||||
CaixaItemSchema(
|
||||
apresentante=response_pedido_show.apresentante,
|
||||
usuario_servico_id=data.usuario_id,
|
||||
chave_servico=response.servico_pedido_id,
|
||||
descricao=response_t_servico_tipo_show.descricao,
|
||||
situacao=3,
|
||||
tipo_transacao="D",
|
||||
emolumento_item_id=response.emolumento_item_id,
|
||||
emolumento=response.emolumento,
|
||||
taxa_judiciaria=response.taxa_judiciaria,
|
||||
iss=response.valor_iss,
|
||||
fundesp=response.fundesp,
|
||||
valor_servico=1,
|
||||
valor_pago=1,
|
||||
)
|
||||
)
|
||||
|
||||
return response
|
||||
|
|
@ -1,8 +1,25 @@
|
|||
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSchema
|
||||
from packages.v1.administrativo.schemas.t_servico_tipo_schema import (
|
||||
TServicoTipoIdSchema,
|
||||
)
|
||||
from packages.v1.administrativo.services.t_servico_tipo.go.t_servico_tipo_show_service import (
|
||||
ShowService,
|
||||
)
|
||||
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,
|
||||
TServicoItemPedidoSituacaoSchema,
|
||||
)
|
||||
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
||||
SaveService,
|
||||
)
|
||||
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
||||
TServicoPedidoIdSchema,
|
||||
)
|
||||
from packages.v1.servicos.balcao.services.t_servico_pedido.go.t_servico_pedido_show_service import (
|
||||
TServicoPedidoShowService,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -12,14 +29,54 @@ class TServicoItemPedidoCancelarService:
|
|||
alterando sua situação via Action TServicoItemPedidoSaveSituacaoAction.
|
||||
"""
|
||||
|
||||
def execute(self, data: TServicoItemPedidoSaveSituacaoSchema):
|
||||
def execute(self, data: TServicoItemPedidoSituacaoSchema):
|
||||
|
||||
# Instancia corretamente a Action (classe)
|
||||
save_situacao_action = TServicoItemPedidoSaveSituacaoAction()
|
||||
|
||||
# Executa o fluxo da action com o schema recebido
|
||||
return save_situacao_action.execute(
|
||||
response = save_situacao_action.execute(
|
||||
TServicoItemPedidoSaveSituacaoSchema(
|
||||
servico_itempedido_id=data.servico_itempedido_id, situacao="C"
|
||||
)
|
||||
)
|
||||
|
||||
pedido_show = TServicoPedidoShowService()
|
||||
|
||||
# Busca o pedido
|
||||
response_pedido_show = pedido_show.execute(
|
||||
TServicoPedidoIdSchema(servico_pedido_id=response.servico_pedido_id)
|
||||
)
|
||||
|
||||
if response:
|
||||
|
||||
# Busca os detalhes do serviço do item
|
||||
t_servico_tipo_show = ShowService()
|
||||
|
||||
response_t_servico_tipo_show = t_servico_tipo_show.execute(
|
||||
TServicoTipoIdSchema(servico_tipo_id=response.servico_tipo_id)
|
||||
)
|
||||
|
||||
# Controle de pedidos
|
||||
c_caixa_item_save_service = SaveService()
|
||||
|
||||
# Salva o serviço no caixa
|
||||
c_caixa_item_save_service.execute(
|
||||
CaixaItemSchema(
|
||||
apresentante=response_pedido_show.apresentante,
|
||||
usuario_servico_id=data.usuario_id,
|
||||
chave_servico=response.servico_pedido_id,
|
||||
descricao=response_t_servico_tipo_show.descricao,
|
||||
situacao=3,
|
||||
tipo_transacao="D",
|
||||
emolumento_item_id=response.emolumento_item_id,
|
||||
emolumento=response.emolumento,
|
||||
taxa_judiciaria=response.taxa_judiciaria,
|
||||
iss=response.valor_iss,
|
||||
fundesp=response.fundesp,
|
||||
valor_servico=1,
|
||||
valor_pago=1,
|
||||
)
|
||||
)
|
||||
|
||||
return response
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue