From faa81ca80397be50971e23a0d47cef88af8d3043 Mon Sep 17 00:00:00 2001 From: Yingtong Li Date: Sun, 30 Apr 2023 21:28:26 +1000 Subject: [PATCH] Display total reimbursement amount per budget --- sstreasury/jinja2/sstreasury/budget_view.html | 5 +++++ sstreasury/views.py | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/sstreasury/jinja2/sstreasury/budget_view.html b/sstreasury/jinja2/sstreasury/budget_view.html index 774abc5..af3ed75 100644 --- a/sstreasury/jinja2/sstreasury/budget_view.html +++ b/sstreasury/jinja2/sstreasury/budget_view.html @@ -252,6 +252,11 @@ {% endfor %} + + Total paid: + {{ '${:.2f}'.format(claims_total_paid) }} + + diff --git a/sstreasury/views.py b/sstreasury/views.py index caf715a..4c857cf 100644 --- a/sstreasury/views.py +++ b/sstreasury/views.py @@ -1,5 +1,6 @@ # Society Self-Service -# Copyright © 2018–2021 Yingtong Li (RunasSudo) +# Copyright © 2018–2023 Yingtong Li (RunasSudo) +# Copyright © 2023 MUMUS Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -258,14 +259,17 @@ def budget_view(request, budget, revision): if revision.state == models.BudgetState.APPROVED.value and 'revision' not in request.GET: claims = models.ReimbursementClaim.objects.filter(Q(budget_id=str(budget.id)) | Q(budget_id__endswith='-{}'.format(budget.id))).all() + claims_total_paid = sum(c.get_total() for c in claims if c.state == models.ClaimState.PAID.value) else: claims = None + claims_total_paid = 0 return render(request, 'sstreasury/budget_view.html', { 'revision': revision, 'history': history, 'is_latest': 'revision' not in request.GET, - 'claims': claims + 'claims': claims, + 'claims_total_paid': claims_total_paid }) @login_required