Skip to content
Snippets Groups Projects
Commit 41e8e1f7 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#725 - show balance of end of current month as first transaction

parent e4fdb6b4
Branches
Tags
No related merge requests found
...@@ -78,16 +78,27 @@ public class TransactionService implements Resettable ...@@ -78,16 +78,27 @@ public class TransactionService implements Resettable
{ {
final List<Transaction> transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year, filterConfiguration); final List<Transaction> transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year, filterConfiguration);
final LocalDate endDate = LocalDate.of(year, month, 1).minusMonths(1).with(lastDayOfMonth()); final LocalDate endDateLastMonth = LocalDate.of(year, month, 1).minusMonths(1).with(lastDayOfMonth());
final Transaction transactionBalanceLastMonth = new Transaction(); final Transaction transactionBalanceLastMonth = new Transaction();
transactionBalanceLastMonth.setCategory(categoryService.findByType(CategoryType.REST)); transactionBalanceLastMonth.setCategory(categoryService.findByType(CategoryType.REST));
transactionBalanceLastMonth.setName(Localization.getString(Strings.TRANSACTION_BALANCE_LAST_MONTH)); transactionBalanceLastMonth.setName(Localization.getString(Strings.TRANSACTION_BALANCE_LAST_MONTH));
transactionBalanceLastMonth.setDate(LocalDate.of(year, month, 1)); transactionBalanceLastMonth.setDate(LocalDate.of(year, month, 1));
transactionBalanceLastMonth.setAmount(getRest(account, endDate)); transactionBalanceLastMonth.setAmount(getRest(account, endDateLastMonth));
transactionBalanceLastMonth.setTags(new ArrayList<>()); transactionBalanceLastMonth.setTags(new ArrayList<>());
transactions.add(transactionBalanceLastMonth); transactions.add(transactionBalanceLastMonth);
final LocalDate endDateCurrentMonth = LocalDate.of(year, month, 1).with(lastDayOfMonth());
final Transaction transactionBalanceCurrentMonth = new Transaction();
transactionBalanceCurrentMonth.setCategory(categoryService.findByType(CategoryType.REST));
transactionBalanceCurrentMonth.setName(Localization.getString(Strings.TRANSACTION_BALANCE_CURRENT_MONTH));
transactionBalanceCurrentMonth.setDate(endDateCurrentMonth);
transactionBalanceCurrentMonth.setAmount(getRest(account, endDateCurrentMonth));
transactionBalanceCurrentMonth.setTags(new ArrayList<>());
// always add as first transaction
transactions.add(0, transactionBalanceCurrentMonth);
return transactions; return transactions;
} }
......
...@@ -14,6 +14,7 @@ public class Strings ...@@ -14,6 +14,7 @@ public class Strings
public static final String TITLE_CATEGORY_BUDGETS = "title.category.budgets"; public static final String TITLE_CATEGORY_BUDGETS = "title.category.budgets";
public static final String TEMPLATE_GROUP_DEFAULT = "template.group.default"; public static final String TEMPLATE_GROUP_DEFAULT = "template.group.default";
public static final String TRANSACTION_BALANCE_LAST_MONTH = "transaction.balance.last.month"; public static final String TRANSACTION_BALANCE_LAST_MONTH = "transaction.balance.last.month";
public static final String TRANSACTION_BALANCE_CURRENT_MONTH = "transaction.balance.current.month";
//ACCOUNT //ACCOUNT
public static final String ACCOUNT_DEFAULT_NAME = "account.default.name"; public static final String ACCOUNT_DEFAULT_NAME = "account.default.name";
......
...@@ -85,6 +85,7 @@ transaction.warning.name.keyword.button.cancel=Abbrechen ...@@ -85,6 +85,7 @@ transaction.warning.name.keyword.button.cancel=Abbrechen
transaction.warning.name.keyword.button.edit=Schlüsselwörter editieren transaction.warning.name.keyword.button.edit=Schlüsselwörter editieren
template.group.default=Ungruppiert template.group.default=Ungruppiert
transaction.balance.last.month=Saldo letzter Monat transaction.balance.last.month=Saldo letzter Monat
transaction.balance.current.month=Saldo Monatsende
# WEEK DAYS # WEEK DAYS
monday=Montag monday=Montag
......
...@@ -86,6 +86,7 @@ transaction.warning.name.keyword.button.cancel=Cancel ...@@ -86,6 +86,7 @@ transaction.warning.name.keyword.button.cancel=Cancel
transaction.warning.name.keyword.button.edit=Edit keywords transaction.warning.name.keyword.button.edit=Edit keywords
template.group.default=Not grouped template.group.default=Not grouped
transaction.balance.last.month=Last month balance transaction.balance.last.month=Last month balance
transaction.balance.current.month=Balance at end of month
# WEEK DAYS # WEEK DAYS
monday=Monday monday=Monday
......
...@@ -210,4 +210,30 @@ class TransactionServiceDatabaseTest ...@@ -210,4 +210,30 @@ class TransactionServiceDatabaseTest
.isEqualTo(LocalDate.of(2021, 6, 30)); .isEqualTo(LocalDate.of(2021, 6, 30));
} }
} }
@Test
void test_getTransactionsForMonthAndYear_includeAccountBalances()
{
FilterConfiguration filterConfiguration = new FilterConfiguration(true, true, true, true, true, null, null, "");
List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, true, filterConfiguration);
Transaction transactionBalanceLastMonth = new Transaction();
transactionBalanceLastMonth.setName("Last month balance");
transactionBalanceLastMonth.setAmount(998300);
transactionBalanceLastMonth.setDate(LocalDate.of(2021, 6, 1));
transactionBalanceLastMonth.setCategory(categoryService.findByType(CategoryType.REST));
transactionBalanceLastMonth.setTags(List.of());
Transaction transactionBalanceCurrentMonth = new Transaction();
transactionBalanceCurrentMonth.setName("Balance at end of month");
transactionBalanceCurrentMonth.setAmount(998200);
transactionBalanceCurrentMonth.setDate(LocalDate.of(2021, 6, 30));
transactionBalanceCurrentMonth.setCategory(categoryService.findByType(CategoryType.REST));
transactionBalanceCurrentMonth.setTags(List.of());
assertThat(transactions)
.hasSize(3)
.containsExactly(transactionBalanceCurrentMonth, transactionLastDayOfJune, transactionBalanceLastMonth);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment