Ajustado abas tela parâmetro
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -23,8 +23,11 @@ import pandas as pd
|
||||
from io import BytesIO
|
||||
from sqlalchemy import select
|
||||
from decimal import Decimal
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import text
|
||||
|
||||
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
router = APIRouter()
|
||||
|
||||
# === Schemas ===
|
||||
@@ -53,41 +56,57 @@ class SelicMensalSchema(BaseModel):
|
||||
from_attributes = True
|
||||
|
||||
# === Rotas ===
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
|
||||
@router.get("/parametros")
|
||||
async def parametros_page(request: Request):
|
||||
async with AsyncSessionLocal() as session:
|
||||
# Consulta das fórmulas
|
||||
result = await session.execute(select(ParametrosFormula))
|
||||
parametros = result.scalars().all()
|
||||
async def parametros_page(
|
||||
request: Request,
|
||||
session: AsyncSession = Depends(get_session),
|
||||
):
|
||||
# Fórmulas
|
||||
result_formula = await session.execute(
|
||||
text("SELECT id, nome, formula, ativo FROM faturas.parametros_formula ORDER BY id DESC")
|
||||
)
|
||||
formulas = [dict(row) for row in result_formula.mappings()]
|
||||
|
||||
# Consulta da tabela selic_mensal
|
||||
selic_result = await session.execute(
|
||||
select(SelicMensal).order_by(SelicMensal.ano.desc(), SelicMensal.mes.desc())
|
||||
)
|
||||
selic_dados = selic_result.scalars().all()
|
||||
# SELIC (dados + última competência)
|
||||
result_selic = await session.execute(
|
||||
text("SELECT ano, mes, percentual FROM faturas.selic_mensal ORDER BY ano DESC, mes DESC")
|
||||
)
|
||||
selic_dados = [dict(row) for row in result_selic.mappings()]
|
||||
ultima_data_selic = (
|
||||
f"{selic_dados[0]['mes']:02d}/{selic_dados[0]['ano']}" if selic_dados else None
|
||||
)
|
||||
|
||||
# Pega última data
|
||||
ultima_data_selic = "-"
|
||||
if selic_dados:
|
||||
ultima = selic_dados[0]
|
||||
ultima_data_selic = f"{ultima.mes:02d}/{ultima.ano}"
|
||||
# Alíquotas por UF
|
||||
result_aliquotas = await session.execute(
|
||||
text("""
|
||||
SELECT uf,
|
||||
exercicio,
|
||||
aliq_icms AS aliquota
|
||||
FROM faturas.aliquotas_uf
|
||||
ORDER BY uf ASC, exercicio DESC
|
||||
""")
|
||||
)
|
||||
aliquotas_uf = [dict(row) for row in result_aliquotas.mappings()]
|
||||
|
||||
# Campos numéricos da fatura
|
||||
campos = [
|
||||
col.name for col in Fatura.__table__.columns
|
||||
if col.type.__class__.__name__ in ['Integer', 'Float', 'Numeric']
|
||||
]
|
||||
|
||||
return templates.TemplateResponse("parametros.html", {
|
||||
# Campos disponíveis da tabela Fatura para o editor
|
||||
campos_fatura = [c.name for c in Fatura.__table__.columns]
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"parametros.html",
|
||||
{
|
||||
"request": request,
|
||||
"lista_parametros": parametros,
|
||||
"parametros": {},
|
||||
"campos_fatura": campos,
|
||||
"selic_dados": selic_dados,
|
||||
"ultima_data_selic": ultima_data_selic
|
||||
})
|
||||
"parametros": None, # evita erro no Jinja
|
||||
"formulas": formulas, # <-- usado no template
|
||||
"selic_dados": selic_dados, # <-- usado no template
|
||||
"aliquotas_uf": aliquotas_uf, # se precisar em JS
|
||||
"ultima_data_selic": ultima_data_selic,
|
||||
"data_maxima": None,
|
||||
"campos_fatura": campos_fatura,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
|
||||
@router.post("/parametros/editar/{param_id}")
|
||||
async def editar_parametro(param_id: int, request: Request):
|
||||
|
||||
Reference in New Issue
Block a user