From a6c24056f3476fc768eccc4c62a2e047f047b344 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 15 Nov 2018 20:02:51 +0100
Subject: [PATCH] Fixed #347 - account sum is wrong

---
 .../budgetmaster/services/HelpersService.java          | 10 ++++++++--
 .../budgetmaster/services/TransactionService.java      |  6 ++++++
 src/main/resources/languages/_de.properties            |  1 +
 src/main/resources/languages/_en.properties            |  1 +
 src/main/resources/static/css/dark/style.css           |  4 ++++
 src/main/resources/static/css/style.css                |  4 ++++
 src/main/resources/templates/navbar.ftl                |  1 +
 7 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
index 44543e0d1..f29d2e07e 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
@@ -46,7 +46,7 @@ public class HelpersService
 	private AccountService accountService;
 
 	@Autowired
-	private TransactionRepository transactionRepository;
+	private TransactionService transactionService;
 
 	public String getCurrencyString(int amount)
 	{
@@ -234,9 +234,15 @@ public class HelpersService
 		return sum;
 	}
 
+	public DateTime getCurrentDate()
+	{
+		return DateTime.now();
+	}
+
 	public int getAccountBudget()
 	{
-		List<Transaction> transactions = transactionRepository.findAllByAccount(getCurrentAccount());
+		List<Transaction> transactions = transactionService.getTransactionsForAccountUntilDate(getCurrentAccount(), getCurrentDate());
+
 		int sum = 0;
 		for(Transaction transaction : transactions)
 		{
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
index 2310cf6e8..e87d3bd4d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
@@ -76,6 +76,12 @@ public class TransactionService implements Resetable
 		return transactionRepository.findAllByAccountAndDateBetweenOrderByDateDesc(account, startDate, endDate);
 	}
 
+	public List<Transaction> getTransactionsForAccountUntilDate(Account account, DateTime date)
+	{
+		DateTime startDate = DateTime.now().withYear(1900).withMonthOfYear(1).withDayOfMonth(1);
+		return transactionRepository.findAllByAccountAndDateBetweenOrderByDateDesc(account, startDate, date);
+	}
+
 	private int getRest(Account account, DateTime endDate)
 	{
 		DateTime startDate = DateTime.now().withYear(2000).withMonthOfYear(1).withDayOfMonth(1);
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 7f43763f3..aed78b8f0 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -147,6 +147,7 @@ settings.database.delete.verification=Best
 
 account.new.label.name=Name
 account.default.name=Standardkonto
+account.budget.asof=Stand
 
 transaction.new.label.name=Name
 transaction.new.label.amount=Betrag
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index c70e011ee..10ef3575b 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -148,6 +148,7 @@ settings.database.delete.verification=Verification Code
 
 account.new.label.name=Name
 account.default.name=Default Account
+account.budget.asof=as of
 
 transaction.new.label.name=Name
 transaction.new.label.amount=Amount
diff --git a/src/main/resources/static/css/dark/style.css b/src/main/resources/static/css/dark/style.css
index d49de7484..86c5b9a82 100644
--- a/src/main/resources/static/css/dark/style.css
+++ b/src/main/resources/static/css/dark/style.css
@@ -422,6 +422,10 @@ input[type="radio"]:not(:checked) + label::before, [type="radio"]:not(:checked)
     font-size: 20px !important;
 }
 
+.account-budget-date {
+    font-size: 12px !important;
+}
+
 .account-navbar {
     padding: 5px 32px 12px 32px;
 }
diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css
index 6254789da..b77bf6172 100644
--- a/src/main/resources/static/css/style.css
+++ b/src/main/resources/static/css/style.css
@@ -364,6 +364,10 @@ input[type="radio"]:checked + label::after, [type="radio"].with-gap:checked + la
     font-size: 20px !important;
 }
 
+.account-budget-date {
+    font-size: 12px !important;
+}
+
 .account-navbar {
     padding: 5px 32px 12px 32px;
 }
diff --git a/src/main/resources/templates/navbar.ftl b/src/main/resources/templates/navbar.ftl
index 67e33ec7d..ed5059b75 100644
--- a/src/main/resources/templates/navbar.ftl
+++ b/src/main/resources/templates/navbar.ftl
@@ -63,6 +63,7 @@
     <#else>
         <div class="account-budget ${greenTextColor}">${helpers.getCurrencyString(accountBudget)}</div>
     </#if>
+    <div class="account-budget-date text-color">(${locale.getString("account.budget.asof")}: ${helpers.getDateString(helpers.getCurrentDate())})</div>
 </div>
 </#macro>
 
-- 
GitLab