saas_api/packages/v1/administrativo/schemas/g_emolumento_schema.py

48 lines
No EOL
2.1 KiB
Python

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