diff --git a/sstreasury/jinja2/sstreasury/budget_print.html b/sstreasury/jinja2/sstreasury/budget_print.html
index 07ea047..02856ac 100644
--- a/sstreasury/jinja2/sstreasury/budget_print.html
+++ b/sstreasury/jinja2/sstreasury/budget_print.html
@@ -113,6 +113,10 @@
{% endif %}
+
+ Total Profit (Loss) |
+ {{ '${:.2f}'.format(revision.get_revenue_total() - revision.get_expense_total()) if revision.get_revenue_total() >= revision.get_expense_total() else '(${:.2f})'.format(revision.get_expense_total() - revision.get_revenue_total()) }} |
+
{% endblock %}
diff --git a/sstreasury/jinja2/sstreasury/budget_view.html b/sstreasury/jinja2/sstreasury/budget_view.html
index d45dbfe..d5a32ba 100644
--- a/sstreasury/jinja2/sstreasury/budget_view.html
+++ b/sstreasury/jinja2/sstreasury/budget_view.html
@@ -149,6 +149,10 @@
{% endif %}
+
+ Total Profit (Loss) |
+ {{ '${:.2f}'.format(revision.get_revenue_total() - revision.get_expense_total()) if revision.get_revenue_total() >= revision.get_expense_total() else '(${:.2f})'.format(revision.get_expense_total() - revision.get_revenue_total()) }} |
+
diff --git a/sstreasury/models.py b/sstreasury/models.py
index 9c6e4db..2fb6292 100644
--- a/sstreasury/models.py
+++ b/sstreasury/models.py
@@ -96,6 +96,22 @@ class BudgetRevision(models.Model):
self.action = BudgetAction.UPDATE_STATE.value
self.save()
+ def get_revenue_total(self):
+ total = Decimal(0)
+ for item in self.revenue:
+ total += Decimal(item['Unit price']) * item['Units']
+ if item['IWT']:
+ total -= (Decimal(item['Unit price']) - (Decimal(item['Unit price']) - Decimal('0.8')) / Decimal('1.019')) * item['Units']
+ return total
+
+ def get_expense_total(self):
+ total = Decimal(0)
+ for item in self.expense:
+ total += Decimal(item['Unit price']) * item['Units']
+ if not self.expense_no_emergency_fund:
+ total *= Decimal('1.05')
+ return total
+
# Access control
def can_view(self, user):