From f942231066be3833b99d5eb641a397860a924234 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Wed, 19 Aug 2026 10:18:36 +0200 Subject: [PATCH] =?UTF-8?q?neuer=20AGLAIInvoiceAdapter=20f=C3=BCr=20aufl?= =?UTF-8?q?=C3=B6sung=20von=20space.ref?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASENOTES.md | 11 + .../AGLAIInvoiceAdapter.java | 167 + .../mahnlauf/MahnlaufService.java | 5 +- .../xml/CargosoftXMLEAkteImportService.java | 3 +- .../xml/CargosoftXMLInvoiceImportService.java | 3 +- .../zoho/ZohoController.java | 2 +- workflow/ams/rechnungseingang-ams-1.1.0.bpmn | 5099 +++++++++++++++++ 7 files changed, 5285 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java create mode 100644 workflow/ams/rechnungseingang-ams-1.1.0.bpmn diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c1fc951..8a5cdfe 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,16 @@ # Versionen +## 1.4.0 (Development) + +- neuer AGLAIInvoiceAdapter + der Adapter `AGLAIInvoiceAdapter` muss künftig in das Import Event der Rechnungseingangs Modelle. Dieser Adapter Findet den Space und den Mandanten. + +Neue Modelle: + + - AMS + - rechnungseingang-ams-1.1.0.bpmn + + ## 1.3.6 (Development) **KSeF Produktiname II.** diff --git a/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java b/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java new file mode 100644 index 0000000..f2e6c23 --- /dev/null +++ b/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java @@ -0,0 +1,167 @@ +package com.alexanderlogistics; + +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.SignalAdapter; +import org.imixs.workflow.engine.DocumentService; +import org.imixs.workflow.exceptions.AdapterException; +import org.imixs.workflow.exceptions.PluginException; +import org.imixs.workflow.exceptions.QueryException; + +import com.alexanderlogistics.mahnlauf.MahnlaufService; + +import jakarta.inject.Inject; + +/** + * Der AGLAIInvoiceAdapter weist eien Rechnung dem richtigen Space zu und sucht + * nach dem passenden Business Partner + * + * + * + * @version 1.0 + * @author rsoika + */ +public class AGLAIInvoiceAdapter implements SignalAdapter { + + private static Logger logger = Logger.getLogger(AGLAIInvoiceAdapter.class.getName()); + + public static final String ERROR_MISSING_DATA = "MISSING_DATA"; + public static final String ERROR_CONFIG = "CONFIG_ERROR"; + + @Inject + MahnlaufService mahnlaufService; + + @Inject + DocumentService documentService; + + /** + * This method finds or create the Zahlungsavis and adds a reference + * ($workitemref) to the current invoice. + * + * @throws PluginException + */ + @Override + public ItemCollection execute(ItemCollection workitem, ItemCollection event) + throws AdapterException, PluginException { + + // Inbound Invoice? + if (workitem.getModelVersion().startsWith("rechnungseingang")) { + + // Initialize invoice.positions and Space + initInvoicePositions(workitem); + initInvoiceSpace(workitem); + initInvoiceBusinessPartner(workitem); + } + + return workitem; + + } + + /** + * Diese Methode prüft ob es bei einer Eingangsrechnung zwar das feld + * 'invoice.positions' gibt, aber noch keine Positionsliste + * Die Methode erzeugt eine Default Zeile. + * + * @param workitem + */ + private void initInvoicePositions(ItemCollection workitem) { + + List childList = InvoiceUtil.explodeChildList(workitem); + if (childList.size() == 0 && !workitem.getItemValueString("invoice.positions").isEmpty()) { + String positionNumber = workitem.getItemValueString("invoice.positions"); + + logger.info("├── init invoice.positions: " + positionNumber); + + ItemCollection child = new ItemCollection(); + child.setItemValue("numPos", 1); + child.setItemValue("name", positionNumber); + childList.add(child); + InvoiceUtil.implodeChildList(workitem, childList); + + } + } + + /** + * Die Methode findet den passenden Space anhand + * der REgex in space sofern das workitem noch keinem Space zugewiesen ist + * + * @param workitem + */ + private void initInvoiceSpace(ItemCollection workitem) { + + if (workitem.getItemValueString("space.ref").isEmpty() + && !workitem.getItemValueString("invoice.positions").isEmpty()) { + String positionNumber = workitem.getItemValueString("invoice.positions"); + logger.info("├── init space for position : " + positionNumber); + // Jetzt noch das Space mapping + Map> spacePosMappings = mahnlaufService.loadSpacePosMappings(); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, positionNumber); + } + } + + /** + * Find creditor cdtr.name + * based on the field + * 'document.company' or cdtr.name + * + * Zunächst versuchen wir falls ein cdtr.name von der KI gefunden wurde dieesn + * über das Businesspartner Interface aufzulösne. + * Falls das nicht gelingt, suchen wir nach einer alten Rechnung mit der selben + * document.company + * + */ + private void initInvoiceBusinessPartner(ItemCollection workitem) { + if (workitem.getItemValueString("partner.id").isEmpty() + && !workitem.getItemValueString("document.company").isEmpty()) { + + String companyName = workitem.getItemValueString("document.company"); + String cdtrName = workitem.getItemValueString("cdtr.name"); + logger.info("├── init cdtr.name for document.company: " + companyName); + + // erster versuch über Busienss partner. + String query = "(type:workitem OR type:workitemarchive) AND ($modelversion:businesspartner*) AND (partner.name:\"" + + cdtrName + "\")"; + + try { + List result = documentService.find(query, 1, 0, "$created", true); + if (result.size() == 1) { + logger.info("│ ├── found business partner by cdtr.name"); + ItemCollection businessPartner = result.get(0); + workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number")); + workitem.setItemValue("cdtr.name", businessPartner.getItemValueString("cdtr.name")); + workitem.setItemValue("partner.id", businessPartner.getItemValueString("partner.id")); + workitem.setItemValue("partner.name", invoice.getItemValueString("cdtr.name")); + return; + } + } catch (QueryException e) { + // not found! + logger.warning("Failed to lookup company name '" + companyName + "' : " + e.getMessage()); + } + + // Eine Suche über den exakten Namen ist sinnlos gewesen, daher versuchen wir + // nun über den letzten Treffer + query = "(type:workitem OR type:workitemarchive) AND ($modelversion:rechnungseingang*) AND (document.company:\"" + + companyName + "\") AND NOT (partner.id=\"\") AND ($taskid:[5010 TO 5900])"; + + try { + List result = documentService.find(query, 1, 0, "$created", true); + if (result.size() == 1) { + logger.info("│ ├── found business partner by last invoice"); + ItemCollection invoice = result.get(0); + workitem.setItemValue("cdtr.number", invoice.getItemValueString("cdtr.number")); + workitem.setItemValue("cdtr.name", invoice.getItemValueString("cdtr.name")); + workitem.setItemValue("partner.id", invoice.getItemValueString("partner.id")); + workitem.setItemValue("partner.name", invoice.getItemValueString("cdtr.name")); + } + } catch (QueryException e) { + // not found! + logger.warning("Failed to lookup company name '" + companyName + "' : " + e.getMessage()); + } + + } + + } +} \ No newline at end of file diff --git a/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java index 2516dda..004180a 100644 --- a/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java +++ b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java @@ -129,10 +129,11 @@ public class MahnlaufService { * @param workitem * @param spacePosMappings */ - public void mapInvoiceTextToSpace(ItemCollection workitem, Map> spacePosMappings) { + public void mapInvoiceTextToSpace(ItemCollection workitem, Map> spacePosMappings, + String positionNumber) { // Jezt noch das Space mapping // dazu kucken wir in alle spaces den config wert 'pos.mapping' - String text = workitem.getItemValueString("invoice.text"); + String text = positionNumber; // workitem.getItemValueString("invoice.text"); if (!text.isEmpty()) { boolean found = false; for (Map.Entry> entry : spacePosMappings.entrySet()) { diff --git a/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java index c338a3f..ef8821e 100644 --- a/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java +++ b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java @@ -428,7 +428,8 @@ public class CargosoftXMLEAkteImportService { readXMLRows(doc, workitem); // Jetzt noch das Space mapping workitem.setItemValue("invoice.text", workitem.getItemValueString("invoice.positions")); - mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, + workitem.getItemValueString("invoice.positions")); // Finally we attache the pdf file and the XML content to the workitem. attacheFiles(doc, workitem); diff --git a/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java index 6ae1d73..69ef91f 100644 --- a/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java +++ b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java @@ -482,7 +482,8 @@ public class CargosoftXMLInvoiceImportService { resolveATCNumbers(doc, workitem); // Jetzt noch das Space mapping - mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, + workitem.getItemValueString("invoice.text")); // Rückstellungen ignorieren if (isRueckStellung(workitem)) { diff --git a/src/main/java/com/alexanderlogistics/zoho/ZohoController.java b/src/main/java/com/alexanderlogistics/zoho/ZohoController.java index fa0660a..a83dc16 100644 --- a/src/main/java/com/alexanderlogistics/zoho/ZohoController.java +++ b/src/main/java/com/alexanderlogistics/zoho/ZohoController.java @@ -36,7 +36,7 @@ import jakarta.inject.Named; /** * Der ZohoController ist für das Admin Interface um Access Tokens zu erzeugen. * - * @see admin/zoho.xhml + * @see zoho.xhml * * @author rsoika * diff --git a/workflow/ams/rechnungseingang-ams-1.1.0.bpmn b/workflow/ams/rechnungseingang-ams-1.1.0.bpmn new file mode 100644 index 0000000..6718ca6 --- /dev/null +++ b/workflow/ams/rechnungseingang-ams-1.1.0.bpmn @@ -0,0 +1,5099 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + StartEvent_1 + IntermediateCatchEvent_6 + IntermediateCatchEvent_40 + IntermediateThrowEvent_4 + IntermediateCatchEvent_19 + IntermediateThrowEvent_3 + IntermediateCatchEvent_31 + Task_14 + EventBasedGateway_3 + Task_13 + EndEvent_4 + IntermediateCatchEvent_3 + IntermediateCatchEvent_5000-20 + + DataObject_5 + TextAnnotation_4 + event_ceK05A + + + EndEvent_1 + Task_4 + IntermediateCatchEvent_25 + Task_5005 + IntermediateCatchEvent_5005-10 + IntermediateCatchEvent_55 + IntermediateCatchEvent_36 + IntermediateCatchEvent_32 + IntermediateCatchEvent_21 + EventBasedGateway_2 + IntermediateCatchEvent_5005-20 + IntermediateCatchEvent_26 + Task_12 + IntermediateCatchEvent_28 + ExclusiveGateway_10 + + ExclusiveGateway_3 + DataObject_1 + TextAnnotation_1 + event_pAR6FQ + event_FPc1AA + Task_8 + EndEvent_3 + IntermediateCatchEvent_7 + IntermediateCatchEvent_24 + + + Task_5000 + IntermediateCatchEvent_5000-10 + IntermediateCatchEvent_33 + IntermediateCatchEvent_38 + IntermediateCatchEvent_15 + EndEvent_6 + EventBasedGateway_4 + Task_16 + IntermediateCatchEvent_37 + IntermediateCatchEvent_16 + Task_9 + ExclusiveGateway_2 + IntermediateCatchEvent_29 + IntermediateCatchEvent_39 + IntermediateCatchEvent_20 + Task_3 + IntermediateCatchEvent_17 + IntermediateCatchEvent_35 + IntermediateThrowEvent_1 + IntermediateCatchEvent_58 + Task_5 + IntermediateCatchEvent_48 + IntermediateCatchEvent_8 + IntermediateCatchEvent_4 + IntermediateCatchEvent_14 + EndEvent_2 + Task_6 + IntermediateCatchEvent_23 + Task_19 + IntermediateCatchEvent_63 + IntermediateCatchEvent_41 + IntermediateCatchEvent_65 + IntermediateCatchEvent_66 + + TextAnnotation_5 + DataObject_3 + TextAnnotation_2 + IntermediateCatchEvent_62 + gateway_Al0gGg + event_l03qSg + task_HY50Wg + task_lvQc6Q + event_IqQ0Hw + gateway_ax47Qw + textAnnotation_8SjKMg + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_31 + SequenceFlow_1 + SequenceFlow_123 + SequenceFlow_32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home + + stop + false + + + start + false + +]]> + + + + + + + + + space.name]]> + + + false + + + + + + + SequenceFlow_46 + sequenceFlow_acNhxg + + + + sequenceFlow_Ny3V1A + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus +Zollkurse +]]> + SequenceFlow_38 + SequenceFlow_83 + SequenceFlow_104 + SequenceFlow_134 + SequenceFlow_37 + sequenceFlow_ZFDfeA + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name + +cargosoft-export-1.0 +1000 +100 +(?!txtworkflowhistory)(^[a-zA-Z]|^_) + + + stop + false +]]> + + + + + + + + + + + + false + + + 0 && (a!=b) ) { + result.isValid=false; + result.errorMessage="Der Rechnungsbetrag " + a+ " stimmt nicht mit dem Positionsbetrag " + b + " überein."; +}]]> + + + + SequenceFlow_8 + + + DataOutput_1 + + + DataOutput_1 + + + sequenceFlow_0csSiA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_38 + + + + + + SequenceFlow_37 + SequenceFlow_8 + SequenceFlow_54 + + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_56 + SequenceFlow_24 + sequenceFlow_AajxSw + SequenceFlow_55 + SequenceFlow_50 + SequenceFlow_81 + SequenceFlow_88 + sequenceFlow_W0RBHg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_29 + SequenceFlow_2 + + + SequenceFlow_32 + SequenceFlow_29 + SequenceFlow_30 + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_30 + SequenceFlow_72 + Association_10 + sequenceFlow_IZAXAQ + + + + + + + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_52 + SequenceFlow_90 + SequenceFlow_47 + sequenceFlow_9rYDHA + + + SequenceFlow_47 + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_55 + SequenceFlow_12 + + + + + + SequenceFlow_1 + SequenceFlow_68 + + sequenceFlow_0csSiA + + + + + + SequenceFlow_126 + + + + + + + + SequenceFlow_12 + SequenceFlow_53 + SequenceFlow_19 + SequenceFlow_25 + + + + + + sepa-export-manual-3.0 +1000 +payment.type +70 +20]]> + + + + + + + + + SequenceFlow_19 + SequenceFlow_23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rechnungscontrolling]]> + + + + + + + + + + + + false + + + + + + sequenceFlow_Ny3V1A + sequenceFlow_UD0ZBA + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_59 + SequenceFlow_40 + sequenceFlow_k9vKFQ + + + SequenceFlow_40 + + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_23 + SequenceFlow_41 + sequenceFlow_8oj2QQ + SequenceFlow_14 + sequenceFlow_y2ISGw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + SequenceFlow_14 + sequenceFlow_neZW5g + + + + + + + + + + + + + + + + + + + payment.type ]]> + + + + sequenceFlow_y2ISGw + sequenceFlow_W0RBHg + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + + + + + + + + + SequenceFlow_50 + SequenceFlow_53 + + + + + + + + + + + + + + + + cdtr.name invoice.number]]> + + + + + + + + + cdtr.name +Rechnungsnummer: invoice.number +Betrag: invoice.total invoice.currency + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + + + + SequenceFlow_54 + SequenceFlow_7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_17 + SequenceFlow_60 + SequenceFlow_9 + + + SequenceFlow_9 + + + + + + + SequenceFlow_17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich löschen? + + stop + false + +cancel]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_76 + SequenceFlow_48 + + + SequenceFlow_48 + + + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_2 + SequenceFlow_78 + SequenceFlow_89 + SequenceFlow_72 + SequenceFlow_86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_52 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_59 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_7 + SequenceFlow_62 + SequenceFlow_61 + SequenceFlow_73 + + + + + + + + + + + cdtr.name invoice.number]]> + + + + + + + + + cdtr.name +Rechnungsnummer: invoice.number +Betrag: invoice.total invoice.currency + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich archivieren? +cancel]]> + + + + + + + + + + + + false + + + + + + + + SequenceFlow_61 + + sequenceFlow_k9vKFQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_62 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_56 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_66 + sequenceFlow_Mz0rbQ + + + SequenceFlow_66 + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgcdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_74 + SequenceFlow_126 + SequenceFlow_46 + SequenceFlow_85 + sequenceFlow_UD0ZBA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rechnungscontrolling +false +suggest]]> + + + + + + + + + + + + false + + + + + SequenceFlow_74 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_73 + SequenceFlow_75 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_78 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich löschen?]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_81 + SequenceFlow_80 + + + SequenceFlow_80 + + + + + + + + + + + SequenceFlow_82 + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_84 + SequenceFlow_87 + SequenceFlow_82 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_84 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_86 + SequenceFlow_87 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_88 + SequenceFlow_89 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_83 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich archivieren? + + stop + false + +cancel]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_16 + SequenceFlow_13 + + + SequenceFlow_13 + + + + + + + + + + + SequenceFlow_85 + SequenceFlow_76 + SequenceFlow_16 + + sequenceFlow_GKmxwQ + + + + + + SequenceFlow_90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_41 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /> + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_104 + + + + + + + + + + + + + + + + + + + + SequenceFlow_123 + + + DataOutput_3 + + + DataOutput_3 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_68 + SequenceFlow_129 + SequenceFlow_133 + sequenceFlow_MxzvVQ + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + sequenceFlow_MxzvVQ + sequenceFlow_QzY8PA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_129 + + + + + + SequenceFlow_75 + SequenceFlow_134 + + sequenceFlow_acNhxg + + + + + + + + + + + + + + + + + SequenceFlow_24 + + + DataOutput_5 + + + DataOutput_5 + + + + + + + + + + + + + + + + + SequenceFlow_133 + + + DataOutput_6 + + + DataOutput_6 + + + + + + + + + Es handelt sich um einen SEPA Lauf. Die Rechnung muss explizit freigegeben werden. + Ändern von IBAN und Fälligkeit ist hier möglich + + + + + + + + + + + + + + + + + Liegt eine Logistik Leistung vor, wird ein Fachbereich ausgewählt + + + + + + + + + + + + + + + + + + + + + + sequenceFlow_l7lJjQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +false]]> + + + + + + + + + + + + false + + + + sequenceFlow_ZFDfeA + sequenceFlow_l7lJjQ + + + + + + + + + + + + + + + + + + + SequenceFlow_25 + sequenceFlow_9rYDHA + SequenceFlow_42 + sequenceFlow_QzY8PA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suggest +false + + (^rechnungseingang-sachrechnung-[a-z]{2,3}-\d+(?:\.\d+)?$) + 5001 + 980 + +]]> + + + + + + + + + + + + false + + + + + + + + sequenceFlow_Mz0rbQ + sequenceFlow_GKmxwQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sequenceFlow_8oj2QQ + + + DataOutput_5 + + + DataOutput_5 + + + + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_41 + sequenceFlow_neZW5g + sequenceFlow_y2ISGw + sequenceFlow_ooIFAg + + + + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_41 + sequenceFlow_UPHBoA + sequenceFlow_y2ISGw + sequenceFlow_LeNDAw + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + sequenceFlow_LeNDAw + sequenceFlow_ooIFAg + SequenceFlow_42 + + + + + + + + + + sequenceFlow_IZAXAQ + sequenceFlow_UPHBoA + sequenceFlow_AajxSw + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +