Ajustado abas tela parâmetro
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-08-11 23:02:55 -03:00
parent bc05faafea
commit fb08efed1d
2 changed files with 58 additions and 40 deletions

View File

@@ -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()
# Consulta da tabela selic_mensal
selic_result = await session.execute(
select(SelicMensal).order_by(SelicMensal.ano.desc(), SelicMensal.mes.desc())
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")
)
selic_dados = selic_result.scalars().all()
formulas = [dict(row) for row in result_formula.mappings()]
# Pega última data
ultima_data_selic = "-"
if selic_dados:
ultima = selic_dados[0]
ultima_data_selic = f"{ultima.mes:02d}/{ultima.ano}"
# 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
)
# Campos numéricos da fatura
campos = [
col.name for col in Fatura.__table__.columns
if col.type.__class__.__name__ in ['Integer', 'Float', 'Numeric']
]
# 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()]
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):

View File

@@ -88,6 +88,7 @@
<p style="color:gray;">Nenhuma fórmula cadastrada.</p>
{% endfor %}
</div>
</div>
<!-- ABA SELIC -->
<div id="selic" class="tab-content">
@@ -107,7 +108,7 @@
<table class="selic-table">
<thead><tr><th>Competência</th><th>Fator</th></tr></thead>
<tbody>
{% for item in (selic_dados or selic or []) %}
{% for item in selic_dados %}
<tr>
<td>{{ "%02d"|format(item.mes) }}/{{ item.ano }}</td>
<td>{{ "%.4f"|format(item.percentual) }}</td>
@@ -671,13 +672,11 @@
}
window.addEventListener("DOMContentLoaded", () => {
const abaUrl = new URLSearchParams(window.location.search).get("aba");
if (abaUrl === "selic") {
document.querySelector(".tab.active")?.classList.remove("active");
document.querySelector(".tab-content.active")?.classList.remove("active");
document.querySelector(".tab:nth-child(2)").classList.add("active"); // Ativa o botão da aba
document.getElementById("selic").classList.add("active"); // Ativa o conteúdo da aba
const aba = new URLSearchParams(window.location.search).get("aba");
if (aba === "formulas" || aba === "selic" || aba === "aliquotas") {
switchTab(aba);
} else {
switchTab("formulas"); // padrão
}
});