diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java index 4c65db6..83dbae0 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java @@ -78,6 +78,9 @@ public class AGLAnalyticControllerDebitor implements Serializable { double totalDunningCurrency1 = 0; double totalDunningCurrency2 = 0; + double averagePaymentDue = 0; + double averagePaymentDays = 0; + String chartData = ""; public void onEvent(@Observes AnalyticEvent event) { @@ -100,7 +103,7 @@ public class AGLAnalyticControllerDebitor implements Serializable { } String link = "/pages/workitems/worklist.xhtml" + "?phrase=" + getDbtNr(); - logger.info("process ref=" + workflowController.getWorkitem().getItemValueString("process.ref")); + logger.fine("process ref=" + workflowController.getWorkitem().getItemValueString("process.ref")); ItemCollection process = documentService .load(workflowController.getWorkitem().getItemValueString("process.ref")); if (process != null) { @@ -138,10 +141,25 @@ public class AGLAnalyticControllerDebitor implements Serializable { event.setLink(link); } + if ("analytic.payment.avg.due".equals(event.getKey())) { + event.setValue("" + averagePaymentDue); + event.setLabel("days"); + event.setDescription("Average terms of credit in the last 12 months."); + event.getWorkitem().setItemValue("payment.avg.due", event.getValue()); + event.setLink(link); + } + if ("analytic.payment.avg.days".equals(event.getKey())) { + event.setValue("" + averagePaymentDays); + event.setLabel("days"); + event.setDescription("Average duration for payment during the last 12 months."); + event.getWorkitem().setItemValue("payment.avg.days", event.getValue()); + event.setLink(link); + } + if ("analytic.invoices.trend".equals(event.getKey())) { event.setValue(chartData); - event.setLabel("Zahlung Tage"); - event.setDescription("Zahlungsmoral nach KW"); + event.setLabel("Payment duration in days"); + event.setDescription("Payment practice by week"); } } @@ -247,24 +265,56 @@ public class AGLAnalyticControllerDebitor implements Serializable { totalDunningCurrency2 = InvoiceUtil.round(totalDunningCurrency2); chartData = buildChartData(); - System.out.println(chartData); + // System.out.println(chartData); + + getDurchschnittZahlungsziel(); + getDurchschnittZahlungsdauer(); } } + private void getDurchschnittZahlungsziel() { + if (stats == null) { + averagePaymentDue = 0; + return; + } + int count = 0; + long gesamt = 0; + for (Map.Entry entry : stats.entrySet()) { + DebitorStatistikData statData = entry.getValue(); + if (statData.count > 0) { + gesamt = gesamt + statData.getAverageDueDays(); + count++; + } + } + averagePaymentDue = Math.round((double) gesamt / count); + } + + private void getDurchschnittZahlungsdauer() { + if (stats == null) { + averagePaymentDays = 0; + return; + } + int count = 0; + long gesamt = 0; + for (Map.Entry entry : stats.entrySet()) { + DebitorStatistikData statData = entry.getValue(); + if (statData.count > 0) { + gesamt = gesamt + statData.getAveragePaymentDays(); + count++; + } + } + averagePaymentDays = Math.round((double) gesamt / count); + } + private String formatCurrency(Double value) { DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.getDefault()); symbols.setGroupingSeparator('.'); symbols.setDecimalSeparator(','); - DecimalFormat formatter = new DecimalFormat("#,##0.00", symbols); return formatter.format(value); - - // %, => local-specific thousands separator - // .2f => positions after decimal point - // return String.format("%,.2f", value); } /** diff --git a/workflow/analyse-debitor-de-1.0.0.bpmn b/workflow/analyse-debitor-de-1.0.0.bpmn index 8fbca2b..3cf8659 100644 --- a/workflow/analyse-debitor-de-1.0.0.bpmn +++ b/workflow/analyse-debitor-de-1.0.0.bpmn @@ -99,7 +99,7 @@ th { font-weight: bold;} - $lasteventdate]]> + dbtr.name - $lasteventdate]]> true @@ -179,6 +179,10 @@ th { font-weight: bold;} + + + + @@ -368,6 +372,8 @@ th { font-weight: bold;} + + diff --git a/workflow/dwc/analyse-debitor-en-1.0.0.bpmn b/workflow/dwc/analyse-debitor-en-1.0.0.bpmn index 075999d..4d5186e 100644 --- a/workflow/dwc/analyse-debitor-en-1.0.0.bpmn +++ b/workflow/dwc/analyse-debitor-en-1.0.0.bpmn @@ -99,7 +99,7 @@ th { font-weight: bold;} - $lasteventdate]]> + $workflowgroup - $lasteventdate]]> true @@ -179,6 +179,8 @@ th { font-weight: bold;} + + @@ -368,6 +370,8 @@ th { font-weight: bold;} + +