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 - - + +