summenbildung

This commit is contained in:
Ralph Soika 2024-06-06 22:02:56 +02:00
parent 9a6c7e0741
commit 8285b6ee70
2 changed files with 94 additions and 21 deletions

View file

@ -155,10 +155,16 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
private void insertInvoiceRows(ItemCollection document, String fileName)
throws PluginException, QueryException {
double saldoUSD1 = 0;
double saldoEUR1 = 0;
double saldoUSD2 = 0;
double saldoEUR2 = 0;
// double saldoUSD1 = 0;
// double saldoEUR1 = 0;
// double saldoUSD2 = 0;
// double saldoEUR2 = 0;
Map<String, Double> totalsUeberfaelligEUR = new HashMap<String, Double>();
Map<String, Double> totalsFaelligEUR = new HashMap<String, Double>();
Map<String, Double> totalsUeberfaelligUSD = new HashMap<String, Double>();
Map<String, Double> totalsFaelligUSD = new HashMap<String, Double>();
// double saldoUSD3 = 0;
// double saldoEUR3 = 0;
List<String> spaceNames = new ArrayList<String>();
@ -260,8 +266,19 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
logger.info("...grouping invoices by week...");
// collect all invoices for this space grouped by week....
groupInvoicesByWeek(spaceID, spaceName, weekDataMap);
}
// init totals
for (String name : spaceNames) {
totalsUeberfaelligEUR.put(name, 0.0);
totalsFaelligEUR.put(name, 0.0);
totalsUeberfaelligUSD.put(name, 0.0);
totalsFaelligUSD.put(name, 0.0);
}
}
totalsUeberfaelligEUR.put("TOTAL", 0.0);
totalsFaelligEUR.put("TOTAL", 0.0);
totalsUeberfaelligUSD.put("TOTAL", 0.0);
totalsFaelligUSD.put("TOTAL", 0.0);
/*
* --- Phase 2 -------------------------------------------------------
* Nun bilden wir nochmal 2 weitere Spalten am Ende um eine Summenbildung in
@ -341,6 +358,7 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
column = 1;
double kwTotalEUR = 0;
double kwTotalUSD = 0;
for (String name : spaceNames) {
String key = name + "/" + week;
logger.info("search WeekInvoiceData for " + key);
@ -352,11 +370,23 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
column++;
row.getCell(column).setCellValue(weekData.totalUSD);
if (ueberFaellig) {
saldoEUR1 = InvoiceUtil.round(saldoEUR1 + weekData.totalEUR);
saldoUSD1 = InvoiceUtil.round(saldoUSD1 + weekData.totalUSD);
double eur = totalsUeberfaelligEUR.get(name);
eur = InvoiceUtil.round(eur + weekData.totalEUR);
totalsUeberfaelligEUR.put(name, eur);
double usd = totalsUeberfaelligUSD.get(name);
usd = InvoiceUtil.round(usd + weekData.totalUSD);
totalsUeberfaelligUSD.put(name, usd);
// saldoEUR1 = InvoiceUtil.round(saldoEUR1 + weekData.totalEUR);
// saldoUSD1 = InvoiceUtil.round(saldoUSD1 + weekData.totalUSD);
} else {
saldoEUR2 = InvoiceUtil.round(saldoEUR2 + weekData.totalEUR);
saldoUSD2 = InvoiceUtil.round(saldoUSD2 + weekData.totalUSD);
double eur = totalsFaelligEUR.get(name);
eur = InvoiceUtil.round(eur + weekData.totalEUR);
totalsFaelligEUR.put(name, eur);
double usd = totalsFaelligUSD.get(name);
usd = InvoiceUtil.round(usd + weekData.totalUSD);
totalsFaelligUSD.put(name, usd);
// saldoEUR2 = InvoiceUtil.round(saldoEUR2 + weekData.totalEUR);
// saldoUSD2 = InvoiceUtil.round(saldoUSD2 + weekData.totalUSD);
}
kwTotalEUR = kwTotalEUR + weekData.totalEUR;
kwTotalUSD = kwTotalUSD + weekData.totalUSD;
@ -392,6 +422,23 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
}
// store totals
if (ueberFaellig) {
double eur = totalsUeberfaelligEUR.get("TOTAL");
eur = InvoiceUtil.round(eur + kwTotalEUR);
totalsUeberfaelligEUR.put("TOTAL", eur);
double usd = totalsUeberfaelligUSD.get("TOTAL");
usd = InvoiceUtil.round(usd + kwTotalUSD);
totalsUeberfaelligUSD.put("TOTAL", usd);
} else {
double eur = totalsFaelligEUR.get("TOTAL");
eur = InvoiceUtil.round(eur + kwTotalEUR);
totalsFaelligEUR.put("TOTAL", eur);
double usd = totalsFaelligUSD.get("TOTAL");
usd = InvoiceUtil.round(usd + kwTotalUSD);
totalsFaelligUSD.put("TOTAL", usd);
}
}
// delete reference rows
logger.info("..shift 12 to " + rowPos);
@ -403,19 +450,45 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
* now lets update the totals...
* Überfällig
*/
XSSFCell cTotalEUR1 = getCellByRef(doc, sheet, "TOTALEUR1");
XSSFCell cTotalUSD1 = getCellByRef(doc, sheet, "TOTALUSD1");
cTotalEUR1.setCellValue(saldoEUR1);
cTotalUSD1.setCellValue(saldoUSD1);
XSSFCell cTotalEUR2 = getCellByRef(doc, sheet, "TOTALEUR2");
XSSFCell cTotalUSD2 = getCellByRef(doc, sheet, "TOTALUSD2");
cTotalEUR2.setCellValue(saldoEUR2);
cTotalUSD2.setCellValue(saldoUSD2);
int _rowNo = sortedWeekList.size() + 11;
XSSFRow rowUeberFaellig = sheet.getRow(_rowNo);
XSSFRow rowFaellig = sheet.getRow(_rowNo + 1);
XSSFRow rowTotal = sheet.getRow(_rowNo + 2);
column = 1;
XSSFCell totalCell = null;
for (String name : spaceNames) {
totalCell = rowUeberFaellig.getCell(column);
totalCell.setCellValue(totalsUeberfaelligEUR.get(name));
totalCell = rowFaellig.getCell(column);
totalCell.setCellValue(totalsFaelligEUR.get(name));
totalCell = rowTotal.getCell(column);
totalCell.setCellValue(totalsUeberfaelligEUR.get(name) + totalsFaelligEUR.get(name));
column++;
totalCell = rowUeberFaellig.getCell(column);
totalCell.setCellValue(totalsUeberfaelligUSD.get(name));
totalCell = rowFaellig.getCell(column);
totalCell.setCellValue(totalsFaelligUSD.get(name));
totalCell = rowTotal.getCell(column);
totalCell.setCellValue(totalsUeberfaelligUSD.get(name) + totalsFaelligUSD.get(name));
column++;
}
// totals
totalCell = rowUeberFaellig.getCell(column);
totalCell.setCellValue(totalsUeberfaelligEUR.get("TOTAL"));
totalCell = rowFaellig.getCell(column);
totalCell.setCellValue(totalsFaelligEUR.get("TOTAL"));
totalCell = rowTotal.getCell(column);
totalCell.setCellValue(totalsUeberfaelligEUR.get("TOTAL") + totalsFaelligEUR.get("TOTAL"));
column++;
totalCell = rowUeberFaellig.getCell(column);
totalCell.setCellValue(totalsUeberfaelligUSD.get("TOTAL"));
totalCell = rowFaellig.getCell(column);
totalCell.setCellValue(totalsFaelligUSD.get("TOTAL"));
totalCell = rowTotal.getCell(column);
totalCell.setCellValue(totalsUeberfaelligUSD.get("TOTAL") + totalsFaelligUSD.get("TOTAL"));
XSSFCell cTotalEUR3 = getCellByRef(doc, sheet, "TOTALEUR3");
XSSFCell cTotalUSD3 = getCellByRef(doc, sheet, "TOTALUSD3");
cTotalEUR3.setCellValue(InvoiceUtil.round(saldoEUR1 + saldoEUR2));
cTotalUSD3.setCellValue(InvoiceUtil.round(saldoUSD1 + saldoUSD2));
// delete placeholder row
sheet.shiftRows(_rowNo, _rowNo + 3, -1);
// write back the file
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

Binary file not shown.