diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/reports/ReportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/reports/ReportController.java index 6fa91a5a6800e34808818bac5388b061481e5735..935ac54837736a258ed5adb43e693a804cee4775 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/reports/ReportController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/reports/ReportController.java @@ -98,7 +98,7 @@ public class ReportController extends BaseController } FilterConfiguration filterConfiguration = filterHelpers.getFilterConfiguration(request); - List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(account, reportSettings.getDate().getMonthValue(), reportSettings.getDate().getYear(), settingsService.getSettings().isRestActivated(), filterConfiguration); + List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(account, reportSettings.getDate().getMonthValue(), reportSettings.getDate().getYear(), filterConfiguration); Budget budget = helpers.getBudget(transactions, account); ReportConfiguration reportConfiguration = new ReportConfigurationBuilder() diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 8cb0cac95ec94dd8fc2b5495a935b599e523ffc8..10990e1e50efd1674adab9661b331c9c55c6bc98 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -110,14 +110,23 @@ public class TransactionController extends BaseController private void prepareModelTransactions(FilterConfiguration filterConfiguration, Model model, LocalDate date) { - Account currentAccount = helpers.getCurrentAccount(); - List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(currentAccount, date.getMonthValue(), date.getYear(), settingsService.getSettings().isRestActivated(), filterConfiguration); + final Account currentAccount = helpers.getCurrentAccount(); + final List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(currentAccount, date.getMonthValue(), date.getYear(), filterConfiguration); - model.addAttribute(TransactionModelAttributes.ALL_ENTITIES, transactions); model.addAttribute(TransactionModelAttributes.ACCOUNT, currentAccount); model.addAttribute(TransactionModelAttributes.BUDGET, helpers.getBudget(transactions, currentAccount)); model.addAttribute(TransactionModelAttributes.CURRENT_DATE, date); model.addAttribute(TransactionModelAttributes.FILTER_CONFIGURATION, filterConfiguration); + + if(settingsService.getSettings().isRestActivated()) + { + final Transaction transactionBalanceCurrentMonth = transactionService.getTransactionForBalanceCurrentMonth(currentAccount, date.getMonthValue(), date.getYear()); + transactions.add(0, transactionBalanceCurrentMonth); + final Transaction transactionBalanceLastMonth = transactionService.getTransactionForBalanceLastMonth(currentAccount, date.getMonthValue(), date.getYear()); + transactions.add(transactionBalanceLastMonth); + } + + model.addAttribute(TransactionModelAttributes.ALL_ENTITIES, transactions); } @GetMapping("/{ID}/delete") diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java index 9c23b629a5a6cec715df8fec43a721291d798543..7580ed7746c15f951d2e2e2dc517a9faab80cb80 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java @@ -59,21 +59,6 @@ public class TransactionService implements Resettable return transactionRepository; } - public List<Transaction> getTransactionsForMonthAndYear(Account account, int month, int year, boolean isRestActivated, FilterConfiguration filterConfiguration) - { - List<Transaction> transactions; - if(isRestActivated) - { - transactions = getTransactionsForMonthAndYearWithRest(account, month, year, filterConfiguration); - } - else - { - transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year, filterConfiguration); - } - - return transactions; - } - public Transaction getTransactionForBalanceLastMonth(Account account, int month, int year) { final LocalDate endDateLastMonth = LocalDate.of(year, month, 1).minusMonths(1).with(lastDayOfMonth()); @@ -102,17 +87,7 @@ public class TransactionService implements Resettable return transactionBalanceCurrentMonth; } - private List<Transaction> getTransactionsForMonthAndYearWithRest(Account account, int month, int year, FilterConfiguration filterConfiguration) - { - final List<Transaction> transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year, filterConfiguration); - - transactions.add(getTransactionForBalanceLastMonth(account, month, year)); - transactions.add(0, getTransactionForBalanceCurrentMonth(account, month, year)); - - return transactions; - } - - private List<Transaction> getTransactionsForMonthAndYearWithoutRest(Account account, int month, int year, FilterConfiguration filterConfiguration) + public List<Transaction> getTransactionsForMonthAndYear(Account account, int month, int year, FilterConfiguration filterConfiguration) { final LocalDate startDate = LocalDate.of(year, month, 1); final LocalDate endDate = LocalDate.of(year, month, 1).with(lastDayOfMonth()); diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java index 232bc0be9fdd7824a20eac5fc556e20b305c92e7..5e4443064753678cd7fb4486632877ea61002493 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java @@ -185,7 +185,7 @@ class TransactionServiceDatabaseTest { FilterConfiguration filterConfiguration = new FilterConfiguration(true, true, true, true, true, null, null, ""); - List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, false, filterConfiguration); + List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, filterConfiguration); assertThat(transactions) .hasSize(1) .containsExactly(transactionLastDayOfJune); @@ -202,7 +202,7 @@ class TransactionServiceDatabaseTest FilterConfiguration filterConfiguration = new FilterConfiguration(true, true, true, true, true, null, null, ""); - List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, false, filterConfiguration); + List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, filterConfiguration); assertThat(transactions) .hasSize(1) .containsExactly(transactionLastDayOfJune); @@ -212,28 +212,32 @@ class TransactionServiceDatabaseTest } @Test - void test_getTransactionsForMonthAndYear_includeAccountBalances() + void test_getTransactionForBalanceLastMonth() { - FilterConfiguration filterConfiguration = new FilterConfiguration(true, true, true, true, true, null, null, ""); + final Transaction transaction = transactionService.getTransactionForBalanceLastMonth(accountRepository.findByName("Default Account"), 6, 2021); + + final Transaction expected = new Transaction(); + expected.setName("Last month balance"); + expected.setAmount(998300); + expected.setDate(LocalDate.of(2021, 6, 1)); + expected.setCategory(categoryService.findByType(CategoryType.REST)); + expected.setTags(List.of()); - List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(accountRepository.findByName("Default Account"), 6, 2021, true, filterConfiguration); + assertThat(transaction).isEqualTo(expected); + } - 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()); + @Test + void test_getTransactionForBalanceCurrentMonth() + { + final Transaction transaction = transactionService.getTransactionForBalanceCurrentMonth(accountRepository.findByName("Default Account"), 6, 2021); - 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()); + final Transaction expected = new Transaction(); + expected.setName("Balance at end of month"); + expected.setAmount(998200); + expected.setDate(LocalDate.of(2021, 6, 30)); + expected.setCategory(categoryService.findByType(CategoryType.REST)); + expected.setTags(List.of()); - assertThat(transactions) - .hasSize(3) - .containsExactly(transactionBalanceCurrentMonth, transactionLastDayOfJune, transactionBalanceLastMonth); + assertThat(transaction).isEqualTo(expected); } }