neuer workflow mahnlauf

This commit is contained in:
Ralph Soika 2022-10-05 14:07:33 +02:00
parent 95c3298ac9
commit dae4560a69
11 changed files with 17341 additions and 437 deletions

69
OP_MODULE.md Normal file
View file

@ -0,0 +1,69 @@
Frau Mahner
sollen wir üfung auf Übereinstimmung Zahlugnsbetrag und saldo machen?
Sonder Fall
FM Systemmöbel GmbH & Co. KG
Hallo Frau Beste,
anbei senden wir Ihnen eine OP Beispiel-Datei aus Imixs, welche die offenen Rechnungen enhält. Diese Datei ist analog zu der Datei "OPD28.txt" die Sie täglich von Frau Mahner erhalten.
Diese Datei unterscheidet sich zu der DATEV Datei, welche Frau Mahner bisher schickt, wie folgt:
- Die Datei enthält nur Rechnungen und keine Zahlungseingänge.
- Wir exportieren nur die ersten 12 Spalten (A - L), d.h:
- kein Gegenkonto
- keine Fälligkeit/Zahlungsbedinung
- keine Rechnungsposition
- keine Umsatzsteuer
Wir haben in das Beispiel bewusst einen Sonderfall für den Debitor 180124 eingebaut.
Dieser hat 2 Offenen Rechnungen:
RG-Nr Betrag
180124 2.900,00 EUR
180127 1.600,00 USD (Kurs 1.018102)
Es wurden 2 Teilzahlungen a 500 EUR bzw. USD bezahlt.
Dies stellt sich dann wie folgt dar:
10968 Papierfabrik Wattens GmbH & Co. KG 180124 24082022 23102022 2900 0,00 2400 S 0,000000 0,00
10968 Papierfabrik Wattens GmbH & Co. KG 180127 24082022 23102022 1600 0,00 1100 S USD 1.018102 1571.55
Bitte bestätigen Sie uns das diese Format von Ihnen so verarbeitet werden kann.
Wir improtieren pro Monat und Tag die Rechungen
wir exporiterne aber immer alle offneen Rechnungen egeal von wlecher Period
# Demo
einfach:
-----------
Dieffenbacher GmbH
Drewsen Spezialpapiere GmbH & Co. KG
besonders
-------------
Maersk Deutschland A/S & Co. KG
Papierfabrik Wattens GmbH & Co. KG

View file

@ -258,4 +258,19 @@ public class OPListController implements Serializable {
} }
/**
* Berechnet den gesammten OP Saldo
*
* @return
*/
public double calculateInvoiceSaldo() {
double result = 0;
for (ItemCollection invoice : invoiceList) {
result = result + invoice.getItemValueDouble("invoice.saldo");
}
// rond with 2 digits
return Math.round(result * 100.0) / 100.0;
}
} }

View file

@ -36,341 +36,354 @@ import com.alexanderlogistics.KreditorDebitorService;
* werden. * werden.
* <p> * <p>
* In der Spalte Belegart-4 steht das Fäligkeitsdatum. * In der Spalte Belegart-4 steht das Fäligkeitsdatum.
* * <p>
* Beim Import wird auch der Kreditor geprüft und aus diesem das
* Länderkennzeichen übernommen.
* *
* @version 1.0 * @version 1.0
* @author rsoika * @author rsoika
*/ */
public class DatevCargosoftImportAdapter implements SignalAdapter { public class DatevCargosoftImportAdapter implements SignalAdapter {
private static Logger logger = Logger.getLogger(DatevCargosoftImportAdapter.class.getName()); private static Logger logger = Logger.getLogger(DatevCargosoftImportAdapter.class.getName());
public static final String ENCODING = "ISO-8859-1"; public static final String ENCODING = "ISO-8859-1";
public static final String CHILD_ITEM_PROPERTY = "_ChildItems"; public static final String CHILD_ITEM_PROPERTY = "_ChildItems";
@Inject @Inject
WorkflowService workflowService; WorkflowService workflowService;
@Inject @Inject
DocumentService documentService; DocumentService documentService;
@Inject @Inject
KreditorDebitorService kreditorDebitorService; KreditorDebitorService kreditorDebitorService;
/** /**
* This method finds or create the Datev Export and adds a reference * This method finds or create the Datev Export and adds a reference
* ($workitemref) to the current invoice. * ($workitemref) to the current invoice.
* *
* @throws PluginException * @throws PluginException
*/ */
@Override @Override
public ItemCollection execute(ItemCollection workitem, ItemCollection event) public ItemCollection execute(ItemCollection workitem, ItemCollection event)
throws AdapterException, PluginException { throws AdapterException, PluginException {
logger.info("...parse datev file import..."); logger.info("...parse datev file import...");
try { try {
List<String> log = readData(workitem); List<String> log = readData(workitem);
workitem.setItemValue("import.log", log); workitem.setItemValue("import.log", log);
} catch (ModelException e) { } catch (ModelException e) {
throw new AdapterException(PluginException.class.getSimpleName(), DatevImportAdapter.DATEV_IMPORT_ERROR, throw new AdapterException(PluginException.class.getSimpleName(), DatevImportAdapter.DATEV_IMPORT_ERROR,
"Failed to import datev data!", e); "Failed to import datev data!", e);
} }
return workitem; return workitem;
} }
/** /**
* Liest die datenzeilen ab Zeile 3 aus und bildet worktiems gruppiert nach * Liest die datenzeilen ab Zeile 3 aus und bildet worktiems gruppiert nach
* belegnummer * belegnummer
* *
* <p> * <p>
* Belegfeld-1 ist hier ein eindeutiger Schlüssel für die Erzeugung von * Belegfeld-1 ist hier ein eindeutiger Schlüssel für die Erzeugung von
* Splitbuchungen * Splitbuchungen
* *
* @param document * @param document
* @throws PluginException * @throws PluginException
* @throws ModelException * @throws ModelException
* @throws ProcessingErrorException * @throws ProcessingErrorException
* @throws AccessDeniedException * @throws AccessDeniedException
*/ */
private List<String> readData(ItemCollection workitem) private List<String> readData(ItemCollection workitem)
throws PluginException, AccessDeniedException, ProcessingErrorException, ModelException { throws PluginException, AccessDeniedException, ProcessingErrorException, ModelException {
List<String> logBuffer = new ArrayList<String>(); List<String> logBuffer = new ArrayList<String>();
int line = 0; int line = 0;
int positions = 0; int positions = 0;
int invoices = 0; int invoices = 0;
int dupplicates = 0; int dupplicates = 0;
String dataLine; String dataLine;
// Start Datum Wirtschaftsjahr berechnen (JJJJMMTT) // Start Datum Wirtschaftsjahr berechnen (JJJJMMTT)
String wjBeginn = workitem.getItemValueString("datev.WJ-Beginn"); String wjBeginn = workitem.getItemValueString("datev.WJ-Beginn");
String wjBeginnMonat = wjBeginn.substring(4, 6); String wjBeginnMonat = wjBeginn.substring(4, 6);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
ItemCollection invoiceWorkitem = null; ItemCollection invoiceWorkitem = null;
List<ItemCollection> splitBuchungen = new ArrayList<ItemCollection>(); List<ItemCollection> splitBuchungen = new ArrayList<ItemCollection>();
FileData fileData = workitem.getFileData().get(0); FileData fileData = workitem.getFileData().get(0);
ByteArrayInputStream imputStream = new ByteArrayInputStream(fileData.getContent()); ByteArrayInputStream imputStream = new ByteArrayInputStream(fileData.getContent());
log(logBuffer, "Importdatei: " + fileData.getName()); log(logBuffer, "Importdatei: " + fileData.getName());
try { try {
BufferedReader in = new BufferedReader(new InputStreamReader(imputStream, ENCODING)); BufferedReader in = new BufferedReader(new InputStreamReader(imputStream, ENCODING));
// skip header // skip header
in.readLine(); in.readLine();
in.readLine(); in.readLine();
// read content.... // read content....
line = 0; line = 0;
int blockSize = 0; int blockSize = 0;
while ((dataLine = in.readLine()) != null) { while ((dataLine = in.readLine()) != null) {
line++; line++;
if (blockSize >= 100) { if (blockSize >= 100) {
blockSize = 0; blockSize = 0;
logger.info(line + " entries read...."); logger.info(line + " entries read....");
} }
// alle werte parsen // alle werte parsen
String[] header1List = dataLine.split(";(?=([^\"]*\"[^\"]*\")*[^\"]*$)", 99); String[] header1List = dataLine.split(";(?=([^\"]*\"[^\"]*\")*[^\"]*$)", 99);
if (header1List.length < 6) { if (header1List.length < 6) {
throw new PluginException(DatevCargosoftImportAdapter.class.getName(), throw new PluginException(DatevCargosoftImportAdapter.class.getName(),
DatevImportAdapter.DATEV_IMPORT_ERROR, "Invalid data in line " + line); DatevImportAdapter.DATEV_IMPORT_ERROR, "Invalid data in line " + line);
} }
String belegNummer = DatevImportAdapter.csvVal(header1List[10]); String belegNummer = DatevImportAdapter.csvVal(header1List[10]);
String gegenKonto = DatevImportAdapter.csvVal(header1List[7]); String gegenKonto = DatevImportAdapter.csvVal(header1List[7]);
String text = DatevImportAdapter.csvVal(header1List[13]); String text = DatevImportAdapter.csvVal(header1List[13]);
String buchungsTag = DatevImportAdapter.csvVal(header1List[9]); String buchungsTag = DatevImportAdapter.csvVal(header1List[9]);
// cargosoft laesst gerne die führende 0 weg.... // cargosoft laesst gerne die führende 0 weg....
if (buchungsTag.length() == 3) { if (buchungsTag.length() == 3) {
buchungsTag = "0" + buchungsTag; buchungsTag = "0" + buchungsTag;
} }
// berechne Buchungsdatum DDMM // berechne Buchungsdatum DDMM
String tag = buchungsTag.substring(0, 2); String tag = buchungsTag.substring(0, 2);
String monat = buchungsTag.substring(2, 4); String monat = buchungsTag.substring(2, 4);
String jahr = wjBeginn.substring(0, 4); String jahr = wjBeginn.substring(0, 4);
// compute next year if start of WJ is not January // compute next year if start of WJ is not January
if (Integer.parseInt(wjBeginnMonat) > Integer.parseInt(monat)) { if (Integer.parseInt(wjBeginnMonat) > Integer.parseInt(monat)) {
jahr = Integer.parseInt(jahr + 1) + ""; jahr = Integer.parseInt(jahr + 1) + "";
} }
Date dateBuchung = dateFormatter.parse(jahr + monat + tag); Date dateBuchung = dateFormatter.parse(jahr + monat + tag);
// Fälligkeit // Fälligkeit
Date dueDate = dateFormatter.parse(DatevImportAdapter.csvVal(header1List[23])); Date dueDate = dateFormatter.parse(DatevImportAdapter.csvVal(header1List[23]));
String paymentTerm = DatevImportAdapter.csvVal(header1List[31]); String paymentTerm = DatevImportAdapter.csvVal(header1List[31]);
String waehrung = DatevImportAdapter.csvVal(header1List[2]); String waehrung = DatevImportAdapter.csvVal(header1List[2]);
// kurse // kurse
double kurs = parseBetrag(DatevImportAdapter.csvVal(header1List[3])); double kurs = parseBetrag(DatevImportAdapter.csvVal(header1List[3]));
double basisumsatz = parseBetrag(DatevImportAdapter.csvVal(header1List[4])); double basisumsatz = parseBetrag(DatevImportAdapter.csvVal(header1List[4]));
// Skip Eingangsrechnungen // Skip Eingangsrechnungen
if (!gegenKonto.startsWith("1")) { if (!gegenKonto.startsWith("1")) {
// skip // skip
continue; continue;
} }
positions++; positions++;
logger.info("...read dbtr: " + gegenKonto + " beleg-nr: " + belegNummer); logger.info("...read dbtr: " + gegenKonto + " beleg-nr: " + belegNummer);
// Erzeuge einen Buchungssatz // Erzeuge einen Buchungssatz
ItemCollection dataItemCol = new ItemCollection(); ItemCollection dataItemCol = new ItemCollection();
dataItemCol.setItemValue("datev.text", text); dataItemCol.setItemValue("datev.text", text);
dataItemCol.setItemValue("datev.umsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[0]))); dataItemCol.setItemValue("datev.umsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[0])));
dataItemCol.setItemValue("datev.shzeichen", DatevImportAdapter.csvVal(header1List[1])); dataItemCol.setItemValue("datev.shzeichen", DatevImportAdapter.csvVal(header1List[1]));
dataItemCol.setItemValue("datev.wkz", waehrung); dataItemCol.setItemValue("datev.wkz", waehrung);
dataItemCol.setItemValue("datev.kurs", parseBetrag(DatevImportAdapter.csvVal(header1List[3]))); dataItemCol.setItemValue("datev.kurs", parseBetrag(DatevImportAdapter.csvVal(header1List[3])));
dataItemCol.setItemValue("datev.basisumsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[4]))); dataItemCol.setItemValue("datev.basisumsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[4])));
dataItemCol.setItemValue("datev.konto", DatevImportAdapter.csvVal(header1List[6])); dataItemCol.setItemValue("datev.konto", DatevImportAdapter.csvVal(header1List[6]));
// Haben wir schon eine Invoice Workitem angelegt? // Haben wir schon eine Invoice Workitem angelegt?
if (invoiceWorkitem == null) { if (invoiceWorkitem == null) {
logger.info("...create new workitem...."); logger.info("...create new workitem....");
// erzeuge ein neues // erzeuge ein neues
try { try {
invoiceWorkitem = createEmptyInvoice(belegNummer, text, gegenKonto, dateBuchung, dueDate, invoiceWorkitem = createEmptyInvoice(belegNummer, text, gegenKonto, dateBuchung, dueDate,
paymentTerm, waehrung, kurs, basisumsatz); paymentTerm, waehrung, kurs, basisumsatz);
invoices++; invoices++;
} catch (AdapterException e) { } catch (AdapterException e) {
dupplicates++; dupplicates++;
continue; continue;
} }
} }
// ist es noch die selbe Belegnummer? // ist es noch die selbe Belegnummer?
if (belegNummer.equals(invoiceWorkitem.getItemValueString("invoice.number"))) { if (belegNummer.equals(invoiceWorkitem.getItemValueString("invoice.number"))) {
// adde die Splitbuchung // adde die Splitbuchung
splitBuchungen.add(dataItemCol); splitBuchungen.add(dataItemCol);
logger.info("...add splitbuchung...."); logger.info("...add splitbuchung....");
} else { } else {
logger.info("...close workitem...."); logger.info("...close workitem....");
// nein - also invoice schließen // nein - also invoice schließen
closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen); closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen);
invoiceWorkitem=null; invoiceWorkitem = null;
// neue Splitbuchungstabelle anlegen // neue Splitbuchungstabelle anlegen
splitBuchungen = new ArrayList<ItemCollection>(); splitBuchungen = new ArrayList<ItemCollection>();
// invoice zurücksetzten // invoice zurücksetzten
// erzeuge ein neues // erzeuge ein neues
try { try {
invoiceWorkitem = createEmptyInvoice(belegNummer, text, gegenKonto, dateBuchung, dueDate, invoiceWorkitem = createEmptyInvoice(belegNummer, text, gegenKonto, dateBuchung, dueDate,
paymentTerm, waehrung, kurs, basisumsatz); paymentTerm, waehrung, kurs, basisumsatz);
invoices++; invoices++;
} catch (AdapterException e) { } catch (AdapterException e) {
dupplicates++; dupplicates++;
continue; continue;
} }
splitBuchungen.add(dataItemCol); splitBuchungen.add(dataItemCol);
} }
} // wile end } // wile end
closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen); closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen);
} catch (IOException | ParseException e) { } catch (IOException | ParseException e) {
throw new PluginException(DatevCargosoftImportAdapter.class.getName(), throw new PluginException(DatevCargosoftImportAdapter.class.getName(),
DatevImportAdapter.DATEV_IMPORT_ERROR, "Unable to read file", e); DatevImportAdapter.DATEV_IMPORT_ERROR, "Unable to read file", e);
} }
log(logBuffer, line + " Zeilen eingelesen "); log(logBuffer, line + " Zeilen eingelesen ");
log(logBuffer, positions + " Rechnungspositionen eingelesen "); log(logBuffer, positions + " Rechnungspositionen eingelesen ");
log(logBuffer, invoices + " Rechnungen importiert "); log(logBuffer, invoices + " Rechnungen importiert ");
if (dupplicates > 0) { if (dupplicates > 0) {
log(logBuffer, dupplicates + " Rechnungen wurden übersprungen da diese bereits importiert wurden!"); log(logBuffer, dupplicates + " Rechnungen wurden übersprungen da diese bereits importiert wurden!");
} }
// return log // return log
return logBuffer; return logBuffer;
} }
/** /**
* This method returns a new empty invoice ItemCollection. * This method returns a new empty invoice ItemCollection.
* <p> * <p>
* The method tests if an invoice with this number already exits. If so, the * The method tests if an invoice with this number already exits. If so, the
* method throws a AdapterException * method throws a AdapterException
* *
* @param belegNummer * @param belegNummer
* @param text * @param text
* @param gegenKonto * @param gegenKonto
* @param dateBuchung * @param dateBuchung
* @param dueDate * @param dueDate
* @param paymentTerm * @param paymentTerm
* @param currency * @param currency
* @param kurs * @param kurs
* @param basisUmsatz * @param basisUmsatz
* @return * @return
* @throws AdapterException * @throws AdapterException
*/ */
private ItemCollection createEmptyInvoice(String belegNummer, String text, String gegenKonto, Date dateBuchung, private ItemCollection createEmptyInvoice(String belegNummer, String text, String gegenKonto, Date dateBuchung,
Date dueDate, String paymentTerm, String currency, double kurs, double basisUmsatz) Date dueDate, String paymentTerm, String currency, double kurs, double basisUmsatz)
throws AdapterException { throws AdapterException {
// test if invoice was already imported before // test if invoice was already imported before
String sQuery = "((type:workitem OR type:workitemarchive) AND $modelversion:rechnungsausgang* AND invoice.number:\""+belegNummer+"\")"; String sQuery = "((type:workitem OR type:workitemarchive) AND $modelversion:rechnungsausgang* AND invoice.number:\""
try { + belegNummer + "\")";
// find the textblock... try {
List<ItemCollection> result = documentService.find(sQuery, 1, 0); // find the textblock...
if (result.size() > 0) { List<ItemCollection> result = documentService.find(sQuery, 1, 0);
throw new AdapterException(DatevCargosoftImportAdapter.class.getName(), "DUPPLICATE", if (result.size() > 0) {
"Invoice already imported"); throw new AdapterException(DatevCargosoftImportAdapter.class.getName(), "DUPPLICATE",
} "Invoice already imported");
} catch (QueryException e) { }
logger.warning("failed to search invoices by query: " + e.getMessage()); } catch (QueryException e) {
} logger.warning("failed to search invoices by query: " + e.getMessage());
}
ItemCollection invoiceWorkitem = new ItemCollection(); ItemCollection invoiceWorkitem = new ItemCollection();
invoiceWorkitem.setItemValue("invoice.number", belegNummer); invoiceWorkitem.setItemValue("invoice.number", belegNummer);
invoiceWorkitem.setItemValue("invoice.currency", currency); invoiceWorkitem.setItemValue("invoice.currency", currency);
invoiceWorkitem.setItemValue("invoice.text", text); invoiceWorkitem.setItemValue("invoice.text", text);
invoiceWorkitem.setItemValue("invoice.date", dateBuchung); invoiceWorkitem.setItemValue("invoice.date", dateBuchung);
invoiceWorkitem.setItemValue("dbtr.number", gegenKonto); invoiceWorkitem.setItemValue("dbtr.number", gegenKonto);
invoiceWorkitem.setItemValue("invoice.duedate", dueDate); invoiceWorkitem.setItemValue("invoice.duedate", dueDate);
invoiceWorkitem.setItemValue("invoice.reminder", dueDate); invoiceWorkitem.setItemValue("invoice.reminder", dueDate);
invoiceWorkitem.setItemValue("payment.term", paymentTerm); invoiceWorkitem.setItemValue("payment.term", paymentTerm);
invoiceWorkitem.setItemValue("invoice.rate", kurs); invoiceWorkitem.setItemValue("invoice.rate", kurs);
invoiceWorkitem.setItemValue("invoice.base.amount", basisUmsatz); invoiceWorkitem.setItemValue("invoice.base.amount", basisUmsatz);
return invoiceWorkitem; return invoiceWorkitem;
} }
private void log(List<String> log, String message) { private void log(List<String> log, String message) {
log.add(new Date() + ": " + message+"\n"); log.add(new Date() + ": " + message + "\n");
} }
/** /**
* . entfernen , mit punkt ersetzten * . entfernen , mit punkt ersetzten
* *
* @param value * @param value
* @return * @return
*/ */
public Double parseBetrag(String value) { public Double parseBetrag(String value) {
value = value.replace(".", ""); value = value.replace(".", "");
value = value.replace(",", "."); value = value.replace(",", ".");
return new Double(value); return new Double(value);
} }
/** /**
* Diese Hilfsmethod schließt das Invoice Workitem ab * Diese Hilfsmethod schließt das Invoice Workitem ab
* *
* @throws ModelException * @throws ModelException
* @throws PluginException * @throws PluginException
* @throws ProcessingErrorException * @throws ProcessingErrorException
* @throws AccessDeniedException * @throws AccessDeniedException
*/ */
private void closeInvoiceWorkitem(ItemCollection invoiceWorkitem, List<ItemCollection> splitBuchungen) private void closeInvoiceWorkitem(ItemCollection invoiceWorkitem, List<ItemCollection> splitBuchungen)
throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException { throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException {
if (invoiceWorkitem == null) { if (invoiceWorkitem == null) {
return; // no op return; // no op
} }
// berechne Total: // berechne Total:
double total = 0; double total = 0;
for (ItemCollection zeile : splitBuchungen) { for (ItemCollection zeile : splitBuchungen) {
if ("H".equals(zeile.getItemValueString("datev.shzeichen"))) { if ("H".equals(zeile.getItemValueString("datev.shzeichen"))) {
total = total + zeile.getItemValueDouble("datev.umsatz"); total = total + zeile.getItemValueDouble("datev.umsatz");
} else { } else {
total = total - zeile.getItemValueDouble("datev.umsatz"); total = total - zeile.getItemValueDouble("datev.umsatz");
} }
} }
invoiceWorkitem.setItemValue("invoice.total", total); invoiceWorkitem.setItemValue("invoice.total", total);
invoiceWorkitem.setItemValue("invoice.saldo", total); invoiceWorkitem.setItemValue("invoice.saldo", total);
// implode die Splitbuchungen // implode die Splitbuchungen
implodeChildList(invoiceWorkitem, splitBuchungen); implodeChildList(invoiceWorkitem, splitBuchungen);
// set dbtr.name // set dbtr.name
ItemCollection dbtrItemCol = kreditorDebitorService ItemCollection dbtrItemCol = kreditorDebitorService
.findDebitor(invoiceWorkitem.getItemValueString("dbtr.number")); .findDebitor(invoiceWorkitem.getItemValueString("dbtr.number"));
if (dbtrItemCol != null) { if (dbtrItemCol != null) {
invoiceWorkitem.setItemValue("dbtr.name", dbtrItemCol.getItemValueString("_VENDOR_Name")); invoiceWorkitem.setItemValue("dbtr.name", dbtrItemCol.getItemValueString("_VENDOR_Name"));
} // Anhand der Creditoren Stammdaten errrechnen wir die Sprache für diese
// Rechnung
String country = dbtrItemCol.getItemValueString("_VENDOR_COUNTRY");
invoiceWorkitem.setItemValue("dbtr.country", country);
if (country.isEmpty() || country.equalsIgnoreCase("de") || country.equalsIgnoreCase("ch")
|| country.equalsIgnoreCase("at")) {
invoiceWorkitem.setItemValue("invoice.language", "DE");
} else {
invoiceWorkitem.setItemValue("invoice.language", "EN");
}
}
// Processe die Invoice // Processe die Invoice
invoiceWorkitem.model("rechnungsausgang-de-1.0").task(5001).event(980); invoiceWorkitem.model("rechnungsausgang-de-1.0").task(5001).event(980);
workflowService.processWorkItem(invoiceWorkitem); workflowService.processWorkItem(invoiceWorkitem);
} }
/** /**
* Convert the List of ItemCollections back into a List of Map elements * Convert the List of ItemCollections back into a List of Map elements
* *
* @param workitem * @param workitem
*/ */
@SuppressWarnings({ "rawtypes" }) @SuppressWarnings({ "rawtypes" })
private void implodeChildList(ItemCollection workitem, List<ItemCollection> childItems) { private void implodeChildList(ItemCollection workitem, List<ItemCollection> childItems) {
List<Map> mapOrderItems = new ArrayList<Map>(); List<Map> mapOrderItems = new ArrayList<Map>();
// convert the child ItemCollection elements into a List of Map // convert the child ItemCollection elements into a List of Map
if (childItems != null) { if (childItems != null) {
logger.fine("Convert child items into Map..."); logger.fine("Convert child items into Map...");
// iterate over all order items.. // iterate over all order items..
for (ItemCollection orderItem : childItems) { for (ItemCollection orderItem : childItems) {
mapOrderItems.add(orderItem.getAllItems()); mapOrderItems.add(orderItem.getAllItems());
} }
workitem.replaceItemValue(CHILD_ITEM_PROPERTY, mapOrderItems); workitem.replaceItemValue(CHILD_ITEM_PROPERTY, mapOrderItems);
} }
} }
} }

View file

@ -25,6 +25,10 @@
<th style="text-align: left;">Status</th> <th style="text-align: left;">Status</th>
<th style="text-align: right;">S/H</th> <th style="text-align: right;">S/H</th>
<th style="width: 40px;"></th> <th style="width: 40px;"></th>
<th style="width: 70px; text-align: right;">Kurs</th>
<th style="width: 100px; text-align: right;">Basisumsatz</th>
<th style="width: 100px;">Saldo</th> <th style="width: 100px;">Saldo</th>
<th style="width: 100px;">Zahlbetrag</th> <th style="width: 100px;">Zahlbetrag</th>
<th style=""></th> <th style=""></th>
@ -62,6 +66,14 @@
<td style="text-align:right;"><h:outputText value="#{invoice.item['invoice.rate']}" /></td>
<td style="text-align: right;"><h:outputText
value="#{invoice.item['invoice.base.amount']}" >
<f:convertNumber minFractionDigits="2" locale="de" />
</h:outputText></td>
<!-- Saldo / offene Betrag --> <!-- Saldo / offene Betrag -->
<td style="text-align: right; color: red;"><h:outputText <td style="text-align: right; color: red;"><h:outputText
@ -117,7 +129,7 @@
</strong></td> </strong></td>
<td /> <td />
<td /> <td /><td /><td />
<!-- Payment total --> <!-- Payment total -->
<td style="text-align: right;"><strong> <h:panelGroup <td style="text-align: right;"><strong> <h:panelGroup

View file

@ -0,0 +1,213 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:i="http://java.sun.com/jsf/composite/imixs"
xmlns:marty="http://java.sun.com/jsf/composite/marty">
<!-- Shows the op liste fo rthe current dbtr.number -->
<h:commandScript name="calculateOpSummary"
execute="invoiceRefHolder_ID" render="opcalculater_id" />
<h:panelGroup layout="block" styleClass="imixs-form-section"
id="oplist-table" binding="#{opListContainer}">
<table style="width: 100%; margin: 5px;">
<tr>
<th style="text-align: left;">#{message['form.invoicenumber']}</th>
<th style="text-align: left;">#{message['form.date']}</th>
<th style="text-align: left;">#{message['form.deadline']}</th>
<th style="text-align: left;">Status</th>
<th style="text-align: right;">S/H</th>
<th style="width: 40px;"></th>
<th style="width: 100px;">Offener Saldo</th>
<th style="">Mahnen</th>
</tr>
<ui:param name="invoices"
value="#{opListController.getInvoices(workitem.item['dbtr.number'])}"></ui:param>
<ui:repeat value="#{invoices}" var="invoice">
<tr>
<td><h:link outcome="/pages/workitems/workitem">
#{invoice.item['invoice.number']}
<f:param name="id" value="#{invoice.item['$uniqueid']}" />
</h:link></td>
<td><h:outputText value="#{invoice.item['invoice.date']}">
<f:convertDateTime pattern="#{message.datePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText></td>
<td><h:outputText value="#{invoice.item['invoice.duedate']}">
<f:convertDateTime pattern="#{message.datePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText></td>
<td><h:outputText value="#{invoice.item['$workflowstatus']}" /></td>
<!-- Rechnngsbetrag -->
<td style="text-align: right;"><h:outputText
value="#{invoice.item['invoice.total']}">
<f:convertNumber minFractionDigits="2" locale="de" />
</h:outputText></td>
<td><h:outputText value="#{invoice.item['invoice.currency']}" /></td>
<!-- Saldo / offene Betrag -->
<td style="text-align: right; color: red;"><h:outputText
value="#{invoice.item['invoice.saldo']}">
<f:convertNumber minFractionDigits="2" locale="de" />
</h:outputText></td>
<!-- CheckBox -->
<td style="text-align: center;"><h:selectBooleanCheckbox class="invoice_selector" rendered="#{!readonly}"
value="#{invoice.item['selected']}"
onclick="initInvoicePayment(this)">
<f:ajax event="change" execute="#{opListContainer.clientId}"
listener="#{opListController.updateChildList(workitem)}"
render="#{opListContainer.clientId}"></f:ajax>
</h:selectBooleanCheckbox></td>
</tr>
</ui:repeat>
<tr style="border-top: 1px solid #ccc;">
<td />
<td /><td />
<td><strong>Summary</strong></td>
<!-- Invoice total -->
<td style="text-align: right;"><strong> <h:panelGroup
id="invoice_total">
<h:outputText value="#{opListController.calculateInvoiceTotal()}">
<f:convertNumber minFractionDigits="2" locale="de" />
</h:outputText>
</h:panelGroup>
</strong></td>
<td />
<td style="text-align: right;"><strong> <h:panelGroup
id="invoice_total">
<h:outputText value="#{opListController.calculateInvoiceSaldo()}">
<f:convertNumber minFractionDigits="2" locale="de" />
</h:outputText>
</h:panelGroup>
</strong></td>
<td />
</tr>
</table>
<!-- dieses feld speichert die selection der rechnungen -->
<h:inputTextarea id="invoiceRefHolder_ID"
converter="org.imixs.VectorConverter" class="invoice_selection_list"
style="display:none;" value="#{workitem.itemList['$workitemref']}" />
</h:panelGroup>
<script type="text/javascript">
/*<![CDATA[*/
$(document).ready(
function() {
// update the checkboxes of the stored invoice uniqueIDs
// updateInvoiceSelection();
});
// set the payment amount to the invoice total if the field is still empty
function initInvoicePayment(element) {
console.log('...initInovicePayment...'+element.checked);
var currentTD=$(element).closest('td');
var prevTD=$(currentTD).prev().prev();
var amountValue=$(prevTD).text();
var amountTD=$(currentTD).prev();
//var amountInput=$("input",amountTD);
// wenn wir noch keinen wert dann betrag übernehmen
/* if (element.checked) {
if ($(amountInput).val()=='' || $(amountInput).val()=='0,00') {
$(amountInput).val(amountValue);
}
} else {
// clear value
$(amountInput).val("");
} */
}
// This method refreshs the layout of the invoice checkboxes
function updateInvoiceSelection() {
selection = $('.invoice_selection_list').val();
const selectionArr = selection.split("\n");
for (const invoiceID of selectionArr) {
if (invoiceID && invoiceID!="") {
$("#"+invoiceID).prop('checked', true);//=true;
}
}
// on change handler....
$('input[type="checkbox"].selection_checkbox').change(
function() {
var id = $(this).attr('id');
var check = $(this).prop('checked');
//console.log("Change: " + id + " to " + check);
// get selection
var selection = $('.invoice_selection_list')
.val();
const selectionArr = selection.split("\n");
// selected
if (check) {
selectionArr.push(id);
}
// unselected
if (!check) {
var i = selectionArr.indexOf(id);
selectionArr.splice(i, i);
}
//console.log("new selection=" + selectionArr.join(','));
selection = $('.invoice_selection_list').val(
selectionArr.join('\n'));
// refresh the opcalculator...
calculateOpSummary();
});
}
/*
* Hilfsmethode die nur fur Ajax Events in JSF render verwendet wird
*/
function ajaxUpdateInvoiceSelection(data) {
if (data.status === 'success') {
updateInvoiceSelection();
}
}
/*]]>*/
</script>
</ui:composition>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -14,12 +14,8 @@
<properties> <properties>
<!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
because of resource filtering is enabled we can not use UTF-8 for some strange <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
reasons. When setting sourceEncoding to ISO-8859-1 the special german charcters
works fine
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
-->
<!-- Build Time --> <!-- Build Time -->
<org.imixs.build.timestamp>${maven.build.timestamp}</org.imixs.build.timestamp> <org.imixs.build.timestamp>${maven.build.timestamp}</org.imixs.build.timestamp>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>

View file

@ -0,0 +1,672 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- origin at X=0.0 Y=0.0 -->
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:imixs="http://www.imixs.org/bpmn2" xmlns:tl="http://www.w3.org/2001/XMLSchema" id="Definitions_1" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.4.RC1-v20220528-0836-B1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowmodelversion" type="xs:string">
<imixs:value><![CDATA[mahnlauf-de-1.0]]></imixs:value>
</imixs:item>
<imixs:item name="txtfieldmapping" type="xs:string">
<imixs:value><![CDATA[Prozess-Verantwortliche| namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[Prozess-Assistenz | namprocessassist]]></imixs:value>
<imixs:value><![CDATA[Buchhaltung | namprocessteam]]></imixs:value>
</imixs:item>
<imixs:item name="txttimefieldmapping" type="xs:string">
<imixs:value><![CDATA[Wiedervorlage | datDate]]></imixs:value>
<imixs:value><![CDATA[Start | datFrom]]></imixs:value>
<imixs:value><![CDATA[Ende | datTo]]></imixs:value>
</imixs:item>
<imixs:item name="txtplugins" type="xs:string">
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ResultPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.RulePlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.ProfilePlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.plugins.SequenceNumberPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.team.TeamPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.DeputyPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.OwnerPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.HistoryPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.LogPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ApplicationPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.plugins.CommentPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.MailPlugin]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:signal id="Signal_1" name="com.alexanderlogistics.ZahlungsavisExportAdapter"/>
<bpmn2:signal id="Signal_2" name="com.alexanderlogistics.ZahlungseingangSaldoAdapter"/>
<bpmn2:message id="Message_2" name="HTML-Header">
<bpmn2:documentation id="Documentation_22"><![CDATA[<html>
<head>
<style type="text/css">
html, body, div, p, h1, h2, h3, ul, ol, span, a, table, td, form, img,
li {
font-family: Arial;
font-style: normal;
font-variant: normal;
font-weight: normal;
font-size: 11pt;
}
body {
margin: 0;
padding: 1em;
min-width: 41em;
}
h2 {
font-size: 12pt;
font-weight: bold;
}
th {
border-bottom: 1px solid #ccc;
}
td { border:none;min-width:120px; }
th { font-weight: bold;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><itemvalue>$workflowstatus</itemvalue></title>
</head>
<body>]]></bpmn2:documentation>
</bpmn2:message>
<bpmn2:message id="Message_4" name="HTML-Footer-EN">
<bpmn2:documentation id="Documentation_23"><![CDATA[<p>In case you have already made the payment, please disregard this notice. If you require any information regarding your account, please do not hesitate to contact us.</p>
<p>Thank you for your cooperation.</p>
<p>&nbsp;</p>
<p>Kind regards<br />Alexander Global Logistics GmbH</p>
</body>
</html>]]></bpmn2:documentation>
</bpmn2:message>
<bpmn2:message id="Message_7" name="Html-Footer-DE"/>
<bpmn2:collaboration id="Collaboration_1" name="Zahlungseingang">
<bpmn2:participant id="Participant_1" name="Mahnlauf" processRef="Process_1"/>
<bpmn2:participant id="Participant_2" name="SEPA-Export Pool" processRef="eingangsrechnung-de"/>
</bpmn2:collaboration>
<bpmn2:process id="eingangsrechnung-de" name="SEPA-Export" isExecutable="false"/>
<bpmn2:process id="Process_1" name="Mahnlauf" definitionalCollaborationRef="Collaboration_1" isExecutable="false">
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
<bpmn2:lane id="Lane_1" name="Buchhaltung">
<bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>EndEvent_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_6</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>ExclusiveGateway_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>ExclusiveGateway_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_2</bpmn2:flowNodeRef>
</bpmn2:lane>
</bpmn2:laneSet>
<bpmn2:startEvent id="StartEvent_1" name="Start">
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:task id="Task_2" imixs:processid="1900" name="Versendet">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd. MM.yyyy">$lasteventdate</itemvalue> - <itemvalue>payment.total</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="keyaddreadfields" type="xs:string"/>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-mail||||typcn-tick,imixs-success]]></imixs:value>
</imixs:item>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic_read]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitemarchive]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowabstract" type="CDATA">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="namaddreadaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_4"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:sequenceFlow id="SequenceFlow_10" sourceRef="Task_2" targetRef="EndEvent_3"/>
<bpmn2:endEvent id="EndEvent_3" name="End">
<bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:task id="Task_1" imixs:processid="1000" name="Erfassung">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd. MM.yyyy">$lasteventdate</itemvalue> - <itemvalue>payment.total</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value>
</imixs:item>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[alexander/form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-mail||]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string">
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddreadfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="txtworkflowabstract" type="CDATA">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="namaddreadaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
<imixs:item name="namaddwriteaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_3"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_6" imixs:activityid="10" name="Speichern">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_10"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_6" sourceRef="IntermediateCatchEvent_6" targetRef="Task_2"/>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="10" name="Speichern">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_12"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_14" sourceRef="IntermediateCatchEvent_3" targetRef="Task_1"/>
<bpmn2:sequenceFlow id="SequenceFlow_4" sourceRef="StartEvent_1" targetRef="Task_1"/>
<bpmn2:dataObject id="DataObject_1" name="Form">
<bpmn2:documentation id="Documentation_17"><![CDATA[<?xml version="1.0"?>
<imixs-form>
<imixs-form-section columns="2">
<item name="dbtr.number" type="text" required="true" label="Debitor:" />
<item name="name" type="textarea" label="Bemerkung:" />
</imixs-form-section>
<imixs-form-section label="Offene Posten" path="alexander/section_opliste_mahnlauf" readonly="false" />
</imixs-form>]]></bpmn2:documentation>
<bpmn2:dataState id="DataState_1"/>
</bpmn2:dataObject>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" imixs:activityid="20" name="Senden">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value><![CDATA[]]></imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Zahlungseingang abgeschlossen und Rechnungen abgeglichen.]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_1"><![CDATA[Zahlungseingang abschließen und Rechnungen abgleichen]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
<bpmn2:outputSet id="OutputSet_2" name="Output Set 2"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_2" sourceRef="Task_1" targetRef="IntermediateCatchEvent_1"/>
<bpmn2:exclusiveGateway id="ExclusiveGateway_1" gatewayDirection="Diverging">
<bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
<bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" imixs:activityid="151" name="[Mail DE]">
<bpmn2:extensionElements>
<imixs:item name="rtfmailbody" type="CDATA">
<imixs:value><![CDATA[<bpmn2:message>Html-Header</bpmn2:message>
<textblock>E-Mail - Erinnerung (DE)</textblock>
<p>
<table>
<theader>
<tr>
<th>Rechnungsnummer</th>
<th>Datum</th>
<th>Fälligkeit</th>
<th>Rechnungsbetrag</th>
<th>Saldo</th>
</tr>
</theader>
<tbody>
<td><itemvalue>invoice.number</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.date</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.duedate</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.saldo</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
</tr>
</tbody>
</table>
</p>
<bpmn2:message>Html-Footer-DE</bpmn2:message>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Mahnung]]></imixs:value>
</imixs:item>
<imixs:item name="nammailreceiver" type="xs:string">
<imixs:value><![CDATA[ralph.soika@imixs.com]]></imixs:value>
<imixs:value><![CDATA[gaby.heinle@imixs.com]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
<bpmn2:messageEventDefinition id="MessageEventDefinition_1"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" imixs:activityid="152" name="[Mail EN]">
<bpmn2:extensionElements>
<imixs:item name="rtfmailbody" type="CDATA">
<imixs:value><![CDATA[<bpmn2:message>Html-Header</bpmn2:message>
<textblock>E-Mail - Erinnerung (EN)</textblock>
<p>
<table>
<theader>
<tr>
<th>Invoice Number</th>
<th>Date</th>
<th>Due Date</th>
<th>Invoice Amount</th>
<th>Balance</th>
</tr>
</theader>
<tbody>
<td><itemvalue>invoice.number</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.date</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.duedate</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.saldo</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
</tr>
</tbody>
</table>
</p>
<bpmn2:message>Html-Footer-EN</bpmn2:message>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Mahnung]]></imixs:value>
</imixs:item>
<imixs:item name="nammailreceiver" type="xs:string">
<imixs:value><![CDATA[ralph.soika@imixs.com]]></imixs:value>
<imixs:value><![CDATA[gaby.heinle@imixs.com]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
<bpmn2:messageEventDefinition id="MessageEventDefinition_2"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="IntermediateCatchEvent_1" targetRef="ExclusiveGateway_1"/>
<bpmn2:sequenceFlow id="SequenceFlow_8" sourceRef="ExclusiveGateway_1" targetRef="IntermediateCatchEvent_2">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" id="FormalExpression_1">workitem['invoice.language'] &amp;&amp; workitem['invoice.language'][0]==&quot;DE&quot; </bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_9" sourceRef="ExclusiveGateway_1" targetRef="IntermediateCatchEvent_4"/>
<bpmn2:exclusiveGateway id="ExclusiveGateway_2" gatewayDirection="Converging">
<bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="SequenceFlow_11" sourceRef="IntermediateCatchEvent_2" targetRef="ExclusiveGateway_2"/>
<bpmn2:sequenceFlow id="SequenceFlow_12" sourceRef="IntermediateCatchEvent_4" targetRef="ExclusiveGateway_2"/>
<bpmn2:sequenceFlow id="SequenceFlow_15" sourceRef="ExclusiveGateway_2" targetRef="Task_2"/>
<bpmn2:association id="Association_2" sourceRef="DataObject_1" targetRef="Task_1"/>
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1">
<bpmndi:BPMNShape id="BPMNShape_Participant_1" bpmnElement="Participant_1" isHorizontal="true">
<dc:Bounds height="361.0" width="1181.0" x="100.0" y="150.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_29" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="51.0" width="14.0" x="106.0" y="305.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
<dc:Bounds height="361.0" width="1151.0" x="130.0" y="150.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_37" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="69.0" width="14.0" x="136.0" y="296.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1" bpmnElement="StartEvent_1">
<dc:Bounds height="36.0" width="36.0" x="180.0" y="301.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="25.0" x="185.0" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
<dc:Bounds height="50.0" width="110.0" x="290.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_4" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="55.0" x="317.0" y="312.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_EndEvent_2" bpmnElement="EndEvent_3">
<dc:Bounds height="36.0" width="36.0" x="920.0" y="301.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_85" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="22.0" x="927.0" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_2" bpmnElement="Task_2">
<dc:Bounds height="50.0" width="110.0" x="680.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="55.0" x="707.0" y="312.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_6" bpmnElement="IntermediateCatchEvent_6">
<dc:Bounds height="36.0" width="36.0" x="717.0" y="392.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_10" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="56.0" x="707.0" y="428.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_3" bpmnElement="IntermediateCatchEvent_3">
<dc:Bounds height="36.0" width="36.0" x="327.0" y="392.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_21" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="56.0" x="317.0" y="428.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_DataObject_1" bpmnElement="DataObject_1">
<dc:Bounds height="50.0" width="36.0" x="290.0" y="188.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_13">
<dc:Bounds height="14.0" width="28.0" x="294.0" y="238.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_1" bpmnElement="IntermediateCatchEvent_1">
<dc:Bounds height="36.0" width="36.0" x="430.0" y="301.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_2" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="43.0" x="427.0" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_ExclusiveGateway_1" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="480.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_18" labelStyle="BPMNLabelStyle_1"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_2" bpmnElement="IntermediateCatchEvent_2">
<dc:Bounds height="36.0" width="36.0" x="550.0" y="237.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_19" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="49.0" x="544.0" y="273.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_4" bpmnElement="IntermediateCatchEvent_4">
<dc:Bounds height="36.0" width="36.0" x="550.0" y="350.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_20" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="49.0" x="544.0" y="386.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_ExclusiveGateway_2" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="605.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_30" labelStyle="BPMNLabelStyle_1"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Message_1" bpmnElement="Message_2">
<dc:Bounds height="20.0" width="30.0" x="119.0" y="59.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_35">
<dc:Bounds height="14.0" width="78.0" x="95.0" y="79.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Message_2" bpmnElement="Message_4">
<dc:Bounds height="20.0" width="30.0" x="230.0" y="59.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_39">
<dc:Bounds height="28.0" width="80.0" x="205.0" y="79.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Message_4" bpmnElement="Message_7">
<dc:Bounds height="20.0" width="30.0" x="344.0" y="59.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_40">
<dc:Bounds height="28.0" width="69.0" x="325.0" y="79.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_EndEvent_2">
<di:waypoint xsi:type="dc:Point" x="790.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="855.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="920.0" y="319.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_26"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="BPMNShape_IntermediateCatchEvent_6" targetElement="BPMNShape_Task_2">
<di:waypoint xsi:type="dc:Point" x="735.0" y="392.0"/>
<di:waypoint xsi:type="dc:Point" x="735.0" y="368.0"/>
<di:waypoint xsi:type="dc:Point" x="735.0" y="344.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_14"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_Task_1">
<di:waypoint xsi:type="dc:Point" x="345.0" y="392.0"/>
<di:waypoint xsi:type="dc:Point" x="345.0" y="368.0"/>
<di:waypoint xsi:type="dc:Point" x="345.0" y="344.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_22"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
<di:waypoint xsi:type="dc:Point" x="216.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="253.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="290.0" y="319.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_11"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_Association_2" bpmnElement="Association_2" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_1">
<di:waypoint xsi:type="dc:Point" x="326.0" y="213.0"/>
<di:waypoint xsi:type="dc:Point" x="345.0" y="213.0"/>
<di:waypoint xsi:type="dc:Point" x="345.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_IntermediateCatchEvent_1">
<di:waypoint xsi:type="dc:Point" x="400.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="415.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="430.0" y="319.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_16"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="BPMNShape_IntermediateCatchEvent_1" targetElement="BPMNShape_ExclusiveGateway_1">
<di:waypoint xsi:type="dc:Point" x="466.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="473.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="480.0" y="319.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_23"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="BPMNShape_ExclusiveGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint xsi:type="dc:Point" x="505.0" y="294.0"/>
<di:waypoint xsi:type="dc:Point" x="505.0" y="255.0"/>
<di:waypoint xsi:type="dc:Point" x="550.0" y="255.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_25"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="BPMNShape_ExclusiveGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_4">
<di:waypoint xsi:type="dc:Point" x="505.0" y="344.0"/>
<di:waypoint xsi:type="dc:Point" x="505.0" y="368.0"/>
<di:waypoint xsi:type="dc:Point" x="550.0" y="368.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_28"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_ExclusiveGateway_2">
<di:waypoint xsi:type="dc:Point" x="586.0" y="255.0"/>
<di:waypoint xsi:type="dc:Point" x="630.0" y="255.0"/>
<di:waypoint xsi:type="dc:Point" x="630.0" y="294.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_32"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="BPMNShape_IntermediateCatchEvent_4" targetElement="BPMNShape_ExclusiveGateway_2">
<di:waypoint xsi:type="dc:Point" x="586.0" y="368.0"/>
<di:waypoint xsi:type="dc:Point" x="630.0" y="368.0"/>
<di:waypoint xsi:type="dc:Point" x="630.0" y="344.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_33"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_Task_2">
<di:waypoint xsi:type="dc:Point" x="655.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="667.0" y="319.0"/>
<di:waypoint xsi:type="dc:Point" x="680.0" y="319.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_34"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
<dc:Font name="arial" size="9.0"/>
</bpmndi:BPMNLabelStyle>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>

View file

@ -121,22 +121,10 @@ th { font-weight: bold;}
<bpmn2:flowNodeRef>IntermediateThrowEvent_9</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_9</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_8</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_8</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_14</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_7</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>EndEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_15</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_11</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_1</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_2</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_5005-10</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_5005-10</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_5</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_5005</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>Task_5005</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_10</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_25</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_11</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_11</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_7</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_7</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>ExclusiveGateway_4</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>ExclusiveGateway_4</bpmn2:flowNodeRef>
@ -144,6 +132,17 @@ th { font-weight: bold;}
<bpmn2:flowNodeRef>IntermediateCatchEvent_9</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_9</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>ExclusiveGateway_6</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>ExclusiveGateway_6</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_5</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_5</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_25</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_7</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>EndEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_15</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_11</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_10</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_4</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_14</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Fälligkeit]"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Fälligkeit]">
@ -271,7 +270,6 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
</bpmn2:extensionElements> </bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_6"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation> <bpmn2:documentation id="Documentation_6"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_38</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_43</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_43</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
<bpmn2:outgoing>SequenceFlow_50</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_50</bpmn2:outgoing>
@ -1279,7 +1277,7 @@ result.isValid=true;
<imixs:value><![CDATA[]]></imixs:value> <imixs:value><![CDATA[]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value> <imixs:value><![CDATA[<item name="action">home</item>]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="txtname" type="xs:string"> <imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value> <imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
@ -1329,7 +1327,7 @@ result.isValid=true;
</bpmn2:exclusiveGateway> </bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="SequenceFlow_13" sourceRef="ExclusiveGateway_2" targetRef="Task_5"/> <bpmn2:sequenceFlow id="SequenceFlow_13" sourceRef="ExclusiveGateway_2" targetRef="Task_5"/>
<bpmn2:sequenceFlow id="SequenceFlow_18" sourceRef="Task_1" targetRef="ExclusiveGateway_3"/> <bpmn2:sequenceFlow id="SequenceFlow_18" sourceRef="Task_1" targetRef="ExclusiveGateway_3"/>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_14" imixs:activityid="15" name="Mahnen"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_14" imixs:activityid="15" name="[Mahnlauf]">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="keyarchive" type="xs:string"> <imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value> <imixs:value><![CDATA[0]]></imixs:value>
@ -1403,7 +1401,7 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
<bpmn2:outputSet id="OutputSet_5" name="Output Set 3"/> <bpmn2:outputSet id="OutputSet_5" name="Output Set 3"/>
<bpmn2:messageEventDefinition id="MessageEventDefinition_1"/> <bpmn2:signalEventDefinition id="SignalEventDefinition_1"/>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_24" sourceRef="Task_5005" targetRef="IntermediateCatchEvent_14"/> <bpmn2:sequenceFlow id="SequenceFlow_24" sourceRef="Task_5005" targetRef="IntermediateCatchEvent_14"/>
<bpmn2:sequenceFlow id="SequenceFlow_29" sourceRef="IntermediateCatchEvent_14" targetRef="Task_3"/> <bpmn2:sequenceFlow id="SequenceFlow_29" sourceRef="IntermediateCatchEvent_14" targetRef="Task_3"/>
@ -1718,52 +1716,6 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmn2:linkEventDefinition id="LinkEventDefinition_14" name="Link Event Definition 5"/> <bpmn2:linkEventDefinition id="LinkEventDefinition_14" name="Link Event Definition 5"/>
</bpmn2:intermediateThrowEvent> </bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="SequenceFlow_28" sourceRef="Task_3" targetRef="IntermediateThrowEvent_11"/> <bpmn2:sequenceFlow id="SequenceFlow_28" sourceRef="Task_3" targetRef="IntermediateThrowEvent_11"/>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5" imixs:activityid="25" name="Mail Test">
<bpmn2:extensionElements>
<imixs:item name="rtfmailbody" type="CDATA">
<imixs:value><![CDATA[<bpmn2:message>Html-Header</bpmn2:message>
<textblock>E-Mail - Erinnerung (EN)</textblock>
<p>
<table>
<theader>
<tr>
<th>Rechnungsnummer</th>
<th>Datum</th>
<th>Fälligkeit</th>
<th>Rechnungsbetrag</th>
<th>Saldo</th>
</tr>
</theader>
<tbody>
<td><itemvalue>invoice.number</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.date</itemvalue></td>
<td style="text-align:center;"><itemvalue format="dd.MM.yyyy">invoice.duedate</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
<td style="text-align:right;"><itemvalue format="#,###,##0.00" locale="de_DE">invoice.saldo</itemvalue> <itemvalue>invoice.currency</itemvalue></td>
</tr>
</tbody>
</table>
</p>
<bpmn2:message>Html-Footer-EN</bpmn2:message>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Mahnung]]></imixs:value>
</imixs:item>
<imixs:item name="nammailreceiver" type="xs:string">
<imixs:value><![CDATA[ralph.soika@imixs.com]]></imixs:value>
<imixs:value><![CDATA[gaby.heinle@imixs.com]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_22" sourceRef="IntermediateCatchEvent_5" targetRef="Task_5005"/>
<bpmn2:eventBasedGateway id="EventBasedGateway_2" gatewayDirection="Diverging"> <bpmn2:eventBasedGateway id="EventBasedGateway_2" gatewayDirection="Diverging">
<bpmn2:incoming>SequenceFlow_46</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_46</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
@ -1771,7 +1723,7 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmn2:eventBasedGateway> </bpmn2:eventBasedGateway>
<bpmn2:sequenceFlow id="SequenceFlow_32" sourceRef="EventBasedGateway_2" targetRef="IntermediateCatchEvent_5000-20"/> <bpmn2:sequenceFlow id="SequenceFlow_32" sourceRef="EventBasedGateway_2" targetRef="IntermediateCatchEvent_5000-20"/>
<bpmn2:sequenceFlow id="SequenceFlow_34" sourceRef="Task_1" targetRef="IntermediateCatchEvent_1"/> <bpmn2:sequenceFlow id="SequenceFlow_34" sourceRef="Task_1" targetRef="IntermediateCatchEvent_1"/>
<bpmn2:exclusiveGateway id="ExclusiveGateway_4" gatewayDirection="Diverging"> <bpmn2:exclusiveGateway id="ExclusiveGateway_4" gatewayDirection="Diverging" default="SequenceFlow_36">
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
<bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing>
@ -1870,7 +1822,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmn2:outgoing>SequenceFlow_41</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_41</bpmn2:outgoing>
<bpmn2:messageEventDefinition id="MessageEventDefinition_4"/> <bpmn2:messageEventDefinition id="MessageEventDefinition_4"/>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_35" sourceRef="ExclusiveGateway_4" targetRef="IntermediateCatchEvent_9"/> <bpmn2:sequenceFlow id="SequenceFlow_35" sourceRef="ExclusiveGateway_4" targetRef="IntermediateCatchEvent_9">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" id="FormalExpression_2">workitem['invoice.language'] &amp;&amp; workitem['invoice.language'][0]==&quot;DE&quot; </bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_36" sourceRef="ExclusiveGateway_4" targetRef="IntermediateCatchEvent_10"/> <bpmn2:sequenceFlow id="SequenceFlow_36" sourceRef="ExclusiveGateway_4" targetRef="IntermediateCatchEvent_10"/>
<bpmn2:exclusiveGateway id="ExclusiveGateway_6" gatewayDirection="Converging"> <bpmn2:exclusiveGateway id="ExclusiveGateway_6" gatewayDirection="Converging">
<bpmn2:incoming>SequenceFlow_37</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming>
@ -1996,15 +1950,15 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_4" bpmnElement="Task_4"> <bpmndi:BPMNShape id="BPMNShape_Task_4" bpmnElement="Task_4">
<dc:Bounds height="50.0" width="110.0" x="809.0" y="904.0"/> <dc:Bounds height="50.0" width="110.0" x="1204.0" y="903.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_88" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_88" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="65.0" x="831.0" y="922.0"/> <dc:Bounds height="14.0" width="65.0" x="1226.0" y="921.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_EndEvent_1" bpmnElement="EndEvent_1"> <bpmndi:BPMNShape id="BPMNShape_EndEvent_1" bpmnElement="EndEvent_1">
<dc:Bounds height="36.0" width="36.0" x="1005.0" y="911.0"/> <dc:Bounds height="36.0" width="36.0" x="1400.0" y="910.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_92" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_92" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="29.0" x="1008.0" y="947.0"/> <dc:Bounds height="14.0" width="29.0" x="1403.0" y="946.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_8" bpmnElement="Task_8"> <bpmndi:BPMNShape id="BPMNShape_Task_8" bpmnElement="Task_8">
@ -2048,21 +2002,21 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_30" bpmnElement="IntermediateCatchEvent_25"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_30" bpmnElement="IntermediateCatchEvent_25">
<dc:Bounds height="36.0" width="36.0" x="846.0" y="988.0"/> <dc:Bounds height="36.0" width="36.0" x="1241.0" y="987.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_132" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_132" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="56.0" x="836.0" y="1024.0"/> <dc:Bounds height="14.0" width="56.0" x="1231.0" y="1023.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_6" bpmnElement="Task_3"> <bpmndi:BPMNShape id="BPMNShape_Task_6" bpmnElement="Task_3">
<dc:Bounds height="50.0" width="110.0" x="525.0" y="903.0"/> <dc:Bounds height="50.0" width="110.0" x="920.0" y="902.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="65.0" x="547.0" y="921.0"/> <dc:Bounds height="14.0" width="65.0" x="942.0" y="920.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_9" bpmnElement="IntermediateCatchEvent_4"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_9" bpmnElement="IntermediateCatchEvent_4">
<dc:Bounds height="36.0" width="36.0" x="562.0" y="988.0"/> <dc:Bounds height="36.0" width="36.0" x="957.0" y="987.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_6" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_6" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="56.0" x="552.0" y="1024.0"/> <dc:Bounds height="14.0" width="56.0" x="947.0" y="1023.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_17" bpmnElement="IntermediateCatchEvent_12"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_17" bpmnElement="IntermediateCatchEvent_12">
@ -2086,15 +2040,15 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_43" labelStyle="BPMNLabelStyle_1"/> <bpmndi:BPMNLabel id="BPMNLabel_43" labelStyle="BPMNLabelStyle_1"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_14" bpmnElement="IntermediateCatchEvent_14"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_14" bpmnElement="IntermediateCatchEvent_14">
<dc:Bounds height="36.0" width="36.0" x="439.0" y="911.0"/> <dc:Bounds height="36.0" width="36.0" x="608.0" y="911.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_48" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_48" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="45.0" x="435.0" y="947.0"/> <dc:Bounds height="14.0" width="57.0" x="598.0" y="947.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_19" bpmnElement="IntermediateCatchEvent_15"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_19" bpmnElement="IntermediateCatchEvent_15">
<dc:Bounds height="36.0" width="36.0" x="704.0" y="910.0"/> <dc:Bounds height="36.0" width="36.0" x="1099.0" y="909.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_51" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_51" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="45.0" x="700.0" y="946.0"/> <dc:Bounds height="14.0" width="45.0" x="1095.0" y="945.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_21" bpmnElement="IntermediateCatchEvent_17"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_21" bpmnElement="IntermediateCatchEvent_17">
@ -2122,9 +2076,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_4" bpmnElement="IntermediateThrowEvent_4"> <bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_4" bpmnElement="IntermediateThrowEvent_4">
<dc:Bounds height="36.0" width="36.0" x="501.0" y="1031.0"/> <dc:Bounds height="36.0" width="36.0" x="860.0" y="1020.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_8" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="28.0" width="121.0" x="459.0" y="1067.0"/> <dc:Bounds height="28.0" width="121.0" x="818.0" y="1056.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_ExclusiveGateway_5" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true"> <bpmndi:BPMNShape id="BPMNShape_ExclusiveGateway_5" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true">
@ -2150,9 +2104,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_7" bpmnElement="IntermediateThrowEvent_7"> <bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_7" bpmnElement="IntermediateThrowEvent_7">
<dc:Bounds height="36.0" width="36.0" x="880.0" y="838.0"/> <dc:Bounds height="36.0" width="36.0" x="1275.0" y="837.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_38" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_38" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="28.0" width="121.0" x="838.0" y="874.0"/> <dc:Bounds height="28.0" width="121.0" x="1233.0" y="873.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_8" bpmnElement="IntermediateThrowEvent_8"> <bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_8" bpmnElement="IntermediateThrowEvent_8">
@ -2174,15 +2128,15 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_10" bpmnElement="IntermediateThrowEvent_10"> <bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_10" bpmnElement="IntermediateThrowEvent_10">
<dc:Bounds height="36.0" width="36.0" x="1005.0" y="989.0"/> <dc:Bounds height="36.0" width="36.0" x="1400.0" y="988.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_56" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_56" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="51.0" x="998.0" y="1025.0"/> <dc:Bounds height="14.0" width="51.0" x="1393.0" y="1024.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_11" bpmnElement="IntermediateThrowEvent_11"> <bpmndi:BPMNShape id="BPMNShape_IntermediateThrowEvent_11" bpmnElement="IntermediateThrowEvent_11">
<dc:Bounds height="36.0" width="36.0" x="651.0" y="1030.0"/> <dc:Bounds height="36.0" width="36.0" x="1046.0" y="1029.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_66" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_66" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="51.0" x="644.0" y="1066.0"/> <dc:Bounds height="14.0" width="51.0" x="1039.0" y="1065.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Message_1" bpmnElement="Message_2"> <bpmndi:BPMNShape id="BPMNShape_Message_1" bpmnElement="Message_2">
@ -2197,12 +2151,6 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<dc:Bounds height="28.0" width="69.0" x="211.0" y="80.0"/> <dc:Bounds height="28.0" width="69.0" x="211.0" y="80.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_7" bpmnElement="IntermediateCatchEvent_5">
<dc:Bounds height="36.0" width="36.0" x="151.0" y="810.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_74" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="48.0" x="145.0" y="846.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Message_3" bpmnElement="Message_6"> <bpmndi:BPMNShape id="BPMNShape_Message_3" bpmnElement="Message_6">
<dc:Bounds height="20.0" width="30.0" x="345.0" y="60.0"/> <dc:Bounds height="20.0" width="30.0" x="345.0" y="60.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_76"> <bpmndi:BPMNLabel id="BPMNLabel_76">
@ -2277,9 +2225,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_59"/> <bpmndi:BPMNLabel id="BPMNLabel_59"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_40" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_1"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_40" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_1">
<di:waypoint xsi:type="dc:Point" x="919.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="1314.0" y="928.0"/>
<di:waypoint xsi:type="dc:Point" x="962.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="1357.0" y="928.0"/>
<di:waypoint xsi:type="dc:Point" x="1005.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="1400.0" y="928.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_95"/> <bpmndi:BPMNLabel id="BPMNLabel_95"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="BPMNShape_Task_8" targetElement="BPMNShape_EndEvent_3"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="BPMNShape_Task_8" targetElement="BPMNShape_EndEvent_3">
@ -2301,10 +2249,10 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_130"/> <bpmndi:BPMNLabel id="BPMNLabel_130"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_59" sourceElement="BPMNShape_IntermediateCatchEvent_30" targetElement="BPMNShape_Task_4"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_59" sourceElement="BPMNShape_IntermediateCatchEvent_30" targetElement="BPMNShape_Task_4">
<di:waypoint xsi:type="dc:Point" x="864.0" y="988.0"/> <di:waypoint xsi:type="dc:Point" x="1241.0" y="1005.0"/>
<di:waypoint xsi:type="dc:Point" x="864.0" y="971.0"/> <di:waypoint xsi:type="dc:Point" x="1194.0" y="1005.0"/>
<di:waypoint xsi:type="dc:Point" x="845.0" y="971.0"/> <di:waypoint xsi:type="dc:Point" x="1194.0" y="936.0"/>
<di:waypoint xsi:type="dc:Point" x="845.0" y="954.0"/> <di:waypoint xsi:type="dc:Point" x="1204.0" y="936.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_133"/> <bpmndi:BPMNLabel id="BPMNLabel_133"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_61" bpmnElement="SequenceFlow_60" sourceElement="BPMNShape_IntermediateCatchEvent_29" targetElement="BPMNShape_Task_8"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_61" bpmnElement="SequenceFlow_60" sourceElement="BPMNShape_IntermediateCatchEvent_29" targetElement="BPMNShape_Task_8">
@ -2314,9 +2262,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_134"/> <bpmndi:BPMNLabel id="BPMNLabel_134"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_3" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_6"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_3" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_6">
<di:waypoint xsi:type="dc:Point" x="580.0" y="988.0"/> <di:waypoint xsi:type="dc:Point" x="975.0" y="987.0"/>
<di:waypoint xsi:type="dc:Point" x="580.0" y="971.0"/> <di:waypoint xsi:type="dc:Point" x="975.0" y="970.0"/>
<di:waypoint xsi:type="dc:Point" x="580.0" y="953.0"/> <di:waypoint xsi:type="dc:Point" x="975.0" y="952.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_11"/> <bpmndi:BPMNLabel id="BPMNLabel_11"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_19" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_17"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_19" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_17">
@ -2371,28 +2319,29 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_24" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_IntermediateCatchEvent_14"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_24" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_IntermediateCatchEvent_14">
<di:waypoint xsi:type="dc:Point" x="414.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="414.0" y="929.0"/>
<di:waypoint xsi:type="dc:Point" x="426.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="511.0" y="929.0"/>
<di:waypoint xsi:type="dc:Point" x="439.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="608.0" y="929.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_49"/> <bpmndi:BPMNLabel id="BPMNLabel_49"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_29" sourceElement="BPMNShape_IntermediateCatchEvent_14" targetElement="BPMNShape_Task_6"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_29" sourceElement="BPMNShape_IntermediateCatchEvent_14" targetElement="BPMNShape_Task_6">
<di:waypoint xsi:type="dc:Point" x="475.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="644.0" y="929.0"/>
<di:waypoint xsi:type="dc:Point" x="500.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="782.0" y="929.0"/>
<di:waypoint xsi:type="dc:Point" x="500.0" y="919.0"/> <di:waypoint xsi:type="dc:Point" x="782.0" y="918.0"/>
<di:waypoint xsi:type="dc:Point" x="525.0" y="919.0"/> <di:waypoint xsi:type="dc:Point" x="920.0" y="918.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_50"/> <bpmndi:BPMNLabel id="BPMNLabel_50"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_30" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateCatchEvent_19"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_30" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateCatchEvent_19">
<di:waypoint xsi:type="dc:Point" x="635.0" y="919.0"/> <di:waypoint xsi:type="dc:Point" x="1030.0" y="918.0"/>
<di:waypoint xsi:type="dc:Point" x="669.0" y="919.0"/> <di:waypoint xsi:type="dc:Point" x="1064.0" y="918.0"/>
<di:waypoint xsi:type="dc:Point" x="669.0" y="928.0"/> <di:waypoint xsi:type="dc:Point" x="1064.0" y="927.0"/>
<di:waypoint xsi:type="dc:Point" x="704.0" y="928.0"/> <di:waypoint xsi:type="dc:Point" x="1099.0" y="927.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_53"/> <bpmndi:BPMNLabel id="BPMNLabel_53"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_31" sourceElement="BPMNShape_IntermediateCatchEvent_19" targetElement="BPMNShape_Task_4"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_31" sourceElement="BPMNShape_IntermediateCatchEvent_19" targetElement="BPMNShape_Task_4">
<di:waypoint xsi:type="dc:Point" x="740.0" y="928.0"/> <di:waypoint xsi:type="dc:Point" x="1135.0" y="927.0"/>
<di:waypoint xsi:type="dc:Point" x="774.0" y="928.0"/> <di:waypoint xsi:type="dc:Point" x="1169.0" y="927.0"/>
<di:waypoint xsi:type="dc:Point" x="809.0" y="929.0"/> <di:waypoint xsi:type="dc:Point" x="1169.0" y="919.0"/>
<di:waypoint xsi:type="dc:Point" x="1204.0" y="919.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_54"/> <bpmndi:BPMNLabel id="BPMNLabel_54"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_39" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_EventBasedGateway_1"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_39" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_EventBasedGateway_1">
@ -2453,9 +2402,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_2"/> <bpmndi:BPMNLabel id="BPMNLabel_2"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateThrowEvent_4"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateThrowEvent_4">
<di:waypoint xsi:type="dc:Point" x="525.0" y="936.0"/> <di:waypoint xsi:type="dc:Point" x="920.0" y="935.0"/>
<di:waypoint xsi:type="dc:Point" x="519.0" y="936.0"/> <di:waypoint xsi:type="dc:Point" x="878.0" y="935.0"/>
<di:waypoint xsi:type="dc:Point" x="519.0" y="1031.0"/> <di:waypoint xsi:type="dc:Point" x="878.0" y="1020.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_12"/> <bpmndi:BPMNLabel id="BPMNLabel_12"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_8" sourceElement="BPMNShape_IntermediateCatchEvent_21" targetElement="BPMNShape_ExclusiveGateway_5"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_8" sourceElement="BPMNShape_IntermediateCatchEvent_21" targetElement="BPMNShape_ExclusiveGateway_5">
@ -2497,9 +2446,9 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_37"/> <bpmndi:BPMNLabel id="BPMNLabel_37"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_16" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_IntermediateThrowEvent_7"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_16" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_IntermediateThrowEvent_7">
<di:waypoint xsi:type="dc:Point" x="864.0" y="904.0"/> <di:waypoint xsi:type="dc:Point" x="1240.0" y="903.0"/>
<di:waypoint xsi:type="dc:Point" x="864.0" y="856.0"/> <di:waypoint xsi:type="dc:Point" x="1240.0" y="855.0"/>
<di:waypoint xsi:type="dc:Point" x="880.0" y="856.0"/> <di:waypoint xsi:type="dc:Point" x="1275.0" y="855.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_40"/> <bpmndi:BPMNLabel id="BPMNLabel_40"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_17" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateThrowEvent_8"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_17" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateThrowEvent_8">
@ -2521,24 +2470,18 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
<bpmndi:BPMNLabel id="BPMNLabel_52"/> <bpmndi:BPMNLabel id="BPMNLabel_52"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_26" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_IntermediateThrowEvent_10"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_26" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_IntermediateThrowEvent_10">
<di:waypoint xsi:type="dc:Point" x="882.0" y="954.0"/> <di:waypoint xsi:type="dc:Point" x="1314.0" y="936.0"/>
<di:waypoint xsi:type="dc:Point" x="882.0" y="1007.0"/> <di:waypoint xsi:type="dc:Point" x="1357.0" y="936.0"/>
<di:waypoint xsi:type="dc:Point" x="1005.0" y="1007.0"/> <di:waypoint xsi:type="dc:Point" x="1357.0" y="1006.0"/>
<di:waypoint xsi:type="dc:Point" x="1400.0" y="1006.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_65"/> <bpmndi:BPMNLabel id="BPMNLabel_65"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_28" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateThrowEvent_11"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_28" sourceElement="BPMNShape_Task_6" targetElement="BPMNShape_IntermediateThrowEvent_11">
<di:waypoint xsi:type="dc:Point" x="635.0" y="936.0"/> <di:waypoint xsi:type="dc:Point" x="1030.0" y="935.0"/>
<di:waypoint xsi:type="dc:Point" x="669.0" y="936.0"/> <di:waypoint xsi:type="dc:Point" x="1064.0" y="935.0"/>
<di:waypoint xsi:type="dc:Point" x="669.0" y="1030.0"/> <di:waypoint xsi:type="dc:Point" x="1064.0" y="1029.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_68"/> <bpmndi:BPMNLabel id="BPMNLabel_68"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="BPMNShape_IntermediateCatchEvent_7" targetElement="BPMNShape_Task_2">
<di:waypoint xsi:type="dc:Point" x="187.0" y="828.0"/>
<di:waypoint xsi:type="dc:Point" x="245.0" y="828.0"/>
<di:waypoint xsi:type="dc:Point" x="245.0" y="916.0"/>
<di:waypoint xsi:type="dc:Point" x="304.0" y="916.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_75"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_32" sourceElement="BPMNShape_EventBasedGateway_2" targetElement="BPMNShape_IntermediateCatchEvent_2"> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_32" sourceElement="BPMNShape_EventBasedGateway_2" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint xsi:type="dc:Point" x="363.0" y="410.0"/> <di:waypoint xsi:type="dc:Point" x="363.0" y="410.0"/>
<di:waypoint xsi:type="dc:Point" x="363.0" y="446.0"/> <di:waypoint xsi:type="dc:Point" x="363.0" y="446.0"/>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- origin at X=0.0 Y=0.0 --> <!-- origin at X=0.0 Y=0.0 -->
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:imixs="http://www.imixs.org/bpmn2" xmlns:tl="http://www.w3.org/2001/XMLSchema" id="Definitions_1" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.3.Final-v20210519-2007-B1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2"> <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:imixs="http://www.imixs.org/bpmn2" xmlns:tl="http://www.w3.org/2001/XMLSchema" id="Definitions_1" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.4.RC1-v20220528-0836-B1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="txtworkflowmodelversion" type="xs:string"> <imixs:item name="txtworkflowmodelversion" type="xs:string">
<imixs:value><![CDATA[zahlungseingang-de-1.0]]></imixs:value> <imixs:value><![CDATA[zahlungseingang-de-1.0]]></imixs:value>
@ -144,7 +144,7 @@ result.isValid=true;
<bpmn2:task id="Task_2" imixs:processid="1900" name="Gebucht"> <bpmn2:task id="Task_2" imixs:processid="1900" name="Gebucht">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string"> <imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd. MM.yyyy">$lasteventdate</itemvalue> - <itemvalue>payment.total</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value> <imixs:value><![CDATA[<itemvalue format="dd.MM.yyyy">payment.date</itemvalue> - <itemvalue>payment.amount</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean"> <imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value> <imixs:value>true</imixs:value>
@ -186,7 +186,7 @@ result.isValid=true;
<bpmn2:task id="Task_1" imixs:processid="1000" name="Erfassung"> <bpmn2:task id="Task_1" imixs:processid="1000" name="Erfassung">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string"> <imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd. MM.yyyy">$lasteventdate</itemvalue> - <itemvalue>payment.total</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value> <imixs:value><![CDATA[<itemvalue format="dd.MM.yyyy">payment.date</itemvalue> - <itemvalue>payment.amount</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="txteditorid" type="xs:string"> <imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[alexander/form_basic]]></imixs:value> <imixs:value><![CDATA[alexander/form_basic]]></imixs:value>
@ -224,7 +224,7 @@ result.isValid=true;
<bpmn2:task id="Task_6" imixs:processid="1800" name="Storniert"> <bpmn2:task id="Task_6" imixs:processid="1800" name="Storniert">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string"> <imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd. MM.yyyy">$lasteventdate</itemvalue> - <itemvalue>payment.total</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value> <imixs:value><![CDATA[<itemvalue format="dd.MM.yyyy">payment.date</itemvalue> - <itemvalue>payment.amount</itemvalue> <itemvalue>payment.currency</itemvalue> (<itemvalue>dbtr.number</itemvalue> - <itemvalue>dbtr.name</itemvalue>)]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean"> <imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value> <imixs:value>true</imixs:value>
@ -385,9 +385,15 @@ result.isValid=true;
<bpmn2:dataObject id="DataObject_1" name="Form"> <bpmn2:dataObject id="DataObject_1" name="Form">
<bpmn2:documentation id="Documentation_17"><![CDATA[<?xml version="1.0"?> <bpmn2:documentation id="Documentation_17"><![CDATA[<?xml version="1.0"?>
<imixs-form> <imixs-form>
<imixs-form-section columns="2" label="Zahlungsdaten"> <imixs-form-section columns="2" >
<item name="name" type="text" required="true" label="Referenz:" />
<item name="dbtr.number" type="text" required="true" label="Debitor:" /> <item name="dbtr.number" type="text" required="true" label="Debitor:" />
<item name="payment.date" type="date" required="true" label="Datum:" />
</imixs-form-section>
<imixs-form-section>
<item name="name" type="text" required="true" label="Referenz:" />
</imixs-form-section>
<imixs-form-section columns="2" >
<item name="payment.amount" type="currency" required="true" label="Zahlbetrag:" /> <item name="payment.amount" type="currency" required="true" label="Zahlbetrag:" />
<item name="payment.currency" type="selectOneMenu" required="true" options="EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD" label="Währung:" /> <item name="payment.currency" type="selectOneMenu" required="true" options="EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD" label="Währung:" />
</imixs-form-section> </imixs-form-section>
@ -574,7 +580,7 @@ result.isValid=true;
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_1" bpmnElement="IntermediateCatchEvent_1"> <bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_1" bpmnElement="IntermediateCatchEvent_1">
<dc:Bounds height="36.0" width="36.0" x="760.0" y="237.0"/> <dc:Bounds height="36.0" width="36.0" x="760.0" y="237.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_2"> <bpmndi:BPMNLabel id="BPMNLabel_2" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="14.0" width="68.0" x="744.0" y="273.0"/> <dc:Bounds height="14.0" width="68.0" x="744.0" y="273.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>