diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java index ff1d0cde93caeabdf703cf1453458c36ec5dff2b..bca8c7b38dd6532c690ba21b17560adced32779d 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java @@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.controller; import com.itextpdf.text.DocumentException; import de.deadlocker8.budgetmaster.entities.Transaction; import de.deadlocker8.budgetmaster.entities.account.Account; +import de.deadlocker8.budgetmaster.entities.account.AccountType; import de.deadlocker8.budgetmaster.entities.report.ReportColumn; import de.deadlocker8.budgetmaster.entities.report.ReportSettings; import de.deadlocker8.budgetmaster.reports.Budget; @@ -66,6 +67,7 @@ public class ReportController extends BaseController public String post(HttpServletResponse response, @ModelAttribute("NewReportSettings") ReportSettings reportSettings) { + //save new report settings reportSettingsService.getRepository().delete(0); for(ReportColumn reportColumn : reportSettings.getColumns()) { @@ -74,10 +76,14 @@ public class ReportController extends BaseController reportSettingsService.getRepository().save(reportSettings); - LOGGER.debug("Exporting month report..."); - - //TODO handle all accounts + //prepare generation Account account = helpers.getCurrentAccount(); + String accountName = account.getName(); + if(account.getType().equals(AccountType.ALL)) + { + accountName = Localization.getString("account.all"); + } + List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(account, reportSettings.getDate().getMonthOfYear(), reportSettings.getDate().getYear(), settingsService.getSettings().isRestActivated()); Budget budget = new Budget(helpers.getIncomeSumForTransactionList(transactions), helpers.getExpenditureSumForTransactionList(transactions)); @@ -85,13 +91,20 @@ public class ReportController extends BaseController .setBudget(budget) .setReportSettings(reportSettings) .setTransactions(transactions) + .setAccountName(accountName) .setCategoryBudgets(new ArrayList<>()) .createReportConfiguration(); + String month = reportSettings.getDate().toString("MM"); + String year = reportSettings.getDate().toString("YYYY"); + + LOGGER.debug("Exporting month report (month: {0}_{1}, account: {2})...", year, month, accountName); + + //generate PDF try { byte[] dataBytes = reportGeneratorService.generate(reportConfiguration); - String fileName = Localization.getString("report.initial.filename", reportSettings.getDate().toString("YYYY"), reportSettings.getDate().toString("MM"), account.getName()); + String fileName = Localization.getString("report.initial.filename", year, month, account.getName()); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); response.setContentType("application/pdf; charset=UTF-8"); diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java index 14656d1f71e5543566a9d660641d21a7b6183b8d..295c578c25cc8fb8b2f366dabb16a0658bf20f3f 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java +++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java @@ -8,13 +8,15 @@ import java.util.List; public class ReportConfiguration { private List<Transaction> transactions; + private String accountName; private List<CategoryBudget> categoryBudgets; private ReportSettings reportSettings; private Budget budget; - public ReportConfiguration(List<Transaction> transactions, List<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget) + public ReportConfiguration(List<Transaction> transactions, String accountName, List<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget) { this.transactions = transactions; + this.accountName = accountName; this.categoryBudgets = categoryBudgets; this.reportSettings = reportSettings; this.budget = budget; @@ -30,6 +32,11 @@ public class ReportConfiguration return categoryBudgets; } + public String getAccountName() + { + return accountName; + } + public ReportSettings getReportSettings() { return reportSettings; @@ -45,6 +52,7 @@ public class ReportConfiguration { return "ReportConfiguration{" + "transactions=" + transactions + + ", accountName='" + accountName + '\'' + ", categoryBudgets=" + categoryBudgets + ", reportSettings=" + reportSettings + ", budget=" + budget + diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java index 793bc9945e0dfa53c341ec196be60ee125821fb8..bf9366ec18bf3bfecd25508bd3ef3572f2dffec6 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java +++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java @@ -3,12 +3,12 @@ package de.deadlocker8.budgetmaster.reports; import de.deadlocker8.budgetmaster.entities.Transaction; import de.deadlocker8.budgetmaster.entities.report.ReportSettings; -import java.util.ArrayList; import java.util.List; public class ReportConfigurationBuilder { private List<Transaction> transactions; + private String accountName; private List<CategoryBudget> categoryBudgets; private ReportSettings reportSettings; private Budget budget; @@ -19,6 +19,12 @@ public class ReportConfigurationBuilder return this; } + public ReportConfigurationBuilder setAccountName(String accountName) + { + this.accountName = accountName; + return this; + } + public ReportConfigurationBuilder setCategoryBudgets(List<CategoryBudget> categoryBudgets) { this.categoryBudgets = categoryBudgets; @@ -39,6 +45,6 @@ public class ReportConfigurationBuilder public ReportConfiguration createReportConfiguration() { - return new ReportConfiguration(transactions, categoryBudgets, reportSettings, budget); + return new ReportConfiguration(transactions, accountName, categoryBudgets, reportSettings, budget); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java index a85f3ec1bcfa036dacd2f7be47cb37a3920826c5..200d9bbfda04fe9d7c098d3f0a939619d3d8c45d 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java @@ -37,6 +37,10 @@ public class ReportGeneratorService Chunk chunk = new Chunk(Localization.getString(Strings.REPORT_HEADLINE, reportConfiguration.getReportSettings().getDate().toString("MMMM yyyy")), font); Chapter chapter = new Chapter(new Paragraph(chunk), 1); chapter.setNumberDepth(0); + + Font fontAccount = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BaseColor.BLACK); + Chunk chunkAccount = new Chunk(Localization.getString(Strings.REPORT_HEADLINE_ACCOUNT, reportConfiguration.getAccountName()), fontAccount); + chapter.add(chunkAccount); chapter.add(Chunk.NEWLINE); return chapter; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java index 0ea9e82c56496b2a33b26275aef3a8830b76a402..f0938bb599f02bc2d95eb064a1f218bd16871acd 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java @@ -62,12 +62,12 @@ public class Strings public static final String REPORT_RATING = "report.rating"; public static final String REPORT_AMOUNT = "report.amount"; public static final String REPORT_HEADLINE = "report.headline"; + public static final String REPORT_HEADLINE_ACCOUNT = "report.headline.account"; public static final String REPORT_HEADLINE_TRANSACTIONS_OVERVIEW = "report.headline.transactions.overview"; public static final String REPORT_SUM_TOTAL = "report.sum.total"; public static final String REPORT_SUM = "report.sum"; public static final String REPORT_REPEATING_YES ="report.repeating.yes"; public static final String REPORT_REPEATING_NO ="report.repeating.no"; - public static final String REPORT_INITIAL_FILENAME ="report.initial.filename"; public static final String REPORT_BUDGET = "report.budget"; public static final String REPORT_INCOMES = "report.incomes"; public static final String REPORT_PAYMENTS = "report.expenditures"; diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 77a79d38afa0061f0582c7f4de5e01124043ca2f..dbcac04ec1560fed5a5e3027300350426999312f 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -222,6 +222,7 @@ report.account=Konto report.rating=+/- report.amount=Betrag report.headline=Monatsbericht - {0} +report.headline.account=Konto: {0} report.headline.transactions.overview=Buchungs�bersicht report.sum.total=Einnahmen: {0} / Ausgaben: {1} report.sum=Summe: {0} diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index c81e09668265fe0c27294efbfd34b4e26f9ffdc9..495a1f7f90b101d22da183749cf0c3021d45bc5b 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -221,6 +221,7 @@ report.account=Account report.rating=+/- report.amount=Amount report.headline=Month Report - {0} +report.headline.account=Account: {0} report.headline.transactions.overview=Transactions Overview report.sum.total=Incomes: {0} / Expenditures: {1} report.sum=Total: {0}