[MVPTN-34] feat(Calculo): Implementa parcialmente o calculo rapido

This commit is contained in:
Keven Willian Pereira de Souza 2025-10-27 17:41:37 -03:00
parent 50aa6640a8
commit c12e4c6628
7 changed files with 275 additions and 44 deletions

View file

@ -0,0 +1,32 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_calculo_schema import GCalculoRapidoSchema
class GCalculoController:
def __init__(self):
# ----------------------------------------------------
# Inicialização do DynamicImport
# ----------------------------------------------------
self.dynamic_import = DynamicImport()
self.dynamic_import.set_package("administrativo")
self.dynamic_import.set_table("g_calculo")
# ----------------------------------------------------
# Lista todos os registros de G_EMOLUMENTO
# ----------------------------------------------------
def rapido(self, g_calculo_rapido_schema: GCalculoRapidoSchema):
# Importação da classe desejada
rapido_service = self.dynamic_import.service(
"g_calculo_rapido_service", "GCalculoRapidoService"
)
# Instância da classe service
self.rapido_service = rapido_service()
# Execução da listagem
return {
"message": "Registros de G_EMOLUMENTO localizados com sucesso.",
"data": self.rapido_service.execute(g_calculo_rapido_schema),
}

View file

@ -0,0 +1,38 @@
# Importação de bibliotecas
from fastapi import APIRouter, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.g_calculo_controller import (
GCalculoController,
)
from packages.v1.administrativo.schemas.g_calculo_schema import (
GCalculoRapidoSchema,
ResponseGCalculoRapidoSchema,
)
# ----------------------------------------------------
# Inicializa o roteador para as rotas da tabela G_EMOLUMENTO
# ----------------------------------------------------
router = APIRouter()
# Instanciamento do controller
g_calculo_controller = GCalculoController()
# ----------------------------------------------------
# Lista todos os registros de G_EMOLUMENTO
# ----------------------------------------------------
@router.post(
"/rapido",
status_code=status.HTTP_200_OK,
summary="Realiza um cáculo simples dos emolumentos",
response_description="Realiza um cáculo simples dos emolumentos",
)
async def index(
g_calculo_rapido_schema: GCalculoRapidoSchema,
current_user: dict = Depends(get_current_user),
) -> ResponseGCalculoRapidoSchema:
"""
Retorna todos os registros da tabela G_EMOLUMENTO.
"""
response = g_calculo_controller.rapido(g_calculo_rapido_schema)
return response

View file

@ -0,0 +1,26 @@
from pydantic import BaseModel
from typing import Optional
class GCalculoRapidoSchema(BaseModel):
apresentante: Optional[str] = None
observacao: Optional[str] = None
quantidade: Optional[int] = None
emolumento_id: Optional[float] = None
class Config:
from_attributes = True
class ResponseGCalculoRapidoSchema(GCalculoRapidoSchema):
valor_documento: Optional[str] = None
valor_emolumento: Optional[str] = None
valor_taxa_judiciaria: Optional[str] = None
valor_fundos: Optional[str] = None
valor_iss: Optional[str] = None
valor_total: Optional[str] = None
class Config:
from_attributes = True

View file

@ -1,6 +1,7 @@
from pydantic import BaseModel
from typing import Optional
# ----------------------------------------------------
# Schema base - representa a tabela G_EMOLUMENTO
# ----------------------------------------------------

View file

@ -0,0 +1,37 @@
from packages.v1.administrativo.controllers.g_calculo_controller import (
GCalculoRapidoSchema,
)
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoIdSchema
from packages.v1.administrativo.services.g_emolumento.go.g_emolumento_index_service import (
GEmolumentoIndexService,
)
from packages.v1.administrativo.services.g_emolumento.go.g_emolumento_show_service import (
GEmolumentoShowService,
)
class GCalculoRapidoService:
def execute(self, g_calculo_rapido_schema: GCalculoRapidoSchema):
# Instâciamento da classe que busca o emolumento
g_emolumento_show_service = GEmolumentoShowService()
# Busca o emolumento de acordo com o informado
response_g_emolumento_show_service = g_emolumento_show_service.execute(
GEmolumentoIdSchema(emolumento_id=g_calculo_rapido_schema.emolumento_id)
)
# Instânciamento da classe que busca os itens do emolumento
g_emolumento_show_service = GEmolumentoIndexService()
response_g_emolumento_show_service = g_emolumento_show_service.execute(
GEmolumentoItemSchema(
emolumento_id=response_g_emolumento_show_service.emolumento_id
)
)
# ----------------------------------------------------
# Retorno da informação
# ----------------------------------------------------
return response_g_emolumento_show_service

View file

@ -1,5 +1,9 @@
from api.packages.v1.administrativo.actions.g_emolumento.g_emolumento_show_action import GEmolumentoShowAction
from api.packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoIdSchema
from api.packages.v1.administrativo.actions.g_emolumento.g_emolumento_show_action import (
GEmolumentoShowAction,
)
from api.packages.v1.administrativo.schemas.g_emolumento_schema import (
GEmolumentoIdSchema,
)
from fastapi import HTTPException, status
@ -14,7 +18,7 @@ class GEmolumentoShowService:
Executa a operação de busca no banco de dados.
Args:
g_emolumento_id_schema (GEmolumentoIdSchema):
g_emolumento_id_schema (GEmolumentoIdSchema):
O esquema com o ID do registro a ser buscado.
Returns:
@ -36,7 +40,7 @@ class GEmolumentoShowService:
if not data:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Não foi possível localizar o registro de G_EMOLUMENTO."
detail="Não foi possível localizar o registro de G_EMOLUMENTO.",
)
# ----------------------------------------------------

View file

@ -2,7 +2,16 @@
from fastapi import APIRouter
# Importa os módulos de rotas específicos
from api.packages.v1.administrativo.endpoints import g_cartorio_endpoint, g_emolumento_endpoint, g_emolumento_periodo_endpoint, g_gramatica_endpoint, g_natureza_titulo_endpoint, g_selo_grupo_endpoint, t_ato_partetipo_endpoint, t_censec_tiponatureza_endpoint
from api.packages.v1.administrativo.endpoints import (
g_cartorio_endpoint,
g_emolumento_endpoint,
g_emolumento_periodo_endpoint,
g_gramatica_endpoint,
g_natureza_titulo_endpoint,
g_selo_grupo_endpoint,
t_ato_partetipo_endpoint,
t_censec_tiponatureza_endpoint,
)
from packages.v1.administrativo.endpoints import t_censec_tipoato_endpoint
from packages.v1.administrativo.endpoints import t_censec_qualidadeato_endpoint
from packages.v1.administrativo.endpoints import g_tb_txmodelogrupo_endpoint
@ -33,200 +42,284 @@ from packages.v1.administrativo.endpoints import t_imovel_endpoint
from packages.v1.administrativo.endpoints import t_imovel_unidade_endpoint
from packages.v1.administrativo.endpoints import t_pessoa_endpoint
from packages.v1.administrativo.endpoints import t_pessoa_representante_endpoint
from packages.v1.administrativo.endpoints import g_calculo_endpoint
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
api_router = APIRouter()
# Inclui as rotas de c_caixa_item
api_router.include_router(
c_caixa_item_endpoint.router, prefix="/administrativo/c_caixa_item", tags=["Caixa Item"]
c_caixa_item_endpoint.router,
prefix="/administrativo/c_caixa_item",
tags=["Caixa Item"],
)
# Inclui as rotas de g_usuario
api_router.include_router(
g_usuario_endpoint.router, prefix="/administrativo/g_usuario", tags=["Usuário"]
g_usuario_endpoint.router,
prefix="/administrativo/g_usuario",
tags=["Gerenciamento de Usuários"],
)
# Inclui as rotas de c_caixa_servico
api_router.include_router(
c_caixa_servico_endpoint.router, prefix="/administrativo/c_caixa_servico", tags=["Caixa Serviço"]
c_caixa_servico_endpoint.router,
prefix="/administrativo/c_caixa_servico",
tags=["Caixa Serviço"],
)
# Inclui as rotas de t_tb_reconhecimentotipo
api_router.include_router(
t_tb_reconhecimentotipo_endpoint.router, prefix="/administrativo/t_tb_reconhecimentotipo", tags=["Tipos de reconhecimento"]
t_tb_reconhecimentotipo_endpoint.router,
prefix="/administrativo/t_tb_reconhecimentotipo",
tags=["Tipos de reconhecimento"],
)
# Inclui as rotas de t_tb_andamentoservico
api_router.include_router(
t_tb_andamentoservico_endpoint.router, prefix="/administrativo/t_tb_andamentoservico", tags=["Andamentos de serviço"]
t_tb_andamentoservico_endpoint.router,
prefix="/administrativo/t_tb_andamentoservico",
tags=["Andamentos de serviço"],
)
# Inclui as rotas de g_tb_profissao
api_router.include_router(
g_tb_profissao_endpoint.router, prefix="/administrativo/g_tb_profissao", tags=["Profissões"]
g_tb_profissao_endpoint.router,
prefix="/administrativo/g_tb_profissao",
tags=["Profissões"],
)
# Inclui as rotas de g_tb_regimecomunhao
api_router.include_router(
g_tb_regimecomunhao_endpoint.router, prefix="/administrativo/g_tb_regimecomunhao", tags=["Regime de Comunhão"]
g_tb_regimecomunhao_endpoint.router,
prefix="/administrativo/g_tb_regimecomunhao",
tags=["Regime de Comunhão"],
)
# Inclui as rotas de g_tb_txmodelogrupo
api_router.include_router(
g_tb_txmodelogrupo_endpoint.router, prefix="/administrativo/g_tb_txmodelogrupo", tags=["Modelo grupo"]
g_tb_txmodelogrupo_endpoint.router,
prefix="/administrativo/g_tb_txmodelogrupo",
tags=["Modelo grupo"],
)
# Inclui as rotas de g_tb_regimebens
api_router.include_router(
g_tb_regimebens_endpoint.router, prefix="/administrativo/g_tb_regimebens", tags=["Regime de bens"]
g_tb_regimebens_endpoint.router,
prefix="/administrativo/g_tb_regimebens",
tags=["Regime de bens"],
)
# Inclui as rotas de t_censec
api_router.include_router(
t_censec_endpoint.router, prefix="/administrativo/t_censec", tags=["CENSEC"]
t_censec_endpoint.router,
prefix="/administrativo/t_censec",
tags=["Configurações do CENSEC"],
)
# Inclui as rotas de t_censec_naturezalitigio
api_router.include_router(
t_censec_naturezalitigio_endpoint.router, prefix="/administrativo/t_censec_naturezalitigio", tags=["CENSEC - Natureza Litígio"]
t_censec_naturezalitigio_endpoint.router,
prefix="/administrativo/t_censec_naturezalitigio",
tags=["CENSEC - Natureza Litígio"],
)
# Inclui as rotas de t_censec_qualidade
api_router.include_router(
t_censec_qualidade_endpoint.router, prefix="/administrativo/t_censec_qualidade", tags=["CENSEC - Qualidade"]
t_censec_qualidade_endpoint.router,
prefix="/administrativo/t_censec_qualidade",
tags=["CENSEC - Qualidade"],
)
# Inclui as rotas de g_tb_estadocivil
api_router.include_router(
g_tb_estadocivil_endpoint.router, prefix="/administrativo/g_tb_estadocivil", tags=["Estado Civil"]
g_tb_estadocivil_endpoint.router,
prefix="/administrativo/g_tb_estadocivil",
tags=["Estado Civil"],
)
# Inclui as rotas de g_tg_medida_tipob_estadocivil
api_router.include_router(
g_medida_tipo_endpoint.router, prefix="/administrativo/g_medida_tipo", tags=["Tipo de Medidas"]
g_medida_tipo_endpoint.router,
prefix="/administrativo/g_medida_tipo",
tags=["Tipo de Medidas"],
)
# Inclui as rotas de g_tg_medida_tipob_estadocivil
api_router.include_router(
t_minuta_endpoint.router, prefix="/administrativo/t_minuta", tags=["Minutas"]
t_minuta_endpoint.router,
prefix="/administrativo/t_minuta",
tags=["Gerenciamento de Minutas"],
)
# Inclui as rotas de g_tb_documentotipo
api_router.include_router(
g_tb_documentotipo_endpoint.router, prefix="/administrativo/g_tb_documentotipo", tags=["Documento tipo"]
g_tb_documentotipo_endpoint.router,
prefix="/administrativo/g_tb_documentotipo",
tags=["Documento tipo"],
)
# Inclui as rotas de g_natureza
api_router.include_router(
g_natureza_endpoint.router, prefix="/administrativo/g_natureza", tags=["Natureza"]
g_natureza_endpoint.router,
prefix="/administrativo/g_natureza",
tags=["Gerenciamento de Naturezas do Ato"],
)
# Inclui as rotas de t_censec_naturezalitigio
api_router.include_router(
g_tb_bairro_endpoint.router, prefix="/administrativo/g_tb_bairro", tags=["CENSEC - Bairro"]
g_tb_bairro_endpoint.router,
prefix="/administrativo/g_tb_bairro",
tags=["CENSEC - Bairro"],
)
# Inclui as rotas de g_tb_tipologradouro
api_router.include_router(
g_tb_tipologradouro_endpoint.router, prefix="/administrativo/g_tb_tipologradouro", tags=["Tipo logradouro"]
g_tb_tipologradouro_endpoint.router,
prefix="/administrativo/g_tb_tipologradouro",
tags=["Tipo logradouro"],
)
# Inclui as rotas de g_cidade
api_router.include_router(
g_cidade_endpoint.router, prefix="/administrativo/g_cidade", tags=["Cidades"]
g_cidade_endpoint.router,
prefix="/administrativo/g_cidade",
tags=["Gerenciamento de Cidades"],
)
# Inclui as rotas de t_servico_tipo
api_router.include_router(
t_servico_tipo_endpoint.router, prefix="/administrativo/t_servico_tipo", tags=["Serviço tipo"]
t_servico_tipo_endpoint.router,
prefix="/administrativo/t_servico_tipo",
tags=["Serviço tipo"],
)
# Inclui as rotas de g_marcacao_tipo
api_router.include_router(
g_marcacao_tipo_endpoint.router, prefix="/administrativo/g_marcacao_tipo", tags=["Marcação tipo"]
g_marcacao_tipo_endpoint.router,
prefix="/administrativo/g_marcacao_tipo",
tags=["Marcação tipo"],
)
# Inclui as rotas de g_marcacao_tipo
api_router.include_router(
t_servico_etiqueta_endpoint.router, prefix="/administrativo/t_servico_etiqueta", tags=["Serviço etiqueta"]
t_servico_etiqueta_endpoint.router,
prefix="/administrativo/t_servico_etiqueta",
tags=["Serviço etiqueta"],
)
# Inclui as rotas de g_uf
api_router.include_router(
g_uf_endpoint.router, prefix="/administrativo/g_uf", tags=["Estados"]
g_uf_endpoint.router,
prefix="/administrativo/g_uf",
tags=["Gerenciamento de Estados"],
)
# Inclui as rotas de t_imovel
api_router.include_router(
t_imovel_endpoint.router, prefix="/administrativo/t_imovel", tags=["Imóveis"]
t_imovel_endpoint.router,
prefix="/administrativo/t_imovel",
tags=["Gerenciamento de Imóveis"],
)
# Inclui as rotas de t_imovel_unidade
api_router.include_router(
t_imovel_unidade_endpoint.router, prefix="/administrativo/t_imovel_unidade", tags=["Imóveis Unidades"]
t_imovel_unidade_endpoint.router,
prefix="/administrativo/t_imovel_unidade",
tags=["Imóveis Unidades"],
)
# Inclui as rotas de t_pessoa
api_router.include_router(
t_pessoa_endpoint.router, prefix="/administrativo/t_pessoa", tags=["Pessoas Fisicas e Jurídicas"]
t_pessoa_endpoint.router,
prefix="/administrativo/t_pessoa",
tags=["Pessoas Fisicas e Jurídicas"],
)
# Inclui as rotas de t_pessoa_representante
api_router.include_router(
t_pessoa_representante_endpoint.router, prefix="/administrativo/t_pessoa_representante", tags=["Representante de pessoas jurídicas"]
t_pessoa_representante_endpoint.router,
prefix="/administrativo/t_pessoa_representante",
tags=["Representante de pessoas jurídicas"],
)
# Inclui as rotas de t_censec_tipoato
api_router.include_router(
t_censec_tipoato_endpoint.router, prefix="/administrativo/t_censec_tipoato", tags=["CENSEC Tipo atos"]
t_censec_tipoato_endpoint.router,
prefix="/administrativo/t_censec_tipoato",
tags=["CENSEC Tipo atos"],
)
# Inclui as rotas de t_censec_qualidadeato
api_router.include_router(
t_censec_qualidadeato_endpoint.router, prefix="/administrativo/t_censec_qualidadeato", tags=["CENSEC Qualidade Ato"]
t_censec_qualidadeato_endpoint.router,
prefix="/administrativo/t_censec_qualidadeato",
tags=["CENSEC Qualidade Ato"],
)
# Inclui as rotas de t_ato_partetipo
api_router.include_router(
t_ato_partetipo_endpoint.router, prefix="/administrativo/t_ato_partetipo", tags=["Tipo de Parte do Ato"]
t_ato_partetipo_endpoint.router,
prefix="/administrativo/t_ato_partetipo",
tags=["Tipo de Parte do Ato"],
)
# Inclui as rotas de t_censec_tiponatureza
api_router.include_router(
t_censec_tiponatureza_endpoint.router, prefix="/administrativo/t_censec_tiponatureza", tags=["Tipo de Natureza do CENSEC"]
t_censec_tiponatureza_endpoint.router,
prefix="/administrativo/t_censec_tiponatureza",
tags=["Tipo de Natureza do CENSEC"],
)
# Inclui as rotas de g_natureza_titulo
api_router.include_router(
g_natureza_titulo_endpoint.router, prefix="/administrativo/g_natureza_titulo", tags=["Títulos do GNatureza"]
g_natureza_titulo_endpoint.router,
prefix="/administrativo/g_natureza_titulo",
tags=["Títulos do GNatureza"],
)
# Inclui as rotas de g_gramatica
api_router.include_router(
g_gramatica_endpoint.router, prefix="/administrativo/g_gramatica", tags=["Dicionário Gramatical"]
g_gramatica_endpoint.router,
prefix="/administrativo/g_gramatica",
tags=["Dicionário Gramatical"],
)
# Inclui as rotas de g_cartorio
api_router.include_router(
g_cartorio_endpoint.router, prefix="/administrativo/g_cartorio", tags=["Dados do Cartório"]
g_cartorio_endpoint.router,
prefix="/administrativo/g_cartorio",
tags=["Dados do Cartório"],
)
# Inclui as rotas de g_emolumento
api_router.include_router(
g_emolumento_endpoint.router, prefix="/administrativo/g_emolumento", tags=["Emolumentos"]
g_emolumento_endpoint.router,
prefix="/administrativo/g_emolumento",
tags=["Emolumentos"],
)
# Inclui as rotas de g_emolumento periodo
api_router.include_router(
g_emolumento_periodo_endpoint.router, prefix="/administrativo/g_emolumento_periodo", tags=["Periodos de Emolumentos"]
g_emolumento_periodo_endpoint.router,
prefix="/administrativo/g_emolumento_periodo",
tags=["Periodos de Emolumentos"],
)
# Inclui as rotas de g_emolumento periodo
api_router.include_router(
g_selo_grupo_endpoint.router, prefix="/administrativo/g_selo_grupo", tags=["Grupos de Selos"]
)
g_selo_grupo_endpoint.router,
prefix="/administrativo/g_selo_grupo",
tags=["Grupos de Selos"],
)
# Inclui as rotas de g_emolumento periodo
api_router.include_router(
g_calculo_endpoint.router,
prefix="/administrativo/g_calculo",
tags=["Calculo Rápido"],
)