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 51eb38f..05c2b25 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
@@ -21,7 +21,7 @@ import org.imixs.workflow.office.util.SequenceService;
import jakarta.inject.Inject;
/**
- * Der CargosoftSplitAdapter erezeugt anhand der Positionstablelle eignee
+ * Der CargosoftSplitAdapter erzeugt anhand der Positionstablelle
* cargosoft export workitems, getrennt für jede Buchungsperdiode. Dies ist
* notwendig, da Cargosoft selbst nicht mit unterschiedlichen Buchungsperioden
* in einer Rechnung umgehen kann.
@@ -45,10 +45,13 @@ import jakarta.inject.Inject;
}
*
*
- * Because we also export the attachment data to cargosoft, the adaper lookups
+ * Because we also export the attachment data to cargosoft, the adapter lookups
* the conente of the attachment in the snapshot of the origin workitem
*
*
+ * Der Adapter validiert zusätzlich ob die Kreditorennnummer cdtr.number gültig
+ * ist.
+ *
* @version 1.0
* @author rsoika
*/
@@ -63,6 +66,9 @@ public class CargosoftSplitAdapter implements SignalAdapter {
@Inject
SequenceService sequenceService;
+ @Inject
+ BusinessPartnerService businessPartnerService;
+
/**
* This method computes the cargosoft export data file
*
@@ -76,6 +82,14 @@ public class CargosoftSplitAdapter implements SignalAdapter {
logger.info("......starting export...");
try {
+ // check cdtr.number
+ String cdtrNumber = workitem.getItemValueString("cdtr.number");
+ ItemCollection partner = businessPartnerService.getBusinessPartnerByID(InvoiceUtil.buildBPID(cdtrNumber));
+ if (partner == null) {
+ throw new PluginException(CargosoftSplitAdapter.class.getSimpleName(), CONFIG_ERROR,
+ "Missing or wrong Creditor Number, please check your data.");
+ }
+
// read the cargosoft split options
ItemCollection evalItemCollection = workflowService.evalWorkflowResult(event, "cargosoft", workitem, false);
@@ -90,7 +104,7 @@ public class CargosoftSplitAdapter implements SignalAdapter {
if (model.isEmpty() || taskID == 0 || eventID == 0) {
throw new PluginException(CargosoftSplitAdapter.class.getSimpleName(), CONFIG_ERROR,
- "missign cargosoft configuration 'model', 'task', 'event' - please check model configuration");
+ "missing cargosoft configuration 'model', 'task', 'event' - please check model configuration");
}
// Zunaechst müssen wir festelstellen, ob es mehrere unterschiedliche
diff --git a/office-alexander-logistics-testclient/pom.xml b/office-alexander-logistics-testclient/pom.xml
index eae1bdc..6b77dd4 100644
--- a/office-alexander-logistics-testclient/pom.xml
+++ b/office-alexander-logistics-testclient/pom.xml
@@ -12,22 +12,6 @@
jar
Imixs Office Workflow Remote Test Client
-
- 11
- 11
- UTF-8
- UTF-8
-
-
- 10.0.0
- 6.0.9
- 5.0.0
-
-
- 5.9.2
- 5.8.0
-
-
@@ -87,13 +71,10 @@
${org.imixs.workflow.version}
-
-
org.imixs.workflow
imixs-melman
${org.imixs.melman.version}
- test
diff --git a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java b/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java
new file mode 100644
index 0000000..50e563f
--- /dev/null
+++ b/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java
@@ -0,0 +1,105 @@
+package com.alexanderlogistics.rest;
+
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.imixs.melman.EventLogClient;
+import org.imixs.melman.FormAuthenticator;
+import org.imixs.melman.RestAPIException;
+import org.imixs.workflow.ItemCollection;
+import org.imixs.workflow.exceptions.PluginException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+/**
+ * A test to explore a corgosoft invoice event
+ *
+ */
+// @Disabled
+public class TestCargosoftEvents {
+
+ private static Logger logger = Logger.getLogger(TestCargosoftEvents.class.getName());
+
+ EventLogClient client = null;
+
+ String restAPI = "https://test.alexander-logistics.office-workflow.de/api";
+ // String restAPI = "http://localhost:8080/api";
+ String userID = "kutzner-service";
+ String password = "imixs";
+
+ /**
+ * Setup a new Rest Client
+ *
+ * @throws PluginException
+ */
+ @BeforeEach
+ public void setup() throws PluginException {
+
+ client = new EventLogClient(restAPI);
+ FormAuthenticator aut;
+ try {
+ aut = new FormAuthenticator(restAPI, userID, password);
+ client.registerClientRequestFilter(aut);
+ } catch (RestAPIException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ @Disabled
+ @Test
+ public void getXMLData() {
+ logger.info("start...");
+ try {
+ List list = client.searchEventLog("TOPIC_CARGOSOFT_INVOICE");
+ logger.info("found " + list.size() + " log entries");
+ for (ItemCollection entry : list) {
+ List> dataList = entry.getItemValue("data");
+ if (dataList != null && dataList.size() > 0) {
+ ItemCollection data = new ItemCollection((Map>) dataList.get(0));
+ logger.info("Data=" + data.getItemValueString("some-data"));
+ logger.info("XML Data=" + data.getItemValueString("xml-data"));
+ }
+ }
+ } catch (RestAPIException e) {
+ logger.severe("Failed to read event log entry: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Deletes the 10 last topics
+ */
+ @Test
+ public void deleteXMLData() {
+ logger.info("start...");
+ int count = 0;
+ try {
+ client.setPageSize(1000);
+ List list = client.searchEventLog("topictest", "TOPIC_CARGOSOFT_INVOICE");
+ // List list = client.searchEventLog("");
+
+ logger.info("found " + list.size() + " log entries");
+ for (ItemCollection entry : list) {
+ String id = entry.getItemValueString("id");
+ logger.info("delete event log entry id=" + id);
+ client.deleteEventLogEntry(id);
+
+ count++;
+ if (count >= 635000) {
+ break;
+ }
+
+ }
+ logger.info(count + " log entries deleted");
+ } catch (
+
+ RestAPIException e) {
+ logger.severe("Failed to read event log entry: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index b91ff1a..aea06f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,9 +29,9 @@
5.0.4
6.0.9
5.0.0
- 3.1.1
+ 3.1.2-SNAPSHOT
3.0.3
- 2.1.0
+ 2.1.1-SNAPSHOT
6.0
9.9.1-4
2.0.26
@@ -285,6 +285,13 @@
compile
+
+
+ org.imixs.workflow
+ imixs-melman
+ ${org.imixs.melman.version}
+ compile
+
diff --git a/workflow/rechnungseingang-de-1.2.41.bpmn b/workflow/rechnungseingang-de-1.2.41.bpmn
index 6490eca..b9c37b4 100644
--- a/workflow/rechnungseingang-de-1.2.41.bpmn
+++ b/workflow/rechnungseingang-de-1.2.41.bpmn
@@ -6383,10 +6383,10 @@ Betrag: _amount (Brutto € _amount_brutto
-
- Datenübergabe an Cargosoft.
+
+
+Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]>
@@ -8101,8 +8101,8 @@ Betrag: invoice.total invoice.currency
-
-
+
+