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 new file mode 100644 index 0000000..e876a7a --- /dev/null +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java @@ -0,0 +1,237 @@ +package com.alexanderlogistics; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.logging.Logger; +import java.util.regex.Pattern; + +import javax.inject.Inject; + +import org.imixs.marty.ejb.SequenceService; +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.SignalAdapter; +import org.imixs.workflow.WorkflowKernel; +import org.imixs.workflow.engine.WorkflowService; +import org.imixs.workflow.engine.plugins.SplitAndJoinPlugin; +import org.imixs.workflow.exceptions.AdapterException; +import org.imixs.workflow.exceptions.ModelException; +import org.imixs.workflow.exceptions.PluginException; + +/** + * Der CargosoftSplitAdapter erezeugt anhand der Positionstablelle eignee + * cargosoft export workitems, getrennt für jede Buchungsperdiode. Dies ist + * notwendig, da Cargosoft selbst nicht mit unterschiedlichen Buchungsperioden + * in einer Rechnung umgehen kann. + *

+ * adapter exports the invoice data to a ftp server connected to cargosoft. Da + * auch eine fortlaufene Rechnungsnummer von Cargosoft zwingend vorgeschrieben + * ist, erzeugt der adapter auch für jedes weiteres cargosoft export worktiem + * ein neue Sequencenummer die im Hautpworkitem gespeichert wird. + *

+ * Der Adapter wird im Modell wie folgt konfiguriert + * + *

+ * {@code
+        
+            cargosoft-export-1.0
+            1000
+            100
+            (?!txtworkflowhistory)(^[a-zA-Z]|^_)
+        
+       
+   }
+ * 
+ *

+ * Because we also export the attachment data to cargosoft, the adaper lookups + * the conente of the attachment in the snapshot of the origin workitem + * + * + * @version 1.0 + * @author rsoika + */ +public class CargosoftSplitAdapter implements SignalAdapter { + + public static final String CONFIG_ERROR = "CONFIG_ERROR"; + private static Logger logger = Logger.getLogger(CargosoftSplitAdapter.class.getName()); + + @Inject + WorkflowService workflowService; + + @Inject + SequenceService sequenceService; + + /** + * This method computes the cargosoft export data file + * + * @throws PluginException + */ + @SuppressWarnings("rawtypes") + @Override + public ItemCollection execute(ItemCollection workitem, ItemCollection event) + throws AdapterException, PluginException { + + logger.info("......starting export..."); + try { + + // read the cargosoft split options + ItemCollection evalItemCollection = workflowService.evalWorkflowResult(event, "cargosoft", workitem, false); + + if (evalItemCollection == null) { + throw new PluginException(CargosoftSplitAdapter.class.getSimpleName(), CONFIG_ERROR, + "missign cargosoft configuration in model event - please check model configuration"); + } + String model = evalItemCollection.getItemValueString("model"); + int taskID = evalItemCollection.getItemValueInteger("task"); + int eventID = evalItemCollection.getItemValueInteger("event"); + String items = evalItemCollection.getItemValueString("items"); + + 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"); + } + + // Zunaechst müssen wir festelstellen, ob es mehrere unterschiedliche + // Buchungsperioden in der Positionstabelle gibt. + List buchungsPersioden = new ArrayList(); + // add haupt buchungsperiode + buchungsPersioden.add(workitem.getItemValueString("invoice.period")); + List positionsTabelle = InvoicePlugin.explodeChildList(workitem); + for (ItemCollection posItem : positionsTabelle) { + String childPeriod = posItem.getItemValueString(InvoicePlugin.ITEM_INVOICE_PERIOD); + if (!childPeriod.isEmpty() && !buchungsPersioden.contains(childPeriod)) { + buchungsPersioden.add(childPeriod); + } + + } + + // nun wird für jede Buchungsperiode ein eigener corgosoft Export angestoßen.... + boolean nextSequencenumber = false; + for (String buchungsPeriode : buchungsPersioden) { + // nun entnehmen wir aus der positionsTabelle alle einträge die zu dieser + // Periode passen... + // (die erste Periode ist die default periode welche wir nehemn wenn keine + // Periode angegeben wurde). + ItemCollection workitemSubProcess = new ItemCollection(); + // now clone the field list... + copyItemList(items, workitem, workitemSubProcess); + + // in die _childs Liste kommen jetzt nur passende Positionseinträge mit der + // selben Buchungsperiode + List splitPositionen = new ArrayList(); + ListIterator iter = positionsTabelle.listIterator(); + int row = 1; + float netto = 0; + float total = 0; + // float tax=0; + while (iter.hasNext()) { + ItemCollection posItem = iter.next(); + String childPeriod = posItem.getItemValueString(InvoicePlugin.ITEM_INVOICE_PERIOD); + if (childPeriod.isEmpty() || buchungsPeriode.equals(childPeriod)) { + posItem.setItemValue("numpos", row); + splitPositionen.add(posItem.getAllItems()); + iter.remove(); + row++; + netto = netto + posItem.getItemValueFloat("amount"); + total = total + posItem.getItemValueFloat("total"); + + } + } + workitemSubProcess.setItemValue(InvoicePlugin.ITEM_INVOICE_PERIOD, buchungsPeriode); + // jetzt muessen wir die neue Rechnungssumme bilden.... + workitemSubProcess.setItemValue("order.total", total); + workitemSubProcess.setItemValue("order.total.tax", total - netto); + workitemSubProcess.setItemValue("order.total.netto", netto); + + logger.info("......create cargosoft split buchung - invoice.period=" + buchungsPeriode); + // update the child items (reduzierte Positionstabelle) + workitemSubProcess.setItemValue(InvoicePlugin.CHILD_ITEM_PROPERTY, splitPositionen); + + workitemSubProcess.model(model).task(taskID).event(eventID); + workitemSubProcess.replaceItemValue(WorkflowService.UNIQUEIDREF, workitem.getUniqueID()); + + // 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 + // 'Rechnungseingang' gesetzt werden! + workitemSubProcess.setItemValue(WorkflowKernel.WORKFLOWGROUP, "Rechnungseingang"); + sequenceService.computeSequenceNumber(workitemSubProcess); + logger.info(".......compute new sequence number: " + + workitemSubProcess.getItemValueLong("numsequencenumber")); + workitem.appendItemValueUnique("numsequencenumber_sub", + workitemSubProcess.getItemValueLong("numsequencenumber")); + } else { + nextSequencenumber = true; + } + workitemSubProcess = workflowService.processWorkItem(workitemSubProcess); + // finally add the new workitemRef into the origin + workitem.appendItemValueUnique(SplitAndJoinPlugin.LINK_PROPERTY, workitemSubProcess.getUniqueID()); + + } + + } catch (ModelException e) { + logger.severe("cargosoft split failed: " + e.getMessage()); + throw new PluginException(CargosoftSplitAdapter.class.getSimpleName(), CONFIG_ERROR, e.getMessage(), e); + } + + return workitem; + } + + /** + * This Method copies the fields defined in 'items' into the targetWorkitem. + * Multiple values are separated with comma ','. + *

+ * In case a item name contains '|' the target field name will become the right + * part of the item name. + *

+ * Example: {@code + * txttitle,txtfirstname + * + * txttitle|newitem1,txtfirstname|newitem2 + * + * } + * + *

+ * Optional also reg expressions are supported. In this case mapping of the item + * name is not supported. + *

+ * Example: {@code + * (^artikel$|^invoice$),txtTitel|txtNewTitel + * + * + * } A reg expression must be includes in brackets. + * + */ + protected void copyItemList(String items, ItemCollection source, ItemCollection target) { + // clone the field list... + StringTokenizer st = new StringTokenizer(items, ","); + while (st.hasMoreTokens()) { + String field = st.nextToken().trim(); + + // test if field is a reg ex + if (field.startsWith("(") && field.endsWith(")")) { + Pattern itemPattern = Pattern.compile(field); + Map> map = source.getAllItems(); + for (String itemName : map.keySet()) { + if (itemPattern.matcher(itemName).find()) { + target.replaceItemValue(itemName, source.getItemValue(itemName)); + } + } + + } else { + // default behavior without reg ex + int pos = field.indexOf('|'); + if (pos > -1) { + target.replaceItemValue(field.substring(pos + 1).trim(), + source.getItemValue(field.substring(0, pos).trim())); + } else { + target.replaceItemValue(field, source.getItemValue(field)); + } + } + } + } + +} \ No newline at end of file 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 31c9501..f321119 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 @@ -35,6 +35,7 @@ public class InvoicePlugin extends AbstractPlugin { public static final int TASK_ERFASSUNG = 5001; public static final int TASK_SACHPRUEFUNG = 5200; public static final int EVENT_FREIGEBEN = 20; + public static final String ITEM_INVOICE_PERIOD = "invoice.period"; public static final String CHILD_ITEM_PROPERTY = "_ChildItems"; public static final String ERROR_MISSING_DATA = "MISSING_DATA"; @@ -80,7 +81,7 @@ public class InvoicePlugin extends AbstractPlugin { if (workitem.getTaskID() == TASK_ERFASSUNG || workitem.getTaskID() == TASK_SACHPRUEFUNG) { // Buchungsperiode auf plausi prüfen if ("workitem".equals(workitem.getType())) { - validateBuchungsperiode(workitem.getItemValueString("invoice.period")); + validateBuchungsperiode(workitem.getItemValueString(ITEM_INVOICE_PERIOD)); } // Cargosoft Kreditorennnummer prüfen validateCargosoftCdtrNumber(workitem); @@ -129,8 +130,8 @@ public class InvoicePlugin extends AbstractPlugin { } // Buchunsperiode - if (!posItem.getItemValueString("invoice.period").trim().isEmpty()) { - validateBuchungsperiode(posItem.getItemValueString("invoice.period")); + if (!posItem.getItemValueString(ITEM_INVOICE_PERIOD).trim().isEmpty()) { + validateBuchungsperiode(posItem.getItemValueString(ITEM_INVOICE_PERIOD)); } } diff --git a/workflow/cargosoft-export-1.0.1.bpmn b/workflow/cargosoft-export-1.0.1.bpmn new file mode 100644 index 0000000..4540c2f --- /dev/null +++ b/workflow/cargosoft-export-1.0.1.bpmn @@ -0,0 +1,674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _subject (txtspacename)]]> + + + application.urlindex.jsf?workitem=$uniqueid + +Das ist eine automatische generierte E-Mail. Bitte nicht auf diese E-Mail antworten. ]]> + + + + + + +Krieger Email + +]]> + + + +application.urlindex.jsf?workitem=$uniqueid +

+Das ist eine automatische generierte E-Mail. Bitte nicht auf diese E-Mail antworten. +

+ +]]> + + + + + + + + StartEvent_1 + IntermediateCatchEvent_29 + Task_6 + BoundaryEvent_1 + IntermediateCatchEvent_26 + EventBasedGateway_3 + IntermediateCatchEvent_1 + EndEvent_2 + IntermediateCatchEvent_27 + Task_1 + EndEvent_1 + Task_2 + IntermediateCatchEvent_2 + + + + SequenceFlow_9 + + + + + + + + + + + + + + + + + numsequencenumber: cdtr.name invoice.number]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_4 + SequenceFlow_28 + SequenceFlow_63 + + + + + + + + + + + + + + + + + + + + numsequencenumber: cdtr.name invoice.number]]> + + + true + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_16 + SequenceFlow_9 + SequenceFlow_27 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cargosoft]]> + + + + + + + + + + + + + + + false + + + + SequenceFlow_63 + SequenceFlow_23 + SequenceFlow_15 + + + DataOutput_1 + + + DataOutput_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + SequenceFlow_1 + SequenceFlow_4 + + + + SequenceFlow_15 + SequenceFlow_38 + SequenceFlow_3 + + + + + + + + + + + + + + SequenceFlow_38 + SequenceFlow_24 + + + + + SequenceFlow_1 + + + + + + + + + + + + + + + + + + + + + numsequencenumber: cdtr.name invoice.number]]> + + + true + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_24 + SequenceFlow_5 + SequenceFlow_29 + + + SequenceFlow_5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + SequenceFlow_3 + SequenceFlow_16 + + + + + + + + SequenceFlow_23 + + + + + + + + + + + SequenceFlow_27 + SequenceFlow_29 + SequenceFlow_28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/workflow/rechnungseingang-de-1.1.3.bpmn b/workflow/rechnungseingang-de-1.1.3.bpmn new file mode 100644 index 0000000..e844854 --- /dev/null +++ b/workflow/rechnungseingang-de-1.1.3.bpmn @@ -0,0 +1,4467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Task_2 + ExclusiveGateway_1 + StartEvent_1 + IntermediateCatchEvent_3 + IntermediateCatchEvent_6 + ExclusiveGateway_4 + IntermediateCatchEvent_27 + Task_14 + EventBasedGateway_1 + Task_13 + IntermediateCatchEvent_30 + Task_10 + IntermediateCatchEvent_5000-20 + IntermediateCatchEvent_31 + IntermediateCatchEvent_13 + EndEvent_4 + EndEvent_5 + IntermediateThrowEvent_3 + IntermediateCatchEvent_19 + + + IntermediateCatchEvent_2 + ExclusiveGateway_6 + IntermediateCatchEvent_5005-20 + Task_5005 + IntermediateCatchEvent_5005-10 + ExclusiveGateway_3 + EndEvent_1 + IntermediateCatchEvent_12 + Task_4 + IntermediateCatchEvent_25 + IntermediateCatchEvent_5005-30 + EventBasedGateway_2 + IntermediateCatchEvent_21 + IntermediateCatchEvent_32 + Task_12 + IntermediateCatchEvent_26 + IntermediateThrowEvent_2 + IntermediateCatchEvent_28 + + + Task_5000 + IntermediateCatchEvent_5000-10 + EventBasedGateway_4 + IntermediateCatchEvent_15 + Task_9 + Task_3 + IntermediateCatchEvent_4 + Task_5 + Task_6 + IntermediateCatchEvent_14 + IntermediateCatchEvent_8 + Task_7 + IntermediateCatchEvent_22 + IntermediateCatchEvent_18 + ExclusiveGateway_2 + IntermediateCatchEvent_20 + IntermediateCatchEvent_17 + EndEvent_2 + IntermediateCatchEvent_23 + Task_11 + EndEvent_3 + IntermediateCatchEvent_24 + IntermediateCatchEvent_7 + Task_8 + IntermediateCatchEvent_29 + IntermediateCatchEvent_16 + IntermediateCatchEvent_33 + + + IntermediateCatchEvent_9 + IntermediateThrowEvent_5 + IntermediateCatchEvent_10 + IntermediateCatchEvent_1 + IntermediateCatchEvent_11 + Task_1 + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_31 + SequenceFlow_1 + SequenceFlow_32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + space.name]]> + + + false + + + + + + + SequenceFlow_46 + SequenceFlow_24 + + + SequenceFlow_0 + SequenceFlow_15 + SequenceFlow_21 + SequenceFlow_33 + + + + SequenceFlow_0 + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_38 + SequenceFlow_34 + SequenceFlow_75 + SequenceFlow_37 + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name + +cargosoft-export-1.0 +1000 +100 +(?!txtworkflowhistory)(^[a-zA-Z]|^_) +]]> + + + + + + + + + + + + false + + + 0 && (parseFloat(a)!=parseFloat(b)) ) { + result.isValid=false; + result.errorMessage="Der Rechnungsbetrag " + a+ " stimmt nicht mit dem Positionsbetrag " + b + " überein."; + }]]> + + + + SequenceFlow_8 + SequenceFlow_51 + + + DataOutput_1 + + + DataOutput_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_38 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_10 + SequenceFlow_41 + + + SequenceFlow_37 + SequenceFlow_8 + SequenceFlow_10 + SequenceFlow_54 + + + + + + + + + + txtlastcomment]]> + + + + + + + + + cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_33 + SequenceFlow_49 + SequenceFlow_20 + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +suggest +false]]> + + + + + + + + + + + + false + + + + + SequenceFlow_22 + SequenceFlow_77 + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_67 + SequenceFlow_56 + SequenceFlow_55 + SequenceFlow_50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + SequenceFlow_67 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_25 + SequenceFlow_44 + SequenceFlow_52 + SequenceFlow_68 + SequenceFlow_47 + + + SequenceFlow_47 + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + SequenceFlow_55 + SequenceFlow_12 + + + + SequenceFlow_24 + SequenceFlow_13 + SequenceFlow_16 + + + workitem['space.team'] && workitem['space.team'][0]!="" + + + !workitem['space.team'] || workitem['space.team'][0]=="" + + + SequenceFlow_18 + SequenceFlow_1 + SequenceFlow_68 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + SequenceFlow_6 + SequenceFlow_18 + + + SequenceFlow_51 + SequenceFlow_16 + SequenceFlow_6 + + + + SequenceFlow_15 + + + + + + + + SequenceFlow_12 + SequenceFlow_53 + SequenceFlow_19 + SequenceFlow_25 + SequenceFlow_4 + + + + + + + + + + + + + + SequenceFlow_19 + SequenceFlow_23 + + + + + + workitem['payment.type'][0]=="direct_debit" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rechnungscontrolling]]> + + + + + + + + + + + + false + + + + SequenceFlow_21 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_13 + SequenceFlow_26 + SequenceFlow_41 + SequenceFlow_11 + SequenceFlow_28 + SequenceFlow_36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_26 + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name]]> + + + + + + + + + sb.team]]> + + + false + + + + + + + SequenceFlow_28 + SequenceFlow_34 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_36 + SequenceFlow_35 + + + SequenceFlow_35 + + + + + + SequenceFlow_39 + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_39 + SequenceFlow_59 + SequenceFlow_40 + + + SequenceFlow_40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + space.name]]> + + + false + + + + SequenceFlow_11 + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_23 + SequenceFlow_45 + SequenceFlow_14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + SequenceFlow_14 + SequenceFlow_42 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_42 + SequenceFlow_3 + SequenceFlow_43 + SequenceFlow_27 + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + SequenceFlow_43 + SequenceFlow_5 + SequenceFlow_44 + + + + + + + + + + SequenceFlow_27 + SequenceFlow_45 + + + + + + + + + + + + + _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 + + + + + SequenceFlow_63 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_17 + SequenceFlow_60 + SequenceFlow_9 + + + SequenceFlow_9 + + + + SequenceFlow_17 + + + + + SequenceFlow_20 + SequenceFlow_65 + SequenceFlow_71 + SequenceFlow_22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich löschen?]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_49 + SequenceFlow_76 + SequenceFlow_48 + + + SequenceFlow_48 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_2 + SequenceFlow_78 + SequenceFlow_72 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_52 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_59 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suggest +false + + gutschriftabgleich-de-1.0 + 5001 + 980 + ]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_65 + SequenceFlow_69 + + + + + + workitem['payment.type'][0]=="credit" + + + + + + + + txtlastcomment]]> + + + + + + + + + cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_69 + SequenceFlow_70 + + + + SequenceFlow_70 + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_4 + SequenceFlow_5 + + + workitem['payment.type'][0]=="no_sepa" + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + $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]]> + + + + + + + + + + + + false + + + + + + + + SequenceFlow_61 + SequenceFlow_63 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_62 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_56 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suggest +false + + rechnungseingang-sachrechnung-de-1.0 + 5001 + 980 + ]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_71 + SequenceFlow_64 + + + + + + + + + txtlastcomment]]> + + + + + + + + + cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_64 + SequenceFlow_66 + + + SequenceFlow_66 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_74 + SequenceFlow_77 + SequenceFlow_46 + SequenceFlow_76 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + + SequenceFlow_74 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_73 + SequenceFlow_75 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_78 + + + + + Es handelt sich um einen SEPA Lauf. Die Rechnung muss explizit freigegeben werden. + +Ändern von IBAN und Fälligkeit ist hier möglich + + + + Die Rechnung wurde sachlich geprüft und genehmigt und kann nun in den Zahlungslauf übergeben werden. + + + + + Datenübergabe an Cargosoft. + +Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export' + + + + + Liegt eine Logistik Leistung vor, wird ein Fachbereich ausgewählt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file