From 67fe602844dbcfe6873f059eb8d3337d5f1284a0 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Tue, 31 Oct 2023 10:07:06 +0100 Subject: [PATCH] =?UTF-8?q?neue=20Version=201.2.14=20-=20neues=20invoicePl?= =?UTF-8?q?ugin=20f=C3=BCr=20AGL=20PL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- office-alexander-logistics-app/pom.xml | 4 +-- .../CargosoftExportAdapter.java | 3 +- .../CargosoftSplitAdapter.java | 4 +-- .../com/alexanderlogistics/InvoicePlugin.java | 29 ++++++++++++++--- .../resources/bundle/custom_en.properties | 2 +- .../alexanderlogistics/TestModelMatcher.java | 32 +++++++++++++++++++ pom.xml | 2 +- 7 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestModelMatcher.java diff --git a/office-alexander-logistics-app/pom.xml b/office-alexander-logistics-app/pom.xml index e2cc210..621cec0 100644 --- a/office-alexander-logistics-app/pom.xml +++ b/office-alexander-logistics-app/pom.xml @@ -4,7 +4,7 @@ office-alexander-logistics com.alexander-logistics - 1.2.13 + 1.2.14 office-alexander-logistics-app war @@ -123,7 +123,7 @@ maven-war-plugin - 2.6 + 3.3.2 false diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java index 645ded0..35439da 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java @@ -145,7 +145,8 @@ public class CargosoftExportAdapter implements SignalAdapter { List refs = document.getItemValue(WorkflowService.UNIQUEIDREF); for (String ref : refs) { origin = workflowService.getWorkItem(ref); - if ("Rechnungseingang".equals(origin.getWorkflowGroup())) { + // "Rechnungseingang".equals(origin.getWorkflowGroup()) + if (InvoicePlugin.isCargoRechnung(origin)) { break; } origin = null; diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java index 66b3622..e5b40c8 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java @@ -155,9 +155,9 @@ public class CargosoftSplitAdapter implements SignalAdapter { // ab dem zweiten durchlauf benötigen wir immer eine neue sequencenumer if (nextSequencenumber) { workitemSubProcess.removeItem("numsequencenumber"); - // wegen numernkreis bildung muss hier die WrokflowGroup kurzfirstig auf + // wegen numernkreis bildung muss hier die WorkflowGroup kurzfristig auf // 'Rechnungseingang' gesetzt werden! - workitemSubProcess.setItemValue(WorkflowKernel.WORKFLOWGROUP, "Rechnungseingang"); + workitemSubProcess.setItemValue(WorkflowKernel.WORKFLOWGROUP, workitem.getWorkflowGroup()); sequenceService.computeSequenceNumber(workitemSubProcess); logger.info(".......compute new sequence number: " + workitemSubProcess.getItemValueLong("numsequencenumber")); diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java index 6394b0a..8138997 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.inject.Inject; @@ -77,7 +79,6 @@ public class InvoicePlugin extends AbstractPlugin { } boolean isPublicEvent = !("0".equals(event.getItemValueString("keypublicresult"))); - boolean isCargoRechnung = ("Rechnungseingang".equals(workitem.getWorkflowGroup())); // Payment.type muss immer eingetragne werden! if (isPublicEvent && workitem.getTaskID() >= TASK_ERFASSUNG && workitem.getEventID() < 900) { @@ -98,11 +99,11 @@ public class InvoicePlugin extends AbstractPlugin { || workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION) && workitem.getEventID() == EVENT_FREIGEBEN)) { // Buchungsperiode auf plausi prüfen - if (isCargoRechnung && "workitem".equals(workitem.getType())) { + if (isCargoRechnung(workitem) && "workitem".equals(workitem.getType())) { validateBuchungsperiode(workitem.getItemValueString(ITEM_INVOICE_PERIOD)); } // Cargosoft Kreditorennnummer prüfen - if (isCargoRechnung) { + if (isCargoRechnung(workitem)) { validateCargosoftCdtrNumber(workitem); } } @@ -110,7 +111,7 @@ public class InvoicePlugin extends AbstractPlugin { // die prüfung der positionsnummern und Category erfolgt nur im Status // Sachprüfung (5200) und nur beim Freigeben (20)! - if (isCargoRechnung + if (isCargoRechnung(workitem) && ((workitem.getTaskID() == TASK_SACHPRUEFUNG || workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION) && workitem.getEventID() == EVENT_FREIGEBEN)) { List childs = explodeChildList(workitem); @@ -165,7 +166,7 @@ public class InvoicePlugin extends AbstractPlugin { // Im folgenden überprüfen wir ob eine Buchungszeile vorkommt in der keine oder // die Hauptbuchunsperiode ausgewählt wurde. Ist das nicht der Fal gibt es eine // Fehlermeldung für den Anwendere - if (isCargoRechnung && childs.size() > 0) { + if (isCargoRechnung(workitem) && childs.size() > 0) { String hauptBuchungsperiode = workitem.getItemValueString("invoice.period"); boolean buchungsperiodenValid = false; for (ItemCollection posItem : childs) { @@ -430,4 +431,22 @@ public class InvoicePlugin extends AbstractPlugin { } return childItems; } + + /** + * This method returns true if the current workitem is a Cargosoft Invoice. + * + * This can be based on different model versions e.g. rechnungseingang-de-1.2, + * rechnungseingang-pl-1.0, ... + * + * @param workitem + * @return + */ + public static boolean isCargoRechnung(ItemCollection workitem) { + String REGEX_PATTERN = "rechnungseingang-([a-z]{2})-\\d.\\d"; + // Erstellen Sie ein Pattern-Objekt + Pattern pattern = Pattern.compile(REGEX_PATTERN); + Matcher matcher = pattern.matcher(workitem.getModelVersion()); + // Überprüfen, ob das Muster übereinstimmt + return matcher.matches(); + } } diff --git a/office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties b/office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties index 5163f8e..053a632 100644 --- a/office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties +++ b/office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties @@ -10,7 +10,7 @@ alexander_sub_positionen_read= alexander_sub_responsible= space.sub_custom=Konfiguration -space.help_custom=Bitte verwenden Sie hier Reguläre Ausdrücke wie z.B. \\bEX-SAL Dieser Ausdruck sucht nach dem Wert "EX-SAL" in einem String und achtet darauf, dass es nicht Teil eines größeren Ausdrucks ist (z.B. "EX-SALES"). +space.help_custom=Bitte verwenden Sie hier Reguläre Ausdrücke wie z.B. \\bEX-SAL Dieser Ausdruck sucht nach dem Wert "EX-SAL" in einem String und achtet darauf, dass es nicht Teil eines größeren Ausdrucks ist (z.B. "EX-SALES"). diff --git a/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestModelMatcher.java b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestModelMatcher.java new file mode 100644 index 0000000..87271b2 --- /dev/null +++ b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestModelMatcher.java @@ -0,0 +1,32 @@ +package com.alexanderlogistics; + +import org.imixs.workflow.ItemCollection; +import org.junit.Test; + +import junit.framework.Assert; + +/** + * This test tests the InvoicePlugin isCargosoft method + * + * @author rsoika + * + */ +public class TestModelMatcher { + + @Test + public void testModels() { + + ItemCollection workitem = new ItemCollection(); + + workitem.setModelVersion("rechnungseingang-de-1.0"); + Assert.assertTrue(InvoicePlugin.isCargoRechnung(workitem)); + + workitem.setModelVersion("rechnungseingang-pl-1.2"); + Assert.assertTrue(InvoicePlugin.isCargoRechnung(workitem)); + + workitem.setModelVersion("rechnungseingang-sachrechnung-pl-1.2"); + Assert.assertFalse(InvoicePlugin.isCargoRechnung(workitem)); + + } + +} diff --git a/pom.xml b/pom.xml index 47435f8..3bcf4ca 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.alexander-logistics office-alexander-logistics - 1.2.13 + 1.2.14 pom Imixs Office Workflow - Custom Build