From ff8cfb44bdc4022aabd2ae887df718d5927a2acb Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Sun, 17 Nov 2024 09:59:00 +0100 Subject: [PATCH] fix - kalender woche --- .../OPListExportAdapterByWeek.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java index a64fbbe..b301299 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java @@ -4,6 +4,9 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.IsoFields; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -553,7 +556,7 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter { /** * Diese Methode gruppiert eine Rechnungsliste nach Kalenderwoche * - * @param spaceID - Space Ref to select a list of invoices assoicated with a + * @param spaceID - Space Ref to select a list of invoices associated with a * space * @param cache - a local cache storing all invoices by week * @@ -562,7 +565,7 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter { private void groupInvoicesByWeek(String spaceID, String spaceName, Map cache, String currency1) { - logger.info("...group invoices for " + spaceName + "/" + spaceID); + logger.info("...group invoices (DEBUG) for " + spaceName + "/" + spaceID); try { List invoices = documentService.find( "$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0, @@ -572,17 +575,17 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter { for (ItemCollection invoice : invoices) { // compute Week Date dueDate = invoice.getItemValueDate("invoice.duedate"); - Calendar calendar = new GregorianCalendar(); - calendar.setTime(dueDate); - int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); - int year = calendar.get(Calendar.YEAR); - String weekCategory = year + "/"; - if (weekNumber < 10) { - weekCategory = weekCategory + "0" + weekNumber; - } else { - weekCategory = weekCategory + weekNumber; + + LocalDate localDate = dueDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + int weekNumber = localDate.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); + int weekBasedYear = localDate.get(IsoFields.WEEK_BASED_YEAR); + String weekCategory = weekBasedYear + "/" + String.format("%02d", weekNumber); + if ("2024/01".equals(weekCategory)) { + logger.warning("--> Invoice found with 2024/01: " + invoice.getUniqueID()); } - // haben wir shon ein listchen? + // haben wir schon ein listchen? String key = spaceName + "/" + weekCategory; logger.fine(" ....building weekInvoiceData object for " + key);