[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,
|
TServicoItemIndexSchema,
|
||||||
TServicoItemPedidoSaveSchema,
|
TServicoItemPedidoSaveSchema,
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
TServicoItemPedidoSaveSituacaoSchema,
|
||||||
|
TServicoItemPedidoSituacaoSchema,
|
||||||
TServicoItemPedidoUpdateSchema,
|
TServicoItemPedidoUpdateSchema,
|
||||||
TServicoItemPedidoIdSchema,
|
TServicoItemPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
|
@ -79,7 +80,7 @@ class TServicoItemPedidoController:
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
def cancelar(self, data: TServicoItemPedidoIdSchema):
|
def cancelar(self, data: TServicoItemPedidoSituacaoSchema):
|
||||||
|
|
||||||
# Importação da classe desejada
|
# Importação da classe desejada
|
||||||
cancelar_service = self.dynamic_import.service(
|
cancelar_service = self.dynamic_import.service(
|
||||||
|
|
@ -96,6 +97,26 @@ class TServicoItemPedidoController:
|
||||||
"data": self.cancelar_service.execute(data),
|
"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
|
# Atualiza um registro existente de T_SERVICO_ITEMPEDIDO
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from fastapi import APIRouter, Depends, status
|
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 actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
||||||
TServicoItemPedidoController,
|
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 (
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
TServicoItemIndexSchema,
|
TServicoItemIndexSchema,
|
||||||
TServicoItemPedidoSaveSchema,
|
TServicoItemPedidoSaveSchema,
|
||||||
|
TServicoItemPedidoSituacaoSchema,
|
||||||
TServicoItemPedidoUpdateSchema,
|
TServicoItemPedidoUpdateSchema,
|
||||||
TServicoItemPedidoIdSchema,
|
TServicoItemPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
|
@ -119,9 +121,43 @@ async def cancelar(
|
||||||
servico_itempedido_id: int,
|
servico_itempedido_id: int,
|
||||||
current_user: dict = Depends(dependency=get_current_user),
|
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(
|
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
|
return response
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,6 @@ from decimal import Decimal
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Schema base - representa a tabela T_SERVICO_ITEMPEDIDO
|
|
||||||
# ----------------------------------------------------
|
|
||||||
class TServicoItemPedidoSchema(BaseModel):
|
class TServicoItemPedidoSchema(BaseModel):
|
||||||
servico_itempedido_id: Optional[Decimal] = None
|
servico_itempedido_id: Optional[Decimal] = None
|
||||||
servico_pedido_id: Optional[Decimal] = None
|
servico_pedido_id: Optional[Decimal] = None
|
||||||
|
|
@ -81,9 +78,6 @@ class TServicoItemPedidoSchema(BaseModel):
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Schema para listagem (GET index)
|
|
||||||
# ----------------------------------------------------
|
|
||||||
class TServicoItemIndexSchema(BaseModel):
|
class TServicoItemIndexSchema(BaseModel):
|
||||||
servico_pedido_id: Optional[Decimal] = None
|
servico_pedido_id: Optional[Decimal] = None
|
||||||
|
|
||||||
|
|
@ -91,9 +85,6 @@ class TServicoItemIndexSchema(BaseModel):
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Schema para localizar um registro pelo ID (GET /{id})
|
|
||||||
# ----------------------------------------------------
|
|
||||||
class TServicoItemPedidoIdSchema(BaseModel):
|
class TServicoItemPedidoIdSchema(BaseModel):
|
||||||
servico_itempedido_id: Optional[Decimal] = None
|
servico_itempedido_id: Optional[Decimal] = None
|
||||||
|
|
||||||
|
|
@ -101,10 +92,14 @@ class TServicoItemPedidoIdSchema(BaseModel):
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
class TServicoItemPedidoSituacaoSchema(BaseModel):
|
||||||
# Schema para criação (POST)
|
servico_itempedido_id: Optional[Decimal] = None
|
||||||
# - normalmente sem o ID (gerado pelo banco)
|
usuario_id: Optional[Decimal] = None
|
||||||
# ----------------------------------------------------
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema):
|
class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema):
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
|
@ -120,10 +115,6 @@ class TServicoItemPedidoSaveSituacaoSchema(BaseModel):
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Schema para atualização (PUT)
|
|
||||||
# - inclui o ID + campos opcionais para alterar
|
|
||||||
# ----------------------------------------------------
|
|
||||||
class TServicoItemPedidoUpdateSchema(TServicoItemPedidoSchema):
|
class TServicoItemPedidoUpdateSchema(TServicoItemPedidoSchema):
|
||||||
|
|
||||||
class Config:
|
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 (
|
from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_situacao_action import (
|
||||||
TServicoItemPedidoSaveSituacaoAction,
|
TServicoItemPedidoSaveSituacaoAction,
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
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.
|
alterando sua situação via Action TServicoItemPedidoSaveSituacaoAction.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def execute(self, data: TServicoItemPedidoSaveSituacaoSchema):
|
def execute(self, data: TServicoItemPedidoSituacaoSchema):
|
||||||
|
|
||||||
# Instancia corretamente a Action (classe)
|
# Instancia corretamente a Action (classe)
|
||||||
save_situacao_action = TServicoItemPedidoSaveSituacaoAction()
|
save_situacao_action = TServicoItemPedidoSaveSituacaoAction()
|
||||||
|
|
||||||
# Executa o fluxo da action com o schema recebido
|
# Executa o fluxo da action com o schema recebido
|
||||||
return save_situacao_action.execute(
|
response = save_situacao_action.execute(
|
||||||
TServicoItemPedidoSaveSituacaoSchema(
|
TServicoItemPedidoSaveSituacaoSchema(
|
||||||
servico_itempedido_id=data.servico_itempedido_id, situacao="C"
|
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