[MVPTN-106] feat(get): Feito o GET da tabela g_emolumento por sistema_id
This commit is contained in:
parent
ebeb5e4827
commit
7d7aaf24b8
8 changed files with 356 additions and 1 deletions
|
|
@ -70,7 +70,7 @@
|
|||
"header": [],
|
||||
"body": {
|
||||
"mode": "raw",
|
||||
"raw": "{\r\n \"login\" : \"Kenio0\",\r\n \"senha_api\": \"123123\"\r\n}",
|
||||
"raw": "{\r\n \"login\" : \"Kenio\",\r\n \"senha_api\": \"123123\"\r\n}",
|
||||
"options": {
|
||||
"raw": {
|
||||
"language": "json"
|
||||
|
|
@ -8501,6 +8501,81 @@
|
|||
},
|
||||
"response": []
|
||||
},
|
||||
{
|
||||
"name": "GET GRUPO",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
"pm.test(\"Status code é 201 ou 200\", function () {\r",
|
||||
" pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r",
|
||||
"});\r",
|
||||
"\r",
|
||||
"pm.test(\"Resposta contém ID ou confirmação\", function () {\r",
|
||||
" const jsonData = pm.response.json();\r",
|
||||
" pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r",
|
||||
"});\r",
|
||||
"\r",
|
||||
"pm.test(\"Mensagem indica sucesso\", function () {\r",
|
||||
" const jsonData = pm.response.json();\r",
|
||||
" pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r",
|
||||
"});\r",
|
||||
""
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"protocolProfileBehavior": {
|
||||
"disableBodyPruning": true
|
||||
},
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "bearer",
|
||||
"bearer": [
|
||||
{
|
||||
"key": "token",
|
||||
"value": "{{BearerToken}}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [],
|
||||
"body": {
|
||||
"mode": "raw",
|
||||
"raw": ""
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{BaseUrlV1}}administrativo/g_marcacao_tipo/grupo?grupo=MODELO_ETIQUETA&sistema_id=2&situacao=A",
|
||||
"host": [
|
||||
"{{BaseUrlV1}}administrativo"
|
||||
],
|
||||
"path": [
|
||||
"g_marcacao_tipo",
|
||||
"grupo"
|
||||
],
|
||||
"query": [
|
||||
{
|
||||
"key": "grupo",
|
||||
"value": "MODELO_ETIQUETA"
|
||||
},
|
||||
{
|
||||
"key": "sistema_id",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"key": "situacao",
|
||||
"value": "A"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"response": []
|
||||
},
|
||||
{
|
||||
"name": "GET ID",
|
||||
"event": [
|
||||
|
|
@ -8741,6 +8816,65 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Emolumentos",
|
||||
"item": [
|
||||
{
|
||||
"name": "GET",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
"pm.test(\"Status code é 201 ou 200\", function () {\r",
|
||||
" pm.expect(pm.response.code).to.be.oneOf([200, 201]);\r",
|
||||
"});\r",
|
||||
"\r",
|
||||
"pm.test(\"Resposta contém ID ou confirmação\", function () {\r",
|
||||
" const jsonData = pm.response.json();\r",
|
||||
" pm.expect(jsonData).to.have.any.keys(\"id\", \"message\", \"status\");\r",
|
||||
"});\r",
|
||||
"\r",
|
||||
"pm.test(\"Mensagem indica sucesso\", function () {\r",
|
||||
" const jsonData = pm.response.json();\r",
|
||||
" pm.expect(jsonData.message || \"\").to.match(/sucesso|criado|registrado/i);\r",
|
||||
"});\r",
|
||||
""
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "bearer",
|
||||
"bearer": [
|
||||
{
|
||||
"key": "token",
|
||||
"value": "{{BearerToken}}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [],
|
||||
"url": {
|
||||
"raw": "{{BaseUrlV1}}administrativo/g_emolumento/1",
|
||||
"host": [
|
||||
"{{BaseUrlV1}}administrativo"
|
||||
],
|
||||
"path": [
|
||||
"g_emolumento",
|
||||
"1"
|
||||
]
|
||||
}
|
||||
},
|
||||
"response": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Andamento Serviço",
|
||||
"item": [
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
from abstracts.action import BaseAction
|
||||
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoSistemaIdSchema
|
||||
|
||||
# O repositório IndexRepository deve ser substituído pelo GEmolumentoIndexRepository.
|
||||
from packages.v1.administrativo.repositories.g_emolumento.g_emolumento_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.
|
||||
"""
|
||||
|
||||
def execute(self, emolumento_schema: GEmolumentoSistemaIdSchema):
|
||||
"""
|
||||
Executa a operação de listagem no banco de dados.
|
||||
|
||||
Returns:
|
||||
A lista de todos os registros.
|
||||
"""
|
||||
# Instanciamento do repositório
|
||||
index_repository = IndexRepository()
|
||||
|
||||
# Execução do repositório
|
||||
response = index_repository.execute(emolumento_schema)
|
||||
|
||||
# Retorno da informação
|
||||
return response
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoSistemaIdSchema
|
||||
|
||||
class GEmolumentoController:
|
||||
|
||||
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
|
||||
self.dynamic_import.set_table("g_emolumento")
|
||||
pass
|
||||
|
||||
# Lista todos os registros de emolumento por sistema
|
||||
def index(self, emolumento_schema: GEmolumentoSistemaIdSchema):
|
||||
|
||||
# Importação da classe desejada
|
||||
indexService = self.dynamic_import.service("g_emolumento_index_service", "IndexService")
|
||||
|
||||
# Instância da classe service
|
||||
self.indexService = indexService()
|
||||
|
||||
# Lista todos os registros de emolumento
|
||||
return {
|
||||
'message': 'Registros de emolumento localizados com sucesso',
|
||||
'data': self.indexService.execute(emolumento_schema)
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# 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
|
||||
from packages.v1.administrativo.controllers.g_emolumento_controller import GEmolumentoController
|
||||
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoSistemaIdSchema
|
||||
|
||||
# Inicializa o roteador para as rotas do emolumento
|
||||
router = APIRouter()
|
||||
|
||||
# Instanciamento do controller desejado
|
||||
g_emolumento_controller = GEmolumentoController()
|
||||
|
||||
# Localiza um registro de emolumento pelo ID
|
||||
@router.get('/{sistema_id}',
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary='Busca um registro de emolumento em específico pelo ID',
|
||||
response_description='Busca um registro de emolumento em específico')
|
||||
async def index(sistema_id : int, current_user: dict = Depends(get_current_user)):
|
||||
|
||||
# Cria o schema com os dados recebidos
|
||||
emolumento_schema = GEmolumentoSistemaIdSchema(sistema_id=sistema_id)
|
||||
|
||||
# Busca um registro de emolumento específico pelo ID
|
||||
response = g_emolumento_controller.index(emolumento_schema)
|
||||
|
||||
# Retorna os dados localizados
|
||||
return response
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
from abstracts.repository import BaseRepository
|
||||
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoSistemaIdSchema
|
||||
|
||||
class IndexRepository(BaseRepository):
|
||||
"""
|
||||
Repositório para a operação de listagem de todos os registros
|
||||
na tabela G_EMOLUMENTO.
|
||||
"""
|
||||
|
||||
def execute(self, emolumento_schema: GEmolumentoSistemaIdSchema):
|
||||
"""
|
||||
Executa a consulta SQL para buscar todos os registros.
|
||||
|
||||
Returns:
|
||||
Uma lista de dicionários contendo os dados dos registros.
|
||||
"""
|
||||
# Montagem do SQL
|
||||
# Tabela ajustada para G_EMOLUMENTO
|
||||
sql = """ SELECT EMOLUMENTO_ID,
|
||||
DESCRICAO,
|
||||
TIPO,
|
||||
SISTEMA_ID,
|
||||
SELO_GRUPO_ID,
|
||||
REG_AVERB,
|
||||
PRE_DEFINIDO,
|
||||
SITUACAO,
|
||||
SITUACAO_RI,
|
||||
COM_REDUCAO,
|
||||
MOTIVO_REDUCAO,
|
||||
VALOR_MAXIMO_CERTIDAO,
|
||||
TIPO_OBJETIVO,
|
||||
MODELO_TAG,
|
||||
CODIGO_NOTA_ID,
|
||||
CONVENIO_CODHAB,
|
||||
ITEM_DF
|
||||
FROM G_EMOLUMENTO
|
||||
WHERE SISTEMA_ID = :sistema_id AND (SITUACAO = 'A' OR SITUACAO IS NULL) ORDER BY DESCRICAO """
|
||||
|
||||
# Preenchimento de parâmetros
|
||||
params = {
|
||||
"sistema_id": emolumento_schema.sistema_id
|
||||
}
|
||||
|
||||
# Execução do sql
|
||||
response = self.fetch_all(sql, params)
|
||||
|
||||
# Retorna os dados localizados
|
||||
return response
|
||||
48
packages/v1/administrativo/schemas/g_emolumento_schema.py
Normal file
48
packages/v1/administrativo/schemas/g_emolumento_schema.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
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
|
||||
# ----------------------------------------------------
|
||||
class GEmolumentoSchema(BaseModel):
|
||||
emolumento_id: Optional[int] = None # NUMERIC(10,2) PK
|
||||
descricao: Optional[str] = None # VARCHAR(260)
|
||||
tipo: Optional[str] = None # VARCHAR(1)
|
||||
sistema_id: Optional[int] = None # NUMERIC(10,2)
|
||||
selo_grupo_id: Optional[int] = None # NUMERIC(10,2)
|
||||
reg_averb: Optional[str] = None # VARCHAR(1)
|
||||
pre_definido: Optional[str] = None # VARCHAR(1)
|
||||
situacao: Optional[str] = None # VARCHAR(1)
|
||||
situacao_ri: Optional[str] = None # VARCHAR(1)
|
||||
com_reducao: Optional[str] = None # VARCHAR(1)
|
||||
motivo_reducao: Optional[str] = None # VARCHAR(120)
|
||||
valor_maximo_certidao: Optional[Decimal] = None # NUMERIC(14,3)
|
||||
tipo_objetivo: Optional[str] = None # VARCHAR(3)
|
||||
modelo_tag: Optional[str] = None # VARCHAR(3)
|
||||
codigo_nota_id: Optional[int] = None # NUMERIC(10,2)
|
||||
convenio_codhab: Optional[str] = None # VARCHAR(1)
|
||||
item_df: Optional[str] = None # VARCHAR(10)
|
||||
|
||||
# Sanitiza campos de texto
|
||||
@field_validator(
|
||||
'descricao', 'tipo', 'reg_averb', 'pre_definido', 'situacao',
|
||||
'situacao_ri', 'com_reducao', 'motivo_reducao', 'tipo_objetivo',
|
||||
'modelo_tag', 'convenio_codhab', 'item_df'
|
||||
)
|
||||
def sanitize_fields(cls, v):
|
||||
if isinstance(v, str) and v:
|
||||
return Text.sanitize_input(v)
|
||||
return v
|
||||
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Schema para localizar um registro pelo ID (GET)
|
||||
# ----------------------------------------------------
|
||||
class GEmolumentoSistemaIdSchema(BaseModel):
|
||||
sistema_id: int
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
from fastapi import HTTPException, status
|
||||
from packages.v1.administrativo.schemas.g_emolumento_schema import GEmolumentoSistemaIdSchema
|
||||
# Importação da Action ajustada para o novo prefixo
|
||||
from packages.v1.administrativo.actions.g_emolumento.g_emolumento_index_action import IndexAction
|
||||
|
||||
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.
|
||||
"""
|
||||
|
||||
def execute(self, emolumento_schema: GEmolumentoSistemaIdSchema):
|
||||
"""
|
||||
Executa a operação de busca de todos os registros no banco de dados.
|
||||
|
||||
Returns:
|
||||
A lista de registros encontrados.
|
||||
"""
|
||||
# Instanciamento da ação
|
||||
index_action = IndexAction()
|
||||
|
||||
# Executa a busca de todas as ações
|
||||
data = index_action.execute(emolumento_schema)
|
||||
|
||||
# Verifica se foram localizados registros
|
||||
if not data:
|
||||
# Retorna uma exceção
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail='Não foi possível localizar os registros de G_EMOLUMENTO'
|
||||
)
|
||||
|
||||
# Retorna as informações localizadas
|
||||
return data
|
||||
|
|
@ -24,6 +24,7 @@ from packages.v1.administrativo.endpoints import t_servico_tipo_endpoint
|
|||
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
|
||||
|
||||
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
|
||||
api_router = APIRouter()
|
||||
|
|
@ -141,3 +142,8 @@ api_router.include_router(
|
|||
api_router.include_router(
|
||||
g_uf_endpoint.router, prefix="/administrativo/g_uf", tags=["Estados"]
|
||||
)
|
||||
|
||||
# Inclui as rotas de g_emolumento
|
||||
api_router.include_router(
|
||||
g_emolumento_endpoint.router, prefix="/administrativo/g_emolumento", tags=["Emolumentos"]
|
||||
)
|
||||
Loading…
Add table
Reference in a new issue