update op liste export kw

This commit is contained in:
Ralph Soika 2024-04-18 14:16:58 +02:00
parent e66b3add86
commit e9665bf27c
6 changed files with 110 additions and 84 deletions

View file

@ -28,6 +28,9 @@ public class InvoiceUtil {
public static final String CHILD_ITEM_PROPERTY = "_ChildItems"; public static final String CHILD_ITEM_PROPERTY = "_ChildItems";
public static final String ITEM_INVOICE_PERIOD = "invoice.period"; public static final String ITEM_INVOICE_PERIOD = "invoice.period";
public static final String ITEM_INVOICE_POSITIONS = "invoice.positions"; public static final String ITEM_INVOICE_POSITIONS = "invoice.positions";
public static final String ITEM_CDTR_NUMBER = "cdtr.number";
public static final String ITEM_CDTR_NAME = "cdtr.name";
public static final String ITEM_CDTR_NAME_CARGOSOFT = "cdtr.name.cargosoft";
public static double round(double value) { public static double round(double value) {
BigDecimal bd = BigDecimal.valueOf(value); BigDecimal bd = BigDecimal.valueOf(value);
@ -76,6 +79,24 @@ public class InvoiceUtil {
return childItems; return childItems;
} }
/**
* Convert the List of ItemCollections back into a List of Map elements
*
* @param workitem
*/
@SuppressWarnings({ "rawtypes" })
public static void implodeChildList(ItemCollection workitem, List<ItemCollection> childItems) {
List<Map> mapOrderItems = new ArrayList<Map>();
// convert the child ItemCollection elements into a List of Map
if (childItems != null) {
// iterate over all order items..
for (ItemCollection orderItem : childItems) {
mapOrderItems.add(orderItem.getAllItems());
}
workitem.replaceItemValue(CHILD_ITEM_PROPERTY, mapOrderItems);
}
}
/** /**
* Diese Methode berechnet das feld 'invoice.positions' welches eine Valueliste * Diese Methode berechnet das feld 'invoice.positions' welches eine Valueliste
* mit allen Positionsnummern aus dem Childliste enthält. * mit allen Positionsnummern aus dem Childliste enthält.

View file

@ -200,18 +200,15 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
XSSFRow rowSpacesCurrencies = sheet.getRow(10); XSSFRow rowSpacesCurrencies = sheet.getRow(10);
XSSFRow rowValues = sheet.getRow(11); XSSFRow rowValues = sheet.getRow(11);
XSSFCell cellSpaceLabelReference = rowSpacesLabels.getCell(1); XSSFCell cellSpaceLabelReference = rowSpacesLabels.getCell(2);
XSSFCell cellSpaceCurrencyReference = rowSpacesCurrencies.getCell(1); XSSFCell cellSpaceCurrencyReference = rowSpacesCurrencies.getCell(1);
int column = 1; int column = 1;
for (ItemCollection space : spaces) { for (ItemCollection space : spaces) {
XSSFCell cell = null;
String spaceName = space.getItemValueString("space.name"); String spaceName = space.getItemValueString("space.name");
String spaceID = space.getUniqueID(); String spaceID = space.getUniqueID();
spaceNames.add(spaceName); spaceNames.add(spaceName);
// Space Labe
XSSFCell cell = rowSpacesLabels.getCell(column);
// cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy());
cell.setCellValue(spaceName);
// Space currency EUR // Space currency EUR
cell = rowSpacesCurrencies.getCell(column); cell = rowSpacesCurrencies.getCell(column);
cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy()); cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy());
@ -223,11 +220,16 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy()); cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy());
cell.setCellValue("USD"); cell.setCellValue("USD");
// Space Label
cell = rowSpacesLabels.getCell(column);
cell.setCellValue(spaceName);
// create two new cells... // create two new cells...
column++;
cell = rowSpacesLabels.createCell(column); cell = rowSpacesLabels.createCell(column);
cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy()); cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy());
cell.setCellValue(""); cell.setCellValue("");
column++;
cell = rowSpacesLabels.createCell(column); cell = rowSpacesLabels.createCell(column);
cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy()); cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy());
cell.setCellValue(""); cell.setCellValue("");
@ -267,21 +269,21 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
column = 1; column = 1;
for (String name : spaceNames) { for (String name : spaceNames) {
String key = name + "/" + week; String key = name + "/" + week;
logger.info("serach WeekInvoiceData for " + key); logger.info("search WeekInvoiceData for " + key);
// list of invoices // list of invoices
WeekInvoiceData weekData = weekDataMap.get(key); WeekInvoiceData weekData = weekDataMap.get(key);
if (weekData != null) { if (weekData != null) {
logger.info("eur=" + weekData.totalEUR); logger.info(" EUR=" + weekData.totalEUR + " USD=" + weekData.totalUSD);
row.getCell(column).setCellValue(weekData.totalEUR); row.getCell(column).setCellValue(weekData.totalEUR);
column++; column++;
row.getCell(column).setCellValue(weekData.totalUSD); row.getCell(column).setCellValue(weekData.totalUSD);
column++;
} else { } else {
logger.info("...... NOT FOUND"); logger.info("...... NOT FOUND");
// skip columns // skip columns
column = column + 2; column = column + 2;
} }
} }
// update style // update style
@ -392,12 +394,13 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
private void groupInvoicesByWeek(String spaceID, String spaceName, private void groupInvoicesByWeek(String spaceID, String spaceName,
Map<String, WeekInvoiceData> cache) { Map<String, WeekInvoiceData> cache) {
logger.info("...group invoices for " + spaceID); logger.info("...group invoices for " + spaceName + "/" + spaceID);
try { try {
List<ItemCollection> invoices = documentService.find( List<ItemCollection> invoices = documentService.find(
"$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0, "$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0,
"invoice.number", false); "invoice.number", false);
logger.info(" found " + invoices.size() + " for space " + spaceName);
for (ItemCollection invoice : invoices) { for (ItemCollection invoice : invoices) {
// compute Week // compute Week
Date dueDate = invoice.getItemValueDate("invoice.duedate"); Date dueDate = invoice.getItemValueDate("invoice.duedate");
@ -414,7 +417,7 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
// haben wir shon ein listchen? // haben wir shon ein listchen?
String key = spaceName + "/" + weekCategory; String key = spaceName + "/" + weekCategory;
logger.info("....building weekInvoiceData object for " + key); logger.fine(" ....building weekInvoiceData object for " + key);
WeekInvoiceData weekData = cache.get(key); WeekInvoiceData weekData = cache.get(key);
if (weekData == null) { if (weekData == null) {

View file

@ -34,10 +34,6 @@ public class ZahlungsavisAppendAdapter implements SignalAdapter {
public static final String ERROR_MISSING_DATA = "MISSING_DATA"; public static final String ERROR_MISSING_DATA = "MISSING_DATA";
public static final String ERROR_CONFIG = "CONFIG_ERROR"; public static final String ERROR_CONFIG = "CONFIG_ERROR";
public static final String ITEM_CDTR_NUMBER = "cdtr.number";
public static final String ITEM_CDTR_NAME = "cdtr.name";
public static final String ITEM_CDTR_NAME_CARGOSOFT = "cdtr.name.cargosoft";
@Inject @Inject
WorkflowService workflowService; WorkflowService workflowService;
@ -63,7 +59,7 @@ public class ZahlungsavisAppendAdapter implements SignalAdapter {
* @throws PluginException * @throws PluginException
*/ */
private void appendInvoice(ItemCollection document) throws PluginException { private void appendInvoice(ItemCollection document) throws PluginException {
String cdtrNumber = document.getItemValueString(ITEM_CDTR_NUMBER); String cdtrNumber = document.getItemValueString(InvoiceUtil.ITEM_CDTR_NUMBER);
String currency = document.getItemValueString("invoice.currency"); String currency = document.getItemValueString("invoice.currency");
if (cdtrNumber == null || cdtrNumber.isEmpty()) { if (cdtrNumber == null || cdtrNumber.isEmpty()) {
@ -71,18 +67,20 @@ public class ZahlungsavisAppendAdapter implements SignalAdapter {
"Zahlungsavis kann nicht erzeugt werden. Bitte wählen Sie zuerst einen Kreditor aus."); "Zahlungsavis kann nicht erzeugt werden. Bitte wählen Sie zuerst einen Kreditor aus.");
} }
logger.info("......Search Zahlungsavis or creditor '" + cdtrNumber + "'..."); logger.info("......Search Zahlungsavis or creditor '" + cdtrNumber + "'...");
ItemCollection zahlungsAvis; ItemCollection zahlungsAvis;
try { try {
zahlungsAvis = findZahlungsavis(cdtrNumber,currency); zahlungsAvis = findZahlungsavis(cdtrNumber, currency);
if (zahlungsAvis == null) { if (zahlungsAvis == null) {
// create a new one // create a new one
zahlungsAvis = new ItemCollection().workflowGroup("Zahlungsavis").task(1000).event(100); zahlungsAvis = new ItemCollection().workflowGroup("Zahlungsavis").task(1000).event(100);
// add cdtr.name // add cdtr.name
zahlungsAvis.setItemValue(ITEM_CDTR_NAME, document.getItemValue(ITEM_CDTR_NAME)); zahlungsAvis.setItemValue(InvoiceUtil.ITEM_CDTR_NAME,
zahlungsAvis.setItemValue(ITEM_CDTR_NUMBER, document.getItemValue(ITEM_CDTR_NUMBER)); document.getItemValue(InvoiceUtil.ITEM_CDTR_NAME));
zahlungsAvis.setItemValue(ITEM_CDTR_NAME_CARGOSOFT, document.getItemValue(ITEM_CDTR_NAME_CARGOSOFT)); zahlungsAvis.setItemValue(InvoiceUtil.ITEM_CDTR_NUMBER,
document.getItemValue(InvoiceUtil.ITEM_CDTR_NUMBER));
zahlungsAvis.setItemValue(InvoiceUtil.ITEM_CDTR_NAME_CARGOSOFT,
document.getItemValue(InvoiceUtil.ITEM_CDTR_NAME_CARGOSOFT));
zahlungsAvis.setItemValue("invoice.currency", currency); zahlungsAvis.setItemValue("invoice.currency", currency);
} else { } else {
// zahlungsavis speichern // zahlungsavis speichern
@ -107,14 +105,13 @@ public class ZahlungsavisAppendAdapter implements SignalAdapter {
* @return * @return
* @throws QueryException * @throws QueryException
*/ */
private ItemCollection findZahlungsavis(String cdtrNumber,String currency) throws QueryException { private ItemCollection findZahlungsavis(String cdtrNumber, String currency) throws QueryException {
String query = "(type:workitem) AND ($modelversion:zahlungsavis*) "; String query = "(type:workitem) AND ($modelversion:zahlungsavis*) ";
List<ItemCollection> resultList = workflowService.getDocumentService().find(query, 999, 0, "$modified", true); List<ItemCollection> resultList = workflowService.getDocumentService().find(query, 999, 0, "$modified", true);
for (ItemCollection zahlungsavis : resultList) { for (ItemCollection zahlungsavis : resultList) {
if (cdtrNumber.equals(zahlungsavis.getItemValueString(ITEM_CDTR_NUMBER)) if (cdtrNumber.equals(zahlungsavis.getItemValueString(InvoiceUtil.ITEM_CDTR_NUMBER))
&& currency.equals(zahlungsavis.getItemValueString("invoice.currency")) && currency.equals(zahlungsavis.getItemValueString("invoice.currency"))) {
) {
return zahlungsavis; return zahlungsavis;
} }
} }

View file

@ -531,7 +531,7 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
datevWorkitem.setItemValue("invoice.total", total); datevWorkitem.setItemValue("invoice.total", total);
datevWorkitem.setItemValue("invoice.saldo", total); datevWorkitem.setItemValue("invoice.saldo", total);
// implode die Splitbuchungen // implode die Splitbuchungen
implodeChildList(datevWorkitem, splitBuchungen); InvoiceUtil.implodeChildList(datevWorkitem, splitBuchungen);
// set dbtr.name // set dbtr.name
ItemCollection dbtrItemCol = kreditorDebitorService ItemCollection dbtrItemCol = kreditorDebitorService
@ -577,6 +577,8 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
String belegNummer = datevWorkitem.getItemValueString("invoice.number"); String belegNummer = datevWorkitem.getItemValueString("invoice.number");
if (belegNummer.startsWith("ATC")) { if (belegNummer.startsWith("ATC")) {
// Zollanmeldung // Zollanmeldung
// Lookup Kreditor data... and switch dbtr to cdtr
updateATCInvoice(datevWorkitem);
datevWorkitem.model(INITIAL_MODEL_VERSION_TAX).task(INITIAL_TASK_ID_TAX).event(INITIAL_EVENT_ID_TAX); datevWorkitem.model(INITIAL_MODEL_VERSION_TAX).task(INITIAL_TASK_ID_TAX).event(INITIAL_EVENT_ID_TAX);
} else { } else {
// Normale Ausgangsrechnung // Normale Ausgangsrechnung
@ -588,22 +590,41 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
} }
/** /**
* Convert the List of ItemCollections back into a List of Map elements * This helper method updates some attributes of a DATEV Import regarding ATC
* Invoice (Zollanmeldungen)
* *
* @param workitem * Hier handelt es sich praktisch um eine Eingangsrechnung, daher tauschen wir
* die Vorzeichen und dbtr/cdtr
*
* @param datevWorkitem
* @throws PluginException
*/ */
@SuppressWarnings({ "rawtypes" }) private void updateATCInvoice(ItemCollection datevWorkitem) throws PluginException {
private void implodeChildList(ItemCollection workitem, List<ItemCollection> childItems) { String cdtrNumber = datevWorkitem.getItemValueString("dbtr.number");
List<Map> mapOrderItems = new ArrayList<Map>(); datevWorkitem.setItemValue("cdtr.number", cdtrNumber);
// convert the child ItemCollection elements into a List of Map datevWorkitem.removeItem("dbtr.number");
if (childItems != null) { ItemCollection creditor = kreditorDebitorService.findCreditor(cdtrNumber);
logger.fine("Convert child items into Map..."); if (creditor != null) {
// iterate over all order items.. // update name....
for (ItemCollection orderItem : childItems) { datevWorkitem.setItemValue(InvoiceUtil.ITEM_CDTR_NAME, creditor.getItemValueString("_VENDOR_Name"));
mapOrderItems.add(orderItem.getAllItems());
}
workitem.replaceItemValue(CHILD_ITEM_PROPERTY, mapOrderItems);
} }
// Update invoice.positions
InvoiceUtil.updateInvoicePositions(datevWorkitem);
// Switch S/H
List<ItemCollection> childs = InvoiceUtil.explodeChildList(datevWorkitem);
for (ItemCollection posItem : childs) {
if (posItem.hasItem("datev.shzeichen")) {
String sh = posItem.getItemValueString("datev.shzeichen");
if ("S".equalsIgnoreCase(sh)) {
sh = "H";
} else {
sh = "S";
}
posItem.setItemValue("datev.shzeichen", sh);
}
}
InvoiceUtil.implodeChildList(datevWorkitem, childs);
} }
} }

Binary file not shown.

View file

@ -604,7 +604,6 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_71XoqA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_71XoqA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_QzU0Xg</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_QzU0Xg</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_hH7RWQ</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:intermediateCatchEvent id="event_a0OyNw" imixs:activityid="60" name="Erstellen"> <bpmn2:intermediateCatchEvent id="event_a0OyNw" imixs:activityid="60" name="Erstellen">
<bpmn2:extensionElements> <bpmn2:extensionElements>
@ -618,40 +617,27 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<imixs:item name="rtfresultlog" type="xs:string"> <imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Liste Außenstände erstellt]]></imixs:value> <imixs:value><![CDATA[Liste Außenstände erstellt]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="process">Mahnwesen</item> <imixs:value><![CDATA[<item name="process">Mahnwesen</item>
<opliste name="textblock">OP-Liste KW Template</opliste> <opliste name="textblock">OP-Liste KW Template</opliste>
<opliste name="template">op-liste_kw_template.xlsx</opliste> <opliste name="template">op-liste_kw_template.xlsx</opliste>
<opliste name="target-name">op-liste_<itemvalue>space.name</itemvalue>_<itemvalue format="yyyy-MM-dd">$lasteventdate</itemvalue>.xlsx</opliste> <opliste name="target-name">op-liste_<itemvalue>space.name</itemvalue>_<itemvalue format="yyyy-MM-dd">$lasteventdate</itemvalue>.xlsx</opliste>
<poi-update name="findreplace">
<find>C6</find>
<replace><itemvalue>sequencenumber</itemvalue></replace>
<type>text</type>
</poi-update>
<poi-update name="findreplace">
<find>D6</find>
<replace>Gesamtübersicht</replace>
<type>text</type>
</poi-update>
<poi-update name="findreplace">
<find>C8</find>
<replace><itemvalue>space.name</itemvalue></replace>
<type>text</type>
</poi-update>
<poi-update name="findreplace"> <poi-update name="findreplace">
<find>I6</find> <find>I6</find>
<replace><itemvalue format="dd.MM.yyyy">$lasteventdate</itemvalue></replace> <replace><itemvalue format="dd.MM.yyyy">$lasteventdate</itemvalue></replace>
<type>date</type> <type>date</type>
</poi-update> </poi-update>
<poi-update name="eval">I7</poi-update>
]]></imixs:value> ]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements> </bpmn2:extensionElements>
<bpmn2:signalEventDefinition id="signalEventDefinition_lJZyMA" signalRef="Signal_1"/> <bpmn2:signalEventDefinition id="signalEventDefinition_lJZyMA" signalRef="signal_2"/>
<bpmn2:documentation id="documentation_z2Mzbg"/> <bpmn2:documentation id="documentation_z2Mzbg"/>
<bpmn2:incoming>sequenceFlow_QzU0Xg</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_QzU0Xg</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_64kfIA</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_64kfIA</bpmn2:outgoing>
@ -689,6 +675,7 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_64kfIA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_64kfIA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_W9rmgA</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_W9rmgA</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_hH7RWQ</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:sequenceFlow id="sequenceFlow_71XoqA" sourceRef="event_yvRYxA" targetRef="task_A5VcTw"> <bpmn2:sequenceFlow id="sequenceFlow_71XoqA" sourceRef="event_yvRYxA" targetRef="task_A5VcTw">
<bpmn2:documentation id="documentation_EL9YOw"/> <bpmn2:documentation id="documentation_EL9YOw"/>
@ -761,7 +748,7 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<bpmn2:association id="association_caVaqw" sourceRef="textAnnotation_5ZBmxg" targetRef="event_a0OyNw"> <bpmn2:association id="association_caVaqw" sourceRef="textAnnotation_5ZBmxg" targetRef="event_a0OyNw">
<bpmn2:documentation id="documentation_VEQOAw"/> <bpmn2:documentation id="documentation_VEQOAw"/>
</bpmn2:association> </bpmn2:association>
<bpmn2:intermediateCatchEvent id="event_0DGK7A" imixs:activityid="111" name="Test"> <bpmn2:intermediateCatchEvent id="event_0DGK7A" imixs:activityid="111" name="Aktualisieren">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="txtmailsubject" type="xs:string"> <imixs:item name="txtmailsubject" type="xs:string">
<imixs:value/> <imixs:value/>
@ -797,7 +784,7 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<bpmn2:documentation id="documentation_V7ymKA"/> <bpmn2:documentation id="documentation_V7ymKA"/>
<bpmn2:outgoing>sequenceFlow_hH7RWQ</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_hH7RWQ</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_hH7RWQ" sourceRef="event_0DGK7A" targetRef="task_A5VcTw"> <bpmn2:sequenceFlow id="sequenceFlow_hH7RWQ" sourceRef="event_0DGK7A" targetRef="task_xZ1VEg">
<bpmn2:documentation id="documentation_pZPHng"/> <bpmn2:documentation id="documentation_pZPHng"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
</bpmn2:process> </bpmn2:process>
@ -1023,26 +1010,25 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<dc:Bounds height="50.0" width="110.0" x="290.0" y="830.0"/> <dc:Bounds height="50.0" width="110.0" x="290.0" y="830.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_a0OyNw" id="BPMNShape_UOz1ng"> <bpmndi:BPMNShape bpmnElement="event_a0OyNw" id="BPMNShape_UOz1ng">
<dc:Bounds height="36.0" width="36.0" x="497.0" y="967.0"/> <dc:Bounds height="36.0" width="36.0" x="487.0" y="837.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_HWhMvg"> <bpmndi:BPMNLabel id="BPMNLabel_HWhMvg">
<dc:Bounds height="20.0" width="100.0" x="468.0" y="1003.0"/> <dc:Bounds height="20.0" width="100.0" x="458.0" y="873.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_xZ1VEg" id="BPMNShape_4UA3IA"> <bpmndi:BPMNShape bpmnElement="task_xZ1VEg" id="BPMNShape_4UA3IA">
<dc:Bounds height="50.0" width="110.0" x="780.0" y="960.0"/> <dc:Bounds height="50.0" width="110.0" x="700.0" y="830.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_71XoqA" id="BPMNEdge_NHStBg" sourceElement="BPMNShape_X1bTbg" targetElement="BPMNShape_thLYng"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_71XoqA" id="BPMNEdge_NHStBg" sourceElement="BPMNShape_X1bTbg" targetElement="BPMNShape_thLYng">
<di:waypoint x="213.0" y="855.0"/> <di:waypoint x="213.0" y="855.0"/>
<di:waypoint x="290.0" y="855.0"/> <di:waypoint x="290.0" y="855.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_QzU0Xg" id="BPMNEdge_xcKr3g" sourceElement="BPMNShape_thLYng" targetElement="BPMNShape_UOz1ng"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_QzU0Xg" id="BPMNEdge_xcKr3g" sourceElement="BPMNShape_thLYng" targetElement="BPMNShape_UOz1ng">
<di:waypoint x="347.0" y="880.0"/> <di:waypoint x="400.0" y="855.0"/>
<di:waypoint x="347.0" y="985.0"/> <di:waypoint x="487.0" y="855.0"/>
<di:waypoint x="497.0" y="985.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_64kfIA" id="BPMNEdge_xphwrQ" sourceElement="BPMNShape_UOz1ng" targetElement="BPMNShape_4UA3IA"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_64kfIA" id="BPMNEdge_xphwrQ" sourceElement="BPMNShape_UOz1ng" targetElement="BPMNShape_4UA3IA">
<di:waypoint x="533.0" y="985.0"/> <di:waypoint x="523.0" y="855.0"/>
<di:waypoint x="780.0" y="985.0"/> <di:waypoint x="700.0" y="855.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_XWmcVw" id="BPMNShape_gjGFNA"> <bpmndi:BPMNShape bpmnElement="event_XWmcVw" id="BPMNShape_gjGFNA">
<dc:Bounds height="36.0" width="36.0" x="957.0" y="837.0"/> <dc:Bounds height="36.0" width="36.0" x="957.0" y="837.0"/>
@ -1060,9 +1046,7 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_W9rmgA" id="BPMNEdge_0VXmVQ" sourceElement="BPMNShape_4UA3IA" targetElement="BPMNShape_gjGFNA"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_W9rmgA" id="BPMNEdge_0VXmVQ" sourceElement="BPMNShape_4UA3IA" targetElement="BPMNShape_gjGFNA">
<di:waypoint x="890.0" y="985.0"/> <di:waypoint x="810.0" y="855.0"/>
<di:waypoint x="923.5" y="985.0"/>
<di:waypoint x="923.5" y="855.0"/>
<di:waypoint x="957.0" y="855.0"/> <di:waypoint x="957.0" y="855.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_5c0Y8A" id="BPMNEdge_G6uKEg" sourceElement="BPMNShape_gjGFNA" targetElement="BPMNShape_KwE0KA"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_5c0Y8A" id="BPMNEdge_G6uKEg" sourceElement="BPMNShape_gjGFNA" targetElement="BPMNShape_KwE0KA">
@ -1074,23 +1058,23 @@ Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt
<di:waypoint x="1197.0" y="855.0"/> <di:waypoint x="1197.0" y="855.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="textAnnotation_5ZBmxg" id="BPMNShape_36UNzw"> <bpmndi:BPMNShape bpmnElement="textAnnotation_5ZBmxg" id="BPMNShape_36UNzw">
<dc:Bounds height="69.0" width="199.0" x="550.0" y="1050.0"/> <dc:Bounds height="69.0" width="199.0" x="340.0" y="960.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_caVaqw" id="BPMNEdge_AA2MfA" sourceElement="BPMNShape_36UNzw" targetElement="BPMNShape_UOz1ng"> <bpmndi:BPMNEdge bpmnElement="association_caVaqw" id="BPMNEdge_AA2MfA" sourceElement="BPMNShape_36UNzw" targetElement="BPMNShape_UOz1ng">
<di:waypoint x="649.5" y="1050.0"/> <di:waypoint x="439.5" y="960.0"/>
<di:waypoint x="649.5" y="1026.5"/> <di:waypoint x="439.5" y="916.5"/>
<di:waypoint x="515.0" y="1026.5"/> <di:waypoint x="505.0" y="916.5"/>
<di:waypoint x="515.0" y="1003.0"/> <di:waypoint x="505.0" y="873.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_0DGK7A" id="BPMNShape_KWrOwQ"> <bpmndi:BPMNShape bpmnElement="event_0DGK7A" id="BPMNShape_KWrOwQ">
<dc:Bounds height="36.0" width="36.0" x="327.0" y="757.0"/> <dc:Bounds height="36.0" width="36.0" x="737.0" y="917.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_3RVChA"> <bpmndi:BPMNLabel id="BPMNLabel_3RVChA">
<dc:Bounds height="20.0" width="100.0" x="298.0" y="793.0"/> <dc:Bounds height="20.0" width="100.0" x="708.0" y="953.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_hH7RWQ" id="BPMNEdge_nWebKA" sourceElement="BPMNShape_KWrOwQ" targetElement="BPMNShape_thLYng"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_hH7RWQ" id="BPMNEdge_nWebKA" sourceElement="BPMNShape_KWrOwQ" targetElement="BPMNShape_4UA3IA">
<di:waypoint x="345.0" y="793.0"/> <di:waypoint x="755.0" y="917.0"/>
<di:waypoint x="345.0" y="830.0"/> <di:waypoint x="755.0" y="880.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1"> <bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">