diff --git a/packages/v1/administrativo/controllers/g_calculo_controller.py b/packages/v1/administrativo/controllers/g_calculo_controller.py new file mode 100644 index 0000000..3cac1de --- /dev/null +++ b/packages/v1/administrativo/controllers/g_calculo_controller.py @@ -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), + } diff --git a/packages/v1/administrativo/endpoints/g_calculo_endpoint.py b/packages/v1/administrativo/endpoints/g_calculo_endpoint.py new file mode 100644 index 0000000..4ab8581 --- /dev/null +++ b/packages/v1/administrativo/endpoints/g_calculo_endpoint.py @@ -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 diff --git a/packages/v1/administrativo/schemas/g_calculo_schema.py b/packages/v1/administrativo/schemas/g_calculo_schema.py new file mode 100644 index 0000000..2333754 --- /dev/null +++ b/packages/v1/administrativo/schemas/g_calculo_schema.py @@ -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 diff --git a/packages/v1/administrativo/schemas/g_emolumento_schema.py b/packages/v1/administrativo/schemas/g_emolumento_schema.py index bbf7bc0..7d7b0ff 100644 --- a/packages/v1/administrativo/schemas/g_emolumento_schema.py +++ b/packages/v1/administrativo/schemas/g_emolumento_schema.py @@ -1,6 +1,7 @@ from pydantic import BaseModel from typing import Optional + # ---------------------------------------------------- # Schema base - representa a tabela G_EMOLUMENTO # ---------------------------------------------------- diff --git a/packages/v1/administrativo/services/g_calculo/go/g_calculo_rapido_service.py b/packages/v1/administrativo/services/g_calculo/go/g_calculo_rapido_service.py new file mode 100644 index 0000000..b8ffa89 --- /dev/null +++ b/packages/v1/administrativo/services/g_calculo/go/g_calculo_rapido_service.py @@ -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 diff --git a/packages/v1/administrativo/services/g_emolumento/go/g_emolumento_show_service.py b/packages/v1/administrativo/services/g_emolumento/go/g_emolumento_show_service.py index 6510ee6..a1adaa7 100644 --- a/packages/v1/administrativo/services/g_emolumento/go/g_emolumento_show_service.py +++ b/packages/v1/administrativo/services/g_emolumento/go/g_emolumento_show_service.py @@ -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.", ) # ---------------------------------------------------- diff --git a/packages/v1/api.py b/packages/v1/api.py index 164bbbe..3699220 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -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"] -) \ No newline at end of file + 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"], +)