diff --git a/app.py b/app.py index 54a38f3..703a524 100644 --- a/app.py +++ b/app.py @@ -439,9 +439,30 @@ def nova_cota(): @require_login @require_permission(Permission.VIEW_CELL_REPORTS) def listar_cotas(): - """Lista todas as cotas""" - cotas = db_session.query(CotaMensal).all() - return render_template("listar_cotas.html", cotas=cotas) + """Rota para listar cotas mensais""" + try: + # Buscar cotas com informações do militante + cotas = db_session.query(CotaMensal)\ + .join(Militante)\ + .order_by(CotaMensal.data_vencimento.desc())\ + .all() + + # Calcular status das cotas + hoje = datetime.now().date() + for cota in cotas: + if cota.pago: + cota.status = 'paga' + elif cota.data_vencimento < hoje: + cota.status = 'atrasada' + else: + cota.status = 'pendente' + + return render_template("listar_cotas.html", cotas=cotas) + + except Exception as e: + app.logger.error(f"Erro ao listar cotas: {str(e)}") + flash("Erro ao carregar lista de cotas. Por favor, tente novamente.", "danger") + return redirect(url_for("home")) # Rota para criar um novo pagamento @app.route("/pagamentos/novo", methods=["GET", "POST"]) diff --git a/templates/listar_cotas.html b/templates/listar_cotas.html index feddf64..7918fa0 100644 --- a/templates/listar_cotas.html +++ b/templates/listar_cotas.html @@ -1,31 +1,318 @@ -{% extends 'base.html' %} +{% extends "base.html" %} -{% block title %}Listar Militantes{% endblock %} +{% block title %}Cotas{% endblock %} {% block content %} -

Cotas Mensais

- Adicionar Nova Cota - - - - - - - - - - - - {% for cota in cotas %} - - - - - - - - {% endfor %} - -
IDMilitante IDValor AntigoValor NovoData de Alteração
{{ cota.id }}{{ cota.militante_id }}R$ {{ cota.valor_antigo }}R$ {{ cota.valor_novo }}{{ cota.data_alteracao }}
- Home +
+
+
+

+ Cotas +

+ + Nova Cota + +
+
+
+ +
+
+
+
+
+ + + + +
+
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + + {% for cota in cotas %} + + + + + + + + {% endfor %} + +
Militante Valor Vencimento Status Ações
{{ cota.militante.nome }}R$ {{ "%.2f"|format(cota.valor_novo) }}{{ cota.data_vencimento.strftime('%d/%m/%Y') }} + + {{ cota.status.title() }} + + +
+ + + + +
+
+
+ +
+
+ Mostrando {{ cotas|length }} cotas +
+ +
+
+
+ + + +{% endblock %} + +{% block extra_js %} + +{% endblock %} + +{% block extra_css %} + {% endblock %}