From 9ecb75888cab7638c41cb00f1cebd0e4a3902534 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Tue, 22 Nov 2022 15:01:37 +0100 Subject: [PATCH] update --- .../alexanderlogistics/OPListController.java | 48 ++++++++++++++----- .../mahnlauf/MahnlaufExecuteAdapter.java | 20 +++++++- .../forms/alexander/section_opliste.xhtml | 46 ++++++++++++++---- workflow/zahlungseingang-de-1.0.0.bpmn | 2 +- 4 files changed, 92 insertions(+), 24 deletions(-) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java index c55b6f2..6c17903 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java @@ -62,16 +62,22 @@ public class OPListController implements Serializable { protected DocumentService documentService; /** - * Diese Methode liefert die Rechnungen zur gegebenen dbtrNumber. Die Methode - * nutzt einen lokalen cache um die Zugriffe zu beschleunigen. + * Diese Methode wird für Zahlungseingänge und Mahnläufe verwendet. *

- * Befindet sich der Zahlungseingang in Erstellung (Task=1000) werden alle - * offenen Rechnungen geholt. Zusätzlich werden auch alle diese Rechnungen - * vorselektiert (Anforderung von Mary Mwangi). D.h. man muss ggf. Rechnungen - * manuell delselktieren wenn man diese nicht im Mahnlauf haben will. + * Die Metho liefert die Rechnungen zur gegebenen dbtrNumber. Die Methode nutzt + * einen lokalen cache um die Zugriffe zu beschleunigen. *

- * Befindet sich der Zahlungseingang nicht mehr in erstellung werden nur die + * Befindet sich ein Zahlungseingang in Erstellung (Task=1000) werden alle + * offenen Rechnungen geholt. + *

+ * Befindet sich ein Zahlungseingang nicht mehr in erstellung werden nur die * Rechnugnen aus $workitemRef geholt! + *

+ * Bei verwendung im Mahnlauf werden zusätzlich auch alle diese Rechnungen + * vorselektiert (Anforderung von Mary Mwangi). D.h. es werden alle Checkboxen + * in der Maske 'selection_opliste_Mahnluaf' angewählt. D.h auch man muss ggf. + * Rechnungen manuell delselktieren wenn man diese nicht im Mahnlauf haben will. + * * * @param _dbtrNumber * @return @@ -114,16 +120,32 @@ public class OPListController implements Serializable { } catch (QueryException e) { logger.severe("Failed to get op liste:" + e.getMessage()); } - // wir selektieren hier alle fälligen Rechnungen vor, falls der Mahnlauf gerade - // erstellt - // wird. + + // Zahlugnseingang? + if (workflowController.getWorkitem().getModelVersion().startsWith("zahlungseingang")) { + // berechnung des Basisumsatzes bei Fremdwährungen + for (ItemCollection invoice : invoiceList) { + float rate=invoice.getItemValueFloat("invoice.rate"); + float maxSaldo=invoice.getItemValueFloat("invoice.saldo"); + if (rate!=0) { + maxSaldo=maxSaldo/rate; + invoice.setItemValue("invoice.saldo.byrate",maxSaldo); + } + + } + + } + + // Mahnlauf ? if (workflowController.getWorkitem().getModelVersion().startsWith("mahnlauf")) { + // wir selektieren hier alle fälligen Rechnungen vor, falls der Mahnlauf gerade + // erstellt wird. if (workflowController.getWorkitem().getItemValueInteger("$version") == 0 || (workflowController.getWorkitem().getItemValueInteger("$version") == 1 && workflowController.getWorkitem().getItemValueInteger("$lastevent") == 100)) { List intialSelection = new ArrayList(); for (ItemCollection invoice : invoiceList) { - + // ist die Rechnung fällig? if ("workitem".equals(invoice.getType()) && invoice.getTaskID() >= 5100) { intialSelection.add(invoice.getUniqueID()); } @@ -305,9 +327,9 @@ public class OPListController implements Serializable { */ public double calculatePaymentDifference() { double paymentAmount = workflowController.getWorkitem().getItemValueDouble("payment.amount"); - double paymentTotal = workflowController.getWorkitem().getItemValueDouble("payment.total"); + double paymentTotal = workflowController.getWorkitem().getItemValueDouble("payment.total"); // paymentAmount - calculateInvoiceSaldo(); - double result = paymentAmount -paymentTotal; + double result = paymentAmount - paymentTotal; logger.info("...new PaymentDifference=" + result); // rond with 2 digits diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java index c543d12..2483f94 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java @@ -59,10 +59,28 @@ public class MahnlaufExecuteAdapter implements SignalAdapter { throw new PluginException(MahnlaufRefAddAdapter.class.getName(), MahnlaufService.ERROR_WORKFLOW, "Es wurden keine Rechnungen ausgewählt. Der Mahnlauf kann nicht gestartet werden."); } - + // get all Invoices of this Mahnlauf List>> invoiceList = new ArrayList>>(); List refList = mahnLaufWorkitem.getItemValue("$workitemref"); + + // sind die Wärhungen idendtisch (mischmasch geht niht) + String lastCurrency=""; + for (String uniqueId : refList) { + ItemCollection invoice = workflowService.getWorkItem(uniqueId); + String invoiceCurrency=invoice.getItemValueString("invoice.currency"); + if (lastCurrency.isEmpty()) { + lastCurrency=invoiceCurrency; + } else { + if (!lastCurrency.equals(invoiceCurrency)) { + throw new PluginException(MahnlaufRefAddAdapter.class.getName(), MahnlaufService.ERROR_WORKFLOW, + "In einem Mahnlauf können nur Rechnungen mit der selben Währung ausgewählt werden."); + } + } + } + + + double saldo = 0; String currency = ""; for (String uniqueId : refList) { diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_opliste.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_opliste.xhtml index 26cc0ba..5ce7bc2 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_opliste.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_opliste.xhtml @@ -38,9 +38,11 @@ Kurs - Basisumsatz + Basisumsatz - Saldo + Saldo + Saldo in EUR + Zahlbetrag @@ -82,18 +84,32 @@ - + + + + + + - - + + + + + + + + + + - - Summary + + Summary - + '') { + amountValue=saldoMaxByRate; + } else { + amountValue=amountValue; + } $(amountInput).val(amountValue); } } else { diff --git a/workflow/zahlungseingang-de-1.0.0.bpmn b/workflow/zahlungseingang-de-1.0.0.bpmn index bcd1959..b04613c 100644 --- a/workflow/zahlungseingang-de-1.0.0.bpmn +++ b/workflow/zahlungseingang-de-1.0.0.bpmn @@ -395,7 +395,7 @@ result.isValid=true; - +