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

#268 - fixed report generation

parent de49a10a
No related branches found
No related tags found
No related merge requests found
Pipeline #441 passed
......@@ -83,9 +83,9 @@ public class ReportController extends BaseController
ReportConfiguration reportConfiguration = new ReportConfigurationBuilder()
.setBudget(budget)
.setCategoryBudgets(new ArrayList<>())
.setReportSettings(reportSettings)
.setReportItems(new ArrayList<>())
.setTransactions(transactions)
.setCategoryBudgets(new ArrayList<>())
.createReportConfiguration();
try
......
......@@ -2,5 +2,5 @@ package de.deadlocker8.budgetmaster.reports;
public enum AmountType
{
INCOME, PAYMENT, BOTH
INCOME, EXPENDITURE, BOTH
}
......@@ -2,21 +2,21 @@ package de.deadlocker8.budgetmaster.reports;
public class Budget
{
private double incomeSum;
private double expenditureSum;
private int incomeSum;
private int expenditureSum;
public Budget(double incomeSum, double expenditureSum)
public Budget(int incomeSum, int expenditureSum)
{
this.incomeSum = incomeSum;
this.expenditureSum = expenditureSum;
}
public double getIncomeSum()
public int getIncomeSum()
{
return incomeSum;
}
public double getExpenditureSum()
public int getExpenditureSum()
{
return expenditureSum;
}
......
......@@ -3,16 +3,16 @@ 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 ReportConfiguration
{
private ArrayList<Transaction> transactions;
private ArrayList<CategoryBudget> categoryBudgets;
private List<Transaction> transactions;
private List<CategoryBudget> categoryBudgets;
private ReportSettings reportSettings;
private Budget budget;
public ReportConfiguration(ArrayList<Transaction> transactions, ArrayList<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget)
public ReportConfiguration(List<Transaction> transactions, List<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget)
{
this.transactions = transactions;
this.categoryBudgets = categoryBudgets;
......@@ -20,12 +20,12 @@ public class ReportConfiguration
this.budget = budget;
}
public ArrayList<Transaction> getTransactions()
public List<Transaction> getTransactions()
{
return transactions;
}
public ArrayList<CategoryBudget> getCategoryBudgets()
public List<CategoryBudget> getCategoryBudgets()
{
return categoryBudgets;
}
......
......@@ -4,21 +4,22 @@ 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 ArrayList<Transaction> transactions;
private ArrayList<CategoryBudget> categoryBudgets;
private List<Transaction> transactions;
private List<CategoryBudget> categoryBudgets;
private ReportSettings reportSettings;
private Budget budget;
public ReportConfigurationBuilder setReportItems(ArrayList<Transaction> transactions)
public ReportConfigurationBuilder setTransactions(List<Transaction> transactions)
{
this.transactions = transactions;
return this;
}
public ReportConfigurationBuilder setCategoryBudgets(ArrayList<CategoryBudget> categoryBudgets)
public ReportConfigurationBuilder setCategoryBudgets(List<CategoryBudget> categoryBudgets)
{
this.categoryBudgets = categoryBudgets;
return this;
......
......@@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
......@@ -67,6 +68,7 @@ public class TransactionService implements Resetable
transactionRest.setName(Localization.getString(Strings.CATEGORY_REST));
transactionRest.setDate(DateTime.now().withYear(year).withMonthOfYear(month).withDayOfMonth(1));
transactionRest.setAmount(getRest(account, startDate));
transactionRest.setTags(new ArrayList<>());
transactions.add(transactionRest);
return transactions;
......
......@@ -45,8 +45,6 @@ public class ReportGeneratorService
{
List<ReportColumn> columns = reportConfiguration.getReportSettings().getColumnsSortedAndFiltered();
int numberOfColumns = columns.size();
int totalIncome = 0;
int totalPayment = 0;
if(numberOfColumns > 0)
{
......@@ -73,30 +71,25 @@ public class ReportGeneratorService
table.addCell(cell);
}
int index = 0;
for(Transaction currentItem : reportConfiguration.getTransactions())
{
if(currentItem.getAmount() > 0)
{
totalIncome += currentItem.getAmount();
if(amountType == AmountType.PAYMENT)
if(amountType.equals(AmountType.INCOME) && currentItem.getAmount() <= 0)
{
continue;
}
}
else
{
totalPayment += currentItem.getAmount();
if(amountType == AmountType.INCOME)
if(amountType.equals(AmountType.EXPENDITURE) && currentItem.getAmount() > 0)
{
continue;
}
}
for(int i = 0; i < columns.size(); i++)
index++;
for(ReportColumn column : columns)
{
ReportColumn column = columns.get(i);
ColumnType columnType = ColumnType.getByName(column.getKey());
PdfPCell cell = new PdfPCell(new Phrase(getProperty(currentItem, columnType, i), font));
PdfPCell cell = new PdfPCell(new Phrase(getProperty(currentItem, columnType, index), font));
cell.setBackgroundColor(getBaseColor(Color.WHITE));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
......@@ -106,20 +99,18 @@ public class ReportGeneratorService
PdfPCell cellTotal;
String total = "";
String totalIncomeString = helpersService.getCurrencyString(reportConfiguration.getBudget().getIncomeSum());
String totalExpenditureString = helpersService.getCurrencyString(reportConfiguration.getBudget().getExpenditureSum());
switch(amountType)
{
case BOTH:
String totalIncomeString = helpersService.getCurrencyString(totalIncome);
String totalPaymentString = helpersService.getCurrencyString(totalPayment);
total = Localization.getString(Strings.REPORT_SUM_TOTAL, totalIncomeString, totalPaymentString);
total = Localization.getString(Strings.REPORT_SUM_TOTAL, totalIncomeString, totalExpenditureString);
break;
case INCOME:
total = Localization.getString(Strings.REPORT_SUM, helpersService.getCurrencyString(totalIncome));
break;
case PAYMENT:
total = Localization.getString(Strings.REPORT_SUM, helpersService.getCurrencyString(totalPayment));
total = Localization.getString(Strings.REPORT_SUM, totalIncomeString);
break;
default:
case EXPENDITURE:
total = Localization.getString(Strings.REPORT_SUM, totalExpenditureString);
break;
}
......@@ -183,7 +174,7 @@ public class ReportGeneratorService
document.add(new Paragraph(Localization.getString(Strings.TITLE_EXPENDITURES), smallHeaderFont));
document.add(Chunk.NEWLINE);
table = generateTable(reportConfiguration,100, AmountType.PAYMENT);
table = generateTable(reportConfiguration,100, AmountType.EXPENDITURE);
if(table != null)
{
document.add(table);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment