diff --git a/IMIXS_JOURNAL.md b/IMIXS_JOURNAL.md new file mode 100644 index 0000000..15e7ce4 --- /dev/null +++ b/IMIXS_JOURNAL.md @@ -0,0 +1,148 @@ +Ich habe 2 SQL Datenbank tabellen mit Umsatzinformationen. Hier Beispieldaten: + +# select \* from journal_accounting; + +id | amount | baseamount | currency | date | exchangerate | reference | type +----+------------+------------+----------+------------+--------------+---------------------------------------------------------------------------+------------------ +27 | 2202.0000 | | EUR | 2025-02-12 | | c530a7aa-52c5-4dcf-be62-fd8946c4050b | Rechnungsausgang +28 | 13445.2800 | | EUR | 2025-02-17 | | 5c8fa50b-22fc-4f3f-b302-bb46842bb69e | Rechnungsausgang +29 | 3080.0000 | | EUR | 2025-03-06 | | c0e966a5-5a0d-45a7-9413-eeffadd0ea27 | Rechnungsausgang +30 | 20730.0000 | | EUR | 2025-02-17 | | c554aacd-b096-4102-aebf-a0cf5023d159 | Rechnungsausgang +31 | 370.0000 | | EUR | 2025-03-04 | | 69666156-dd0f-40cc-9f84-543c69e3a534 | Rechnungsausgang +32 | 1957.6800 | | EUR | 2025-03-10 | | 8522399b-e953-47e9-b18e-f9cfbc6565b0 | Rechnungsausgang +33 | 225.0000 | 220.7400 | USD | 2025-03-07 | 1.019307 | 0528bc9f-b0d9-4079-a89a-af2c978f141d | Rechnungsausgang +38 | 2806.9600 | | EUR | 2025-02-18 | | 9d0929a9-1790-4001-bce1-fb376a8032aa | Rechnungsausgang + +# select \* from journal_accounting_attribute; + +id | key | value | journalaccounting_id +-----+-------------+------------------------------------------+---------------------- +1 | space.name | | 1 +2 | dbtr.name | SHANGHAI AS. DEV. PROSP. INT LOG. Co.Ltd | 1 +3 | dbtr.number | D18516 | 1 +4 | dbtr.name | SHANGHAI AS. DEV. PROSP. INT LOG. Co.Ltd | 2 +5 | space.name | | 2 +6 | dbtr.number | D18516 | 2 +7 | dbtr.number | D16571 | 3 +8 | space.name | | 3 +9 | dbtr.name | Bixwood AB | 3 + +Wie würdest Du ein Select Statement erstellen, das alle Umsätze pro Firma pro Währung nach Datum aufschlüsselt? + +# Umsätze Nach Firma + +SELECT +ja.date, +ja.currency, +jaa.value AS "Firma", +COALESCE(jab.value, '') AS "Firmennummer", +SUM(ja.amount) AS "Gesamtbetrag" +FROM +journal_accounting ja +LEFT JOIN +journal_accounting_attribute jaa ON ja.id = jaa.journalaccounting_id AND jaa.key = 'dbtr.name' +LEFT JOIN +journal_accounting_attribute jab ON ja.id = jab.journalaccounting_id AND jab.key = 'dbtr.number' +WHERE +jaa.key IN ('dbtr.name', 'dbtr.number') +GROUP BY +ja.date, +ja.currency, +jaa.value, +jab.value +ORDER BY +ja.date, +ja.currency, +jaa.value; + +# Umsätze nach Firma und Monat + +SELECT +DATE_TRUNC('month', ja.date) AS "Monat", +ja.currency, +jaa.value AS "Firma", +SUM(ja.amount) AS "Gesamtbetrag" +FROM +journal_accounting ja +LEFT JOIN +journal_accounting_attribute jaa ON ja.id = jaa.journalaccounting_id AND jaa.key = 'dbtr.name' +WHERE +jaa.key IN ('dbtr.name') +GROUP BY +"Monat", +ja.currency, +jaa.value +ORDER BY +"Monat", +ja.currency, +jaa.value; + +# Nur nach Monat + +SELECT +DATE_TRUNC('month', ja.date) AS "Monat", +SUM(ja.amount) AS "Gesamtbetrag" +FROM +journal_accounting ja +WHERE +ja.type = 'Rechnungsausgang' +GROUP BY +"Monat" +ORDER BY +"Monat"; +Monat | Gesamtbetrag +------------------------+-------------- +2025-02-01 00:00:00+00 | 39184.2400 +2025-03-01 00:00:00+00 | 5407.6800 + +# Java Impl + +```java +import org.imixs.workflow.office.journal.JournalAccounting; +import org.imixs.workflow.office.journal.JournalAccounting_; +import org.imixs.workflow.office.journal.QJournalAccounting; +import java.time.LocalDate; +import java.util.List; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.TemporalType; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + +public class JournalAccountingRepository { + + private final EntityManager entityManager; + + public JournalAccountingRepository(EntityManager entityManager) { + this.entityManager = entityManager; + } + + public List findByMonth() { + CriteriaBuilder cb = entityManager.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Object[].class); + Root root = cq.from(JournalAccounting.class); + + // Define the projection + cq.multiselect( + cb.function("DATE_TRUNC", LocalDate.class, root.get(JournalAccounting_.date), cb.literal("MONTH")), + cb.sum(root.get(JournalAccounting_.amount)) + ); + + // Define the where clause + Predicate predicate = cb.equal(root.get(JournalAccounting_.type), "Rechnungsausgang"); + cq.where(predicate); + + // Define the group by clause + cq.groupBy(root.get(JournalAccounting_.date).as(LocalDate.class)); + + // Order by month + cq.orderBy(cb.asc(root.get(JournalAccounting_.date).as(LocalDate.class))); + + TypedQuery query = entityManager.createQuery(cq); + return query.getResultList(); + } +} +``` diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccounting.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccounting.java index 7e156ae..0695dce 100644 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccounting.java +++ b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccounting.java @@ -5,6 +5,8 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; +import org.imixs.workflow.ItemCollection; + import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -42,6 +44,15 @@ public class JournalAccounting { @Column() private String reference; + @Column() + private String workflowGroup; + + @Column() + private String modelVersion; + + @Column() + private int taskId; + @Temporal(TemporalType.DATE) @Column(nullable = false) private Date date; @@ -56,10 +67,16 @@ public class JournalAccounting { public JournalAccounting() { } - public JournalAccounting(BigDecimal amount, String type, Date entryDate) { - this.amount = amount; - this.type = type; - this.date = entryDate; + public JournalAccounting(ItemCollection workitem) { + updateWorkitem(workitem); + } + + public void updateWorkitem(ItemCollection workitem) { + this.reference = workitem.getUniqueID(); + this.workflowGroup = workitem.getWorkflowGroup(); + this.modelVersion = workitem.getModelVersion(); + this.taskId = workitem.getTaskID(); + this.type = workitem.getType(); } // Helper methods for attribute management @@ -138,6 +155,30 @@ public class JournalAccounting { this.reference = businessProcessReference; } + public String getWorkflowGroup() { + return workflowGroup; + } + + public void setWorkflowGroup(String workflowGroup) { + this.workflowGroup = workflowGroup; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + public int getTaskId() { + return taskId; + } + + public void setTaskId(int taskId) { + this.taskId = taskId; + } + public Date getDate() { return date; } diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccountingService.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccountingService.java index 8cc9625..14e1f19 100644 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccountingService.java +++ b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/journal/JournalAccountingService.java @@ -46,6 +46,7 @@ import jakarta.enterprise.event.Observes; import jakarta.inject.Inject; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; +import jakarta.persistence.TypedQuery; /** * Der BusinessPartnerService stellt Methoden für den Zugriff auf Business @@ -92,8 +93,7 @@ public class JournalAccountingService { if (WorkflowEvent.WORKITEM_AFTER_PROCESS == workflowEvent.getEventType()) { // create / update? - if (workitem.getModelVersion().startsWith("rechnungsausgang-") - || workitem.getModelVersion().startsWith("rechnungsausgang-")) { + if (workitem.getModelVersion().startsWith("rechnungsausgang-")) { processInvoice(workitem); } @@ -106,23 +106,22 @@ public class JournalAccountingService { /** * Process an invoice workitem - creates or updates accounting entry + * + * The reference is the uniqueId of the invoice. */ private void processInvoice(ItemCollection workitem) { - String businessProcessRef = workitem.getUniqueID(); // Try to find existing entry - JournalAccounting accounting = findAccountingEntryByBusinessRef(businessProcessRef, - workitem.getWorkflowGroup()); + JournalAccounting accounting = findAccountingEntryByInvoice(workitem.getUniqueID()); // Create new or update existing if (accounting == null) { - accounting = new JournalAccounting(); - accounting.setReference(businessProcessRef); - accounting.setType(workitem.getWorkflowGroup()); + accounting = new JournalAccounting(workitem); + } else { + accounting.updateWorkitem(workitem); } // Update/set values - accounting.setDate(workitem.getItemValueDate("invoice.date")); BigDecimal amount = BigDecimal.valueOf(workitem.getItemValueDouble("invoice.total")) @@ -169,31 +168,29 @@ public class JournalAccountingService { List paymentDetails = InvoiceUtil.explodeChildList(workitem, "payment.details"); for (ItemCollection payment : paymentDetails) { + // load the invoice document String invoiceRef = payment.getItemValueString("$uniqueid"); - BigDecimal amount = BigDecimal.valueOf(payment.getItemValueDouble("payment.amount")) + ItemCollection invoice = documentService.load(invoiceRef); + + BigDecimal amount = BigDecimal.valueOf(-payment.getItemValueDouble("payment.amount")) .setScale(2, RoundingMode.HALF_UP); // Find existing payment entry or create new one - String paymentBusinessRef = workitem.getUniqueID() + "-" + invoiceRef; - JournalAccounting accounting = findAccountingEntryByBusinessRef(paymentBusinessRef, - workitem.getWorkflowGroup()); - + JournalAccounting accounting = findAccountingEntryByPaymentReference(invoice.getUniqueID(), + workitem.getUniqueID()); if (accounting == null) { - accounting = new JournalAccounting(); - accounting.setReference(paymentBusinessRef); - accounting.setType(workitem.getWorkflowGroup()); + accounting = new JournalAccounting(workitem); + } else { + // update + accounting.updateWorkitem(workitem); } + // set reference to invoice + accounting.setReference(invoice.getUniqueID()); + // Update payment values accounting.setDate(workitem.getItemValueDate("payment.date")); - // Find the related invoice entry - JournalAccounting invoiceEntry = findAccountingEntryByBusinessRef(invoiceRef, "Rechnungsausgang"); - if (invoiceEntry != null) { - accounting.addAttribute("Invoice-Ref", invoiceEntry.getReference()); - } - - ItemCollection invoice = documentService.load(invoiceRef); accounting.setCurrency(invoice.getItemValueString("invoice.currency")); accounting.setAmount(amount); // foreign currency @@ -215,6 +212,7 @@ public class JournalAccountingService { // Update attributes // Clear and add attributes (or use selective update if needed) accounting.getAttributes().clear(); + accounting.addAttribute("payment.reference", workitem.getUniqueID()); accounting.addAttribute("dbtr.name", workitem.getItemValueString("dbtr.name")); accounting.addAttribute("dbtr.number", workitem.getItemValueString("dbtr.number")); accounting.addAttribute("space.name", workitem.getItemValueString("space.name")); @@ -231,19 +229,42 @@ public class JournalAccountingService { /** * Find an accounting entry by its business process reference */ - private JournalAccounting findAccountingEntryByBusinessRef(String businessProcessRef, String type) { + private JournalAccounting findAccountingEntryByInvoice(String uniqueId) { try { return entityManager.createQuery( "SELECT a FROM JournalAccounting a " + - "WHERE a.reference = :ref " + - "AND a.type = :type", + "WHERE a.reference = :ref ", JournalAccounting.class) - .setParameter("ref", businessProcessRef) - .setParameter("type", type) + .setParameter("ref", uniqueId) .getSingleResult(); } catch (Exception e) { // No result found return null; } } + + /** + * Find an invoice accounting entry pointing to a given payment reference + * + * @param invoiceReference + * @param paymentReference + * @return + */ + public JournalAccounting findAccountingEntryByPaymentReference(String invoiceReference, String paymentReference) { + try { + String jpql = "SELECT account FROM JournalAccounting account " + + "JOIN account.attributes atr " + + "WHERE account.reference = :reference " + + "AND atr.key = 'payment.reference' AND atr.value = :paymentReference"; + + TypedQuery query = entityManager.createQuery(jpql, JournalAccounting.class); + query.setParameter("reference", invoiceReference); + query.setParameter("paymentReference", paymentReference); + + return query.getSingleResult(); + } catch (Exception e) { + // No result found + return null; + } + } } diff --git a/workflow/pl/rechnungseingang-sachrechnung-pl-1.0.3.bpmn b/workflow/pl/rechnungseingang-sachrechnung-pl-1.0.3.bpmn new file mode 100644 index 0000000..d658186 --- /dev/null +++ b/workflow/pl/rechnungseingang-sachrechnung-pl-1.0.3.bpmn @@ -0,0 +1,5409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Task_2 + ExclusiveGateway_1 + StartEvent_1 + IntermediateCatchEvent_3 + IntermediateCatchEvent_13 + IntermediateCatchEvent_6 + IntermediateCatchEvent_24 + IntermediateCatchEvent_7 + EndEvent_3 + Task_8 + IntermediateCatchEvent_19 + IntermediateThrowEvent_3 + IntermediateCatchEvent_5000-20 + EventBasedGateway_1 + IntermediateCatchEvent_36 + IntermediateThrowEvent_6 + IntermediateCatchEvent_40 + IntermediateThrowEvent_7 + + DataObject_2 + + + Task_6 + IntermediateCatchEvent_15 + Task_15 + IntermediateThrowEvent_1 + IntermediateCatchEvent_9 + IntermediateCatchEvent_11 + Task_7 + EventBasedGateway_4 + IntermediateCatchEvent_31 + IntermediateCatchEvent_5 + Task_9 + IntermediateCatchEvent_10 + IntermediateThrowEvent_5 + IntermediateCatchEvent_16 + Task_5 + IntermediateCatchEvent_1 + IntermediateCatchEvent_20 + IntermediateCatchEvent_22 + ExclusiveGateway_2 + IntermediateCatchEvent_29 + EndEvent_4 + IntermediateCatchEvent_12 + IntermediateCatchEvent_23 + IntermediateCatchEvent_28 + IntermediateCatchEvent_18 + IntermediateCatchEvent_14 + Task_1 + IntermediateCatchEvent_26 + Task_14 + Task_10 + Task_11 + ExclusiveGateway_4 + IntermediateCatchEvent_34 + IntermediateCatchEvent_35 + IntermediateCatchEvent_17 + EndEvent_2 + IntermediateCatchEvent_37 + IntermediateCatchEvent_38 + IntermediateCatchEvent_39 + Task_12 + IntermediateCatchEvent_41 + IntermediateCatchEvent_42 + + event_AQYumg + DataObject_3 + + + IntermediateCatchEvent_21 + Task_3 + IntermediateCatchEvent_25 + EventBasedGateway_2 + IntermediateCatchEvent_5005-20 + Task_4 + Task_5005 + EndEvent_1 + IntermediateCatchEvent_4 + ExclusiveGateway_3 + IntermediateCatchEvent_8 + IntermediateCatchEvent_27 + IntermediateCatchEvent_5005-10 + IntermediateThrowEvent_4 + IntermediateThrowEvent_2 + IntermediateCatchEvent_2 + IntermediateCatchEvent_32 + EventBasedGateway_3 + IntermediateCatchEvent_33 + + DataObject_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home + + stop + false + +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_46 + SequenceFlow_1 + + + SequenceFlow_0 + SequenceFlow_15 + SequenceFlow_21 + SequenceFlow_33 + + + + + + + SequenceFlow_0 + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_38 + SequenceFlow_42 + SequenceFlow_63 + SequenceFlow_71 + SequenceFlow_37 + SequenceFlow_66 + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_8 + SequenceFlow_55 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_38 + + + + + + SequenceFlow_37 + SequenceFlow_8 + SequenceFlow_54 + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgcdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_33 + SequenceFlow_20 + SequenceFlow_22 + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + + SequenceFlow_20 + + + + + + SequenceFlow_15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +false + + start + false +]]> + + + + + + + + + + + + false + + + + SequenceFlow_21 + + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_59 + SequenceFlow_7 + SequenceFlow_40 + + + SequenceFlow_40 + + + + + + + + + + + + cdtr.name invoice.number]]> + + + + + + + + + cdtr.name +Rechnungsnummer: invoice.number +Betrag: invoice.total invoice.currency + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + + + + SequenceFlow_54 + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + 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_22 + SequenceFlow_46 + SequenceFlow_49 + SequenceFlow_78 + SequenceFlow_83 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich löschen? + + stop + false + +cancel]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_49 + SequenceFlow_48 + + + SequenceFlow_48 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_59 + + + + + + + + + + + + + + cdtr.name invoice.number]]> + + + + + + + + + cdtr.name +Rechnungsnummer: invoice.number +Betrag: invoice.total invoice.currency + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich archivieren?]]> + + + + + + + + + + + + false + + + + + + + + SequenceFlow_68 + SequenceFlow_7 + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_3 + SequenceFlow_6 + SequenceFlow_2 + SequenceFlow_39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_4 + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_4 + SequenceFlow_75 + SequenceFlow_23 + SequenceFlow_47 + + + + + + SequenceFlow_23 + SequenceFlow_18 + SequenceFlow_19 + SequenceFlow_64 + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_19 + SequenceFlow_12 + SequenceFlow_27 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_18 + SequenceFlow_28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_24 + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_24 + SequenceFlow_27 + SequenceFlow_31 + SequenceFlow_56 + SequenceFlow_26 + SequenceFlow_61 + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_28 + SequenceFlow_43 + SequenceFlow_62 + SequenceFlow_12 + SequenceFlow_57 + sequenceFlow_00jhXg + + + + + + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_31 + SequenceFlow_29 + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + + + + + + + + + SequenceFlow_56 + SequenceFlow_30 + + + + + SequenceFlow_29 + SequenceFlow_30 + SequenceFlow_35 + SequenceFlow_5 + SequenceFlow_10 + + + + + + + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_34 + SequenceFlow_35 + SequenceFlow_16 + SequenceFlow_74 + SequenceFlow_79 + SequenceFlow_32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_34 + + + SequenceFlow_32 + + + + + + + + + + workitem['payment.type'][0]=="direct_debit" + + + + + + + + + + + + sepa-export-manual-pl-3.0 +1000 +payment.type +70 +20]]> + + + SequenceFlow_5 + SequenceFlow_50 + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_50 + SequenceFlow_81 + SequenceFlow_51 + sequenceFlow_z0r1uQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + SequenceFlow_51 + SequenceFlow_13 + + + + + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_53 + SequenceFlow_13 + SequenceFlow_36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_53 + + + + + + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_10 + SequenceFlow_80 + SequenceFlow_11 + + + + + + workitem['payment.type'][0]=="no_sepa" + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + SequenceFlow_11 + SequenceFlow_36 + SequenceFlow_16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +space.name +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_39 + SequenceFlow_41 + + + + + + SequenceFlow_1 + SequenceFlow_41 + SequenceFlow_42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_43 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich löschen?]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_26 + SequenceFlow_25 + + + SequenceFlow_25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + SequenceFlow_44 + + + + + + + + txtlastcomment +numsequencenumber_sub]]> + + + + + + + + + numsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_44 + SequenceFlow_58 + SequenceFlow_45 + + + SequenceFlow_45 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_57 + SequenceFlow_58 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_61 + SequenceFlow_62 + + + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_47 + SequenceFlow_63 + + + + + + + + + SequenceFlow_70 + + + + + SequenceFlow_67 + + + + + SequenceFlow_65 + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_64 + SequenceFlow_65 + + + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home + + start + false +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_66 + SequenceFlow_67 + + + + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_69 + SequenceFlow_70 + + + SequenceFlow_2 + SequenceFlow_68 + SequenceFlow_69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_71 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_72 + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_72 + SequenceFlow_85 + SequenceFlow_73 + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + SequenceFlow_73 + SequenceFlow_74 + + + + + + + + + + + + + SequenceFlow_55 + SequenceFlow_75 + SequenceFlow_76 + + + + + + + workitem['payment.type'][0]=="credit" + + + + SequenceFlow_77 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home +false +Wollen Sie den Vorgang wirklich archivieren? + + stop + false + +cancel]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_78 + SequenceFlow_77 + + + + + + + + + SequenceFlow_79 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_81 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + stop + false + + + rechnungseingang-pl-1.0 + 5000 + 990 + ]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_83 + SequenceFlow_82 + + + SequenceFlow_82 + + + + + + + + + + + + + + + + txtlastcomment]]> + + + + + + + + + _imgnumsequencenumber: cdtr.name invoice.number (invoice.currency invoice.total) space.name]]> + + + true + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_76 + SequenceFlow_86 + SequenceFlow_84 + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_84 + SequenceFlow_85 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + false + + + + SequenceFlow_86 + + + + + + + + + + + + + + + + + + + + + + + payment.type ]]> + + + + + + sequenceFlow_z0r1uQ + sequenceFlow_00jhXg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +