diff --git a/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_index_action.py b/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_index_action.py new file mode 100644 index 0000000..9157742 --- /dev/null +++ b/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_index_action.py @@ -0,0 +1,44 @@ +from abstracts.action import BaseAction +# O Schema precisa ser adaptado para GEmolumentoItem, talvez recebendo um ID de Emolumento +# ou um ID do próprio Item, dependendo da necessidade de listagem. +# Vamos sugerir um Schema específico para a listagem (Index) que pode receber um Emolumento ID +# para listar todos os seus itens, mantendo o padrão do arquivo original que usava um 'SistemaIdSchema'. +# Para simplificar, vamos assumir um schema de filtro ou um schema base para Index. +# Sugerimos a criação de: +# from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemIndexSchema +# (ou GEmolumentoItemEmolumentoIdSchema se for o padrão da aplicação) +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemEmolumentoIdSchema + +# O repositório IndexRepository deve ser substituído pelo GEmolumentoItemIndexRepository. +from packages.v1.administrativo.repositories.g_emolumento_item.g_emolumento_item_index_repository import IndexRepository + +class IndexAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela G_EMOLUMENTO_ITEM, + utilizando a DDL fornecida. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemEmolumentoIdSchema): + """ + Executa a operação de listagem de G_EMOLUMENTO_ITEM no banco de dados. + + Args: + emolumento_item_schema: Esquema com parâmetros de filtro/listagem + (por exemplo, ID do Emolumento pai, se a listagem for + filtrada por ele, ou parâmetros de paginação). + + Returns: + A lista de todos os registros de G_EMOLUMENTO_ITEM que satisfazem o filtro. + """ + # Instanciamento do repositório + # O nome do repositório foi adaptado com o prefixo 'GEmolumentoItem' + index_repository = IndexRepository() + + # Execução do repositório + # O nome do parâmetro foi adaptado para 'emolumento_item_schema' + response = index_repository.execute(emolumento_item_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_valor_action.py b/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_valor_action.py new file mode 100644 index 0000000..5c426ce --- /dev/null +++ b/packages/v1/administrativo/actions/g_emolumento_item/g_emolumento_item_valor_action.py @@ -0,0 +1,44 @@ +from abstracts.action import BaseAction +# O Schema precisa ser adaptado para GEmolumentoItem, talvez recebendo um ID de Emolumento +# ou um ID do próprio Item, dependendo da necessidade de listagem. +# Vamos sugerir um Schema específico para a listagem (Index) que pode receber um Emolumento ID +# para listar todos os seus itens, mantendo o padrão do arquivo original que usava um 'SistemaIdSchema'. +# Para simplificar, vamos assumir um schema de filtro ou um schema base para Index. +# Sugerimos a criação de: +# from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemIndexSchema +# (ou GEmolumentoItemEmolumentoIdSchema se for o padrão da aplicação) +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemValorSchema + +# O repositório ValorRepository deve ser substituído pelo GEmolumentoItemValorRepository. +from packages.v1.administrativo.repositories.g_emolumento_item.g_emolumento_item_valor_repository import ValorRepository + +class ValorAction(BaseAction): + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de todos os registros na tabela G_EMOLUMENTO_ITEM, + utilizando a DDL fornecida. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemValorSchema): + """ + Executa a operação de listagem de G_EMOLUMENTO_ITEM no banco de dados. + + Args: + emolumento_item_schema: Esquema com parâmetros de filtro/listagem + (por exemplo, ID do Emolumento pai, se a listagem for + filtrada por ele, ou parâmetros de paginação). + + Returns: + A lista de todos os registros de G_EMOLUMENTO_ITEM que satisfazem o filtro. + """ + # Instanciamento do repositório + # O nome do repositório foi adaptado com o prefixo 'GEmolumentoItem' + index_repository = ValorRepository() + + # Execução do repositório + # O nome do parâmetro foi adaptado para 'emolumento_item_schema' + response = index_repository.execute(emolumento_item_schema) + + # Retorno da informação + return response \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/g_emolumento_item_controller.py b/packages/v1/administrativo/controllers/g_emolumento_item_controller.py new file mode 100644 index 0000000..b1bf0c5 --- /dev/null +++ b/packages/v1/administrativo/controllers/g_emolumento_item_controller.py @@ -0,0 +1,53 @@ +from actions.dynamic_import.dynamic_import import DynamicImport +# O Schema precisa ser adaptado para GEmolumentoItem. +# Assumindo o padrão de nomenclatura anterior: +from packages.v1.administrativo.schemas.g_emolumento_item_schema import ( + GEmolumentoItemEmolumentoIdSchema, + GEmolumentoItemValorSchema +) + +class GEmolumentoItemController: + + def __init__(self): + # Action responsável por carregar as services de acordo com o estado + self.dynamic_import = DynamicImport() + + # Define o pacote que deve ser carregado + self.dynamic_import.set_package("administrativo") + + # Define a tabela que o pacote pertence (adaptado para g_emolumento_item) + self.dynamic_import.set_table("g_emolumento_item") + pass + + # Lista todos os registros de item de emolumento por Emolumento ID + def index(self, emolumento_item_schema: GEmolumentoItemEmolumentoIdSchema): + + # Importação da classe desejada (adaptado o nome da service) + indexService = self.dynamic_import.service("g_emolumento_item_index_service", "IndexService") + + # Instância da classe service + self.indexService = indexService() + + # Lista todos os registros de item de emolumento + # O nome do parâmetro foi adaptado para 'emolumento_item_schema' + return { + 'message': 'Registros de item de emolumento localizados com sucesso', + 'data': self.indexService.execute(emolumento_item_schema) + } + + + # Lista todos os registros de item de emolumento por Emolumento ID e faixa de valor + def get_by_valor(self, emolumento_item_schema: GEmolumentoItemValorSchema): + + # Importação da classe desejada (adaptado o nome da service) + valorService = self.dynamic_import.service("g_emolumento_item_get_by_valor_service", "ValorService") + + # Instância da classe service + self.valorService = valorService() + + # Lista todos os registros de item de emolumento + # O nome do parâmetro foi adaptado para 'emolumento_item_schema' + return { + 'message': 'Registros de item de emolumento localizados com sucesso', + 'data': self.valorService.execute(emolumento_item_schema) + } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/g_emolumento_item_endpoint.py b/packages/v1/administrativo/endpoints/g_emolumento_item_endpoint.py new file mode 100644 index 0000000..520ca14 --- /dev/null +++ b/packages/v1/administrativo/endpoints/g_emolumento_item_endpoint.py @@ -0,0 +1,50 @@ +# Importação de bibliotecas +from typing import Optional +from fastapi import APIRouter, Body, Depends, status +from actions.jwt.get_current_user import get_current_user + +# Importações adaptadas para G_EMOLUMENTO_ITEM +from packages.v1.administrativo.controllers.g_emolumento_item_controller import GEmolumentoItemController +from packages.v1.administrativo.schemas.g_emolumento_item_schema import ( + GEmolumentoItemEmolumentoIdSchema, + GEmolumentoItemValorSchema +) + +# Inicializa o roteador para as rotas do item de emolumento +# Poderia ser renomeado para 'router_item' ou similar se houver chance de conflito de namespace +router = APIRouter() + +# Instanciamento do controller desejado +g_emolumento_item_controller = GEmolumentoItemController() + +# Localiza registros de item de emolumento pelo emolumento_id e faixa de valores +@router.get('/faixa/{emolumento_id}/{valor}', + status_code=status.HTTP_200_OK, + summary='Busca registros de item de emolumento em específico, possivelmente filtrando pelo ID do sistema/pai', + response_description='Busca registros de item de emolumento em específico') +async def get_by_valor(emolumento_id : int, valor : float, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos (adaptado para GEmolumentoItem) + emolumento_item_schema = GEmolumentoItemValorSchema(emolumento_id=emolumento_id, valor=valor) + + # Busca os registros de item de emolumento (adaptado para o novo controller) + response = g_emolumento_item_controller.get_by_valor(emolumento_item_schema) + + # Retorna os dados localizados + return response + +# Localiza registros de item de emolumento pelo emolumento_id +@router.get('/{emolumento_id}', + status_code=status.HTTP_200_OK, + summary='Busca registros de item de emolumento em específico, possivelmente filtrando pelo ID do sistema/pai', + response_description='Busca registros de item de emolumento em específico') +async def index(emolumento_id : int, current_user: dict = Depends(get_current_user)): + + # Cria o schema com os dados recebidos (adaptado para GEmolumentoItem) + emolumento_item_schema = GEmolumentoItemEmolumentoIdSchema(emolumento_id=emolumento_id) + + # Busca os registros de item de emolumento (adaptado para o novo controller) + response = g_emolumento_item_controller.index(emolumento_item_schema) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_index_repository.py b/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_index_repository.py new file mode 100644 index 0000000..9de8d73 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_index_repository.py @@ -0,0 +1,68 @@ +from abstracts.repository import BaseRepository +# Adaptação do Schema para GEmolumentoItem. Assumindo o uso de um Schema de ID de Sistema +# ou, mais tipicamente para itens, um Schema de ID do Emolumento pai (EMOLUMENTO_ID). +# Para manter a similaridade do original, vamos usar um 'SistemaIdSchema' adaptado, +# mas o SQL será ajustado para o campo EMOLUMENTO_ID. +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemEmolumentoIdSchema + +class IndexRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela G_EMOLUMENTO_ITEM, possivelmente filtrados por EMOLUMENTO_ID. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemEmolumentoIdSchema): + """ + Executa a consulta SQL para buscar todos os registros de G_EMOLUMENTO_ITEM, + incluindo todos os campos da DDL fornecida. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL com TODOS os campos da DDL fornecida + sql = """ SELECT VALOR_EMOLUMENTO, + EMOLUMENTO_ITEM_ID, + EMOLUMENTO_ID, + VALOR_INICIO, + VALOR_FIM, + VALOR_TAXA_JUDICIARIA, + EMOLUMENTO_PERIODO_ID, + CODIGO, + PAGINA_EXTRA, + VALOR_PAGINA_EXTRA, + VALOR_OUTRA_TAXA1, + CODIGO_SELO, + VALOR_FUNDO_RI, + CODIGO_TABELA, + SELO_GRUPO_ID, + CODIGO_KM, + EMOLUMENTO_ACRESCE, + TAXA_ACRESCE, + FUNCIVIL_ACRESCE, + VALOR_FRACAO, + VALOR_POR_EXCEDENTE_EMOL, + VALOR_POR_EXCEDENTE_TJ, + VALOR_POR_EXCEDENTE_FUNDO, + VALOR_LIMITE_EXCEDENTE_EMOL, + VALOR_LIMITE_EXCEDENTE_TJ, + VALOR_LIMITE_EXCEDENTE_FUNDO, + FUNDO_SELO, + DISTRIBUICAO, + VRCEXT + FROM G_EMOLUMENTO_ITEM + WHERE EMOLUMENTO_ID = :emolumento_id + ORDER BY EMOLUMENTO_ITEM_ID """ + + # Preenchimento de parâmetros. + # Adaptando o nome do parâmetro para refletir a coluna da DDL (EMOLUMENTO_ID). + # Assumimos que o campo 'emolumento_id' do schema está sendo usado para passar este valor. + params = { + "emolumento_id": emolumento_item_schema.emolumento_id + } + + # Execução do sql + response = self.fetch_all(sql, params) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_valor_repository.py b/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_valor_repository.py new file mode 100644 index 0000000..502a2b9 --- /dev/null +++ b/packages/v1/administrativo/repositories/g_emolumento_item/g_emolumento_item_valor_repository.py @@ -0,0 +1,76 @@ +from abstracts.repository import BaseRepository +# Adaptação do Schema para GEmolumentoItem. Assumindo o uso de um Schema de ID de Sistema +# ou, mais tipicamente para itens, um Schema de ID do Emolumento pai (EMOLUMENTO_ID). +# Para manter a similaridade do original, vamos usar um 'SistemaIdSchema' adaptado, +# mas o SQL será ajustado para o campo EMOLUMENTO_ID. +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemValorSchema + +class ValorRepository(BaseRepository): + """ + Repositório para a operação de listagem de todos os registros + na tabela G_EMOLUMENTO_ITEM, possivelmente filtrados por EMOLUMENTO_ID. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemValorSchema): + """ + Executa a consulta SQL para buscar todos os registros de G_EMOLUMENTO_ITEM, + incluindo todos os campos da DDL fornecida. + + Returns: + Uma lista de dicionários contendo os dados dos registros. + """ + # Montagem do SQL com TODOS os campos da DDL fornecida + sql = """ SELECT VALOR_EMOLUMENTO, + EMOLUMENTO_ITEM_ID, + EMOLUMENTO_ID, + VALOR_INICIO, + VALOR_FIM, + VALOR_TAXA_JUDICIARIA, + EMOLUMENTO_PERIODO_ID, + CODIGO, + PAGINA_EXTRA, + VALOR_PAGINA_EXTRA, + VALOR_OUTRA_TAXA1, + CODIGO_SELO, + VALOR_FUNDO_RI, + CODIGO_TABELA, + SELO_GRUPO_ID, + CODIGO_KM, + EMOLUMENTO_ACRESCE, + TAXA_ACRESCE, + FUNCIVIL_ACRESCE, + VALOR_FRACAO, + VALOR_POR_EXCEDENTE_EMOL, + VALOR_POR_EXCEDENTE_TJ, + VALOR_POR_EXCEDENTE_FUNDO, + VALOR_LIMITE_EXCEDENTE_EMOL, + VALOR_LIMITE_EXCEDENTE_TJ, + VALOR_LIMITE_EXCEDENTE_FUNDO, + FUNDO_SELO, + DISTRIBUICAO, + VRCEXT + FROM G_EMOLUMENTO_ITEM + WHERE + EMOLUMENTO_ID = :emolumento_id + AND :valor BETWEEN VALOR_INICIO AND VALOR_FIM + AND EMOLUMENTO_PERIODO_ID = ( + SELECT MAX(EI2.EMOLUMENTO_PERIODO_ID) + FROM G_EMOLUMENTO_ITEM EI2 + WHERE EI2.EMOLUMENTO_ID = :emolumento_id + ) + ORDER BY EMOLUMENTO_ITEM_ID; """ + + # Preenchimento de parâmetros. + # Adaptando o nome do parâmetro para refletir a coluna da DDL (EMOLUMENTO_ID). + # Assumimos que o campo 'emolumento_id' do schema está sendo usado para passar este valor. + params = { + "emolumento_id": emolumento_item_schema.emolumento_id, + "valor": emolumento_item_schema.valor + } + + # Execução do sql + response = self.fetch_all(sql, params) + + # Retorna os dados localizados + return response \ No newline at end of file diff --git a/packages/v1/administrativo/schemas/g_emolumento_item_schema.py b/packages/v1/administrativo/schemas/g_emolumento_item_schema.py new file mode 100644 index 0000000..860bf73 --- /dev/null +++ b/packages/v1/administrativo/schemas/g_emolumento_item_schema.py @@ -0,0 +1,75 @@ +from pydantic import BaseModel, field_validator, model_validator +from fastapi import HTTPException, status +from typing import Optional, ClassVar, Dict +from decimal import Decimal + +# Assumindo que a classe Text está disponível no caminho 'actions.validations.text' +from actions.validations.text import Text + + +# ---------------------------------------------------- +# Schema base para G_EMOLUMENTO_ITEM +# ---------------------------------------------------- +class GEmolumentoItemSchema(BaseModel): + # Colunas NUMERIC(14,3) devem ser mapeadas para Decimal para precisão + valor_emolumento: Optional[Decimal] = None + + # Coluna NUMERIC(10,2) PK + emolumento_item_id: Optional[int] = None + + # Colunas NUMERIC(10,2) FK ou comuns + emolumento_id: Optional[int] = None + emolumento_periodo_id: Optional[int] = None + codigo: Optional[int] = None + pagina_extra: Optional[int] = None + selo_grupo_id: Optional[int] = None + vrc_ext: Optional[int] = None # VRCEXT NUMERIC(10,2) + + # Colunas NUMERIC(14,3) + valor_inicio: Optional[Decimal] = None + valor_fim: Optional[Decimal] = None + valor_taxa_judiciaria: Optional[Decimal] = None + valor_pagina_extra: Optional[Decimal] = None + valor_outra_taxa1: Optional[Decimal] = None + valor_fundo_ri: Optional[Decimal] = None + emolumento_acresce: Optional[Decimal] = None + taxa_acresce: Optional[Decimal] = None + funcivil_acresce: Optional[Decimal] = None + valor_fracao: Optional[Decimal] = None + valor_por_excedente_emol: Optional[Decimal] = None + valor_por_excedente_tj: Optional[Decimal] = None + valor_por_excedente_fundo: Optional[Decimal] = None + valor_limite_excedente_emol: Optional[Decimal] = None + valor_limite_excedente_tj: Optional[Decimal] = None + valor_limite_excedente_fundo: Optional[Decimal] = None + fundo_selo: Optional[Decimal] = None + distribuicao: Optional[Decimal] = None + + # Colunas VARCHAR + codigo_selo: Optional[str] = None # VARCHAR(30) + codigo_tabela: Optional[str] = None # VARCHAR(30) + codigo_km: Optional[str] = None # VARCHAR(30) + + + # Sanitiza campos de texto (apenas os VARCHARs da DDL) + @field_validator( + 'codigo_selo', 'codigo_tabela', 'codigo_km' + ) + def sanitize_fields(cls, v): + if isinstance(v, str) and v: + return Text.sanitize_input(v) + return v + + +# ---------------------------------------------------- +# Schema para localizar um registro pelo emolumento_id (GET) +# ---------------------------------------------------- +class GEmolumentoItemEmolumentoIdSchema(BaseModel): + emolumento_id: int + +# ---------------------------------------------------- +# Schema para localizar um registro pelo emolumento_id e valor (GET) +# ---------------------------------------------------- +class GEmolumentoItemValorSchema(BaseModel): + emolumento_id: int + valor: float \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_get_by_valor_service.py b/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_get_by_valor_service.py new file mode 100644 index 0000000..f830e03 --- /dev/null +++ b/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_get_by_valor_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +# Adaptação do Schema +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemValorSchema +# Importação da Action ajustada para o novo prefixo +from packages.v1.administrativo.actions.g_emolumento_item.g_emolumento_item_valor_action import ValorAction + +# O nome da classe deve ser adaptado com o prefixo 'GEmolumentoItem' para manter o padrão +# de classes da aplicação no Controller, Repository, etc. +class ValorService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela G_EMOLUMENTO_ITEM. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemValorSchema): + """ + Executa a operação de busca de todos os registros de G_EMOLUMENTO_ITEM no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação (com o prefixo adaptado) + valor_action = ValorAction() + + # Executa a busca de todas as ações (adaptando o nome do parâmetro) + data = valor_action.execute(emolumento_item_schema) + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção (adaptando a mensagem) + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de G_EMOLUMENTO_ITEM' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_index_service.py b/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_index_service.py new file mode 100644 index 0000000..2d6d8bb --- /dev/null +++ b/packages/v1/administrativo/services/g_emolumento_item/go/g_emolumento_item_index_service.py @@ -0,0 +1,38 @@ +from fastapi import HTTPException, status +# Adaptação do Schema +from packages.v1.administrativo.schemas.g_emolumento_item_schema import GEmolumentoItemEmolumentoIdSchema +# Importação da Action ajustada para o novo prefixo +from packages.v1.administrativo.actions.g_emolumento_item.g_emolumento_item_index_action import IndexAction + +# O nome da classe deve ser adaptado com o prefixo 'GEmolumentoItem' para manter o padrão +# de classes da aplicação no Controller, Repository, etc. +class IndexService: + """ + Serviço responsável por encapsular a lógica de negócio para a operação + de listagem de registros na tabela G_EMOLUMENTO_ITEM. + """ + + # Mantendo o padrão de nome de método do arquivo original + def execute(self, emolumento_item_schema: GEmolumentoItemEmolumentoIdSchema): + """ + Executa a operação de busca de todos os registros de G_EMOLUMENTO_ITEM no banco de dados. + + Returns: + A lista de registros encontrados. + """ + # Instanciamento da ação (com o prefixo adaptado) + index_action = IndexAction() + + # Executa a busca de todas as ações (adaptando o nome do parâmetro) + data = index_action.execute(emolumento_item_schema) + + # Verifica se foram localizados registros + if not data: + # Retorna uma exceção (adaptando a mensagem) + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail='Não foi possível localizar os registros de G_EMOLUMENTO_ITEM' + ) + + # Retorna as informações localizadas + return data \ No newline at end of file diff --git a/packages/v1/api.py b/packages/v1/api.py index 8a87ef8..bd2a11a 100644 --- a/packages/v1/api.py +++ b/packages/v1/api.py @@ -25,6 +25,7 @@ from packages.v1.administrativo.endpoints import g_marcacao_tipo_endpoint from packages.v1.administrativo.endpoints import t_servico_etiqueta_endpoint from packages.v1.administrativo.endpoints import g_uf_endpoint from packages.v1.administrativo.endpoints import g_emolumento_endpoint +from packages.v1.administrativo.endpoints import g_emolumento_item_endpoint # Cria uma instância do APIRouter que vai agregar todas as rotas da API api_router = APIRouter() @@ -146,4 +147,9 @@ api_router.include_router( # Inclui as rotas de g_emolumento api_router.include_router( g_emolumento_endpoint.router, prefix="/administrativo/g_emolumento", tags=["Emolumentos"] +) + +# Inclui as rotas de g_emolumento_item +api_router.include_router( + g_emolumento_item_endpoint.router, prefix="/administrativo/g_emolumento_item", tags=["Emolumento Item"] ) \ No newline at end of file