From 77d3e1b3910df3f45d260e9e8aa4566ddbeb328f Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Wed, 10 Apr 2024 15:17:31 +0200 Subject: [PATCH] neuer Op-Listen Controller --- .../OPListExportAdapter.java | 15 +- .../OPListExportAdapterByWeek.java | 465 +++++++ .../OPListExportController.java | 25 +- .../OPListExportScheduler.java | 14 +- templates/op-liste_kw_template.xlsx | Bin 0 -> 41816 bytes workflow/opliste-de-1.0.1.bpmn | 1100 +++++++++++++++++ 6 files changed, 1583 insertions(+), 36 deletions(-) create mode 100644 office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java create mode 100644 templates/op-liste_kw_template.xlsx create mode 100644 workflow/opliste-de-1.0.1.bpmn diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java index 92e74c7..b0241e1 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java @@ -73,7 +73,6 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { @Inject SnapshotService snapshotService; - /** * This method finds or create the Zahlungsavis and adds a reference * ($workitemref) to the current invoice. @@ -115,7 +114,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { this.updateFileData(document.getFileData(targetName), document, replaceDevList, eval); // now we add separate lines for each invoice.... - logger.info("... insert invoices - filter="+filter); + logger.info("... insert invoices - filter=" + filter); insertInvoiceRows(document, targetName, filter); } catch (PluginException | IOException | QueryException e) { throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG, @@ -342,10 +341,10 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { } /** - * Diese Methode groupiert eine Rechnugnsliste nach Debitorennummern + * Diese Methode gruppiert eine Rechnungsliste nach Debitorennummern * * Falls 'filter==true' werden nur Rechnungen ab der 2. Mahnung oder mit einer - * Fälligkeit >21 Tage ausgegeben + * Fälligkeit >21 Tage ausgegeben. Dieses Flag wird im Workflowmodell gesetzt * * @param spaceID * @return @@ -372,7 +371,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { if (filter) { Date date = invoice.getItemValueDate("invoice.duedate"); if (OPListExportAdapter.isOverdue(date, invoice.getTaskID())) { - //logger.info("...invoice - " +invoice.getUniqueID() + " is in overdue"); + // logger.info("...invoice - " +invoice.getUniqueID() + " is in overdue"); invoiceList.add(invoice); } } else { @@ -381,7 +380,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { } // speicher wieder die neue liste wenn es mindestens eine Rechnung gab - if (invoiceList.size()>0) { + if (invoiceList.size() > 0) { result.put(dbtrNumber, invoiceList); } @@ -392,13 +391,13 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { } return result; - } + } public static boolean isOverdue(Date date, int taskid) { Date now = new Date(); long diffInMillies = now.getTime() - date.getTime(); int tage = (int) (diffInMillies / 1000 / 60 / 60 / 24); - //logger.info("...taskid=" + taskid + " date=" + date + " tage=" + tage); + // logger.info("...taskid=" + taskid + " date=" + date + " tage=" + tage); return ((taskid >= TASK_MAHNUNG_2ND && taskid <= TASK_MAHNUNG_LAST) || tage >= 21); } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java new file mode 100644 index 0000000..93fac43 --- /dev/null +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java @@ -0,0 +1,465 @@ +package com.alexanderlogistics; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.apache.poi.ss.usermodel.CellCopyPolicy; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.imixs.archive.core.SnapshotService; +import org.imixs.marty.team.TeamService; +import org.imixs.workflow.FileData; +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.ItemCollectionComparator; +import org.imixs.workflow.engine.DocumentService; +import org.imixs.workflow.engine.WorkflowService; +import org.imixs.workflow.exceptions.AdapterException; +import org.imixs.workflow.exceptions.PluginException; +import org.imixs.workflow.exceptions.QueryException; +import org.imixs.workflow.poi.POIFindReplaceAdapter; + +/** + * Der OPListExportAdapterByWeek ist ählnlich dem Der OPListExportAdapter. Er + * erzeugt eine Excel tabelle mit allen offenen Rechnungen und gruppiert diese + * nach Abteilungen und KW + * + * Der OPListExportAdapterByWeek importiert eine Excel Datei aus einem Textblock + * + *
+ * {@code
+        textblock-ref
+        filename
+        filename
+   }
+ * 
+ *

+ * Der Adapter erweitert den POIAdapter somit können felder aktualisiert werden + * (siehe POIFineReplaceAdapter). + * + *

+ * Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer + * 16 eingefügt werden. + *

+ * + * Abschliessend wird die Zelle 'TOTAL' noch aktualisiert. + * + * @version 1.0 + * @author rsoika + */ +public class OPListExportAdapterByWeek extends POIFindReplaceAdapter { + + private static Logger logger = Logger.getLogger(OPListExportAdapterByWeek.class.getName()); + + public static final String ERROR_CONFIG = "CONFIG_ERROR"; + public static final int TASK_MAHNUNG_2ND = 5210; + public static final int TASK_MAHNUNG_LAST = 5220; + + final String TYPE_TEXTBLOCK = "textblock"; + + @Inject + WorkflowService workflowService; + + @Inject + DocumentService documentService; + + @Inject + SnapshotService snapshotService; + + @Inject + TeamService teamService; + + // cache for all invoices grouped by week + Map> invoiceMap = null; + + /** + * This method finds or create the Zahlungsavis and adds a reference + * ($workitemref) to the current invoice. + * + * @throws PluginException + */ + @SuppressWarnings("unchecked") + @Override + public ItemCollection execute(ItemCollection document, ItemCollection event) + throws AdapterException, PluginException { + + // read the opliste options + ItemCollection evalItemCollection = workflowService.evalWorkflowResult(event, "opliste", document, false); + if (evalItemCollection == null) { + throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, + "missing op-list configuration in model event - please check model configuration"); + } + String textblock = evalItemCollection.getItemValueString("textblock"); + String template = evalItemCollection.getItemValueString("template"); + String targetName = evalItemCollection.getItemValueString("target-name"); + // adapt text.... + targetName = workflowService.adaptText(targetName, document); + appendExcelTemplate(document, textblock, template, targetName); + + logger.info("... loading poi configuration.."); + // Process POI instructions + // read the config + ItemCollection poiConfig = workflowService.evalWorkflowResult(event, "poi-update", document, false); + if (poiConfig == null || !poiConfig.hasItem("findreplace")) { + throw new PluginException(POIFindReplaceAdapter.class.getSimpleName(), CONFIG_ERROR, + "missing poi configuration"); + } + List replaceDevList = poiConfig.getItemValue("findreplace"); + String eval = poiConfig.getItemValueString("eval"); + try { + logger.info("... update template with normal poi information.."); + this.updateFileData(document.getFileData(targetName), document, replaceDevList, eval); + + insertInvoiceRows(document, targetName); + } catch (PluginException | IOException | QueryException e) { + throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, + "failed to update op-liste: " + e.getMessage()); + } + logger.info("... completed!"); + return document; + } + + /** + * This helper method inserts a row for each invoice of the OPListe at row 16 + * into the excel template file + *

+ * First the method computes all Departments and insert them at C10 + *

+ * The method copies the Row A16 as a reference row + *

+ * The named cell 'TOTAL' should contain the summary formula. It will be + * evaluated at the end. + * + * @throws PluginException + * @throws QueryException + */ + private void insertInvoiceRows(ItemCollection document, String fileName) + throws PluginException, QueryException { + + double saldoUSD = 0; + double saldoEUR = 0; + List spaceNames = new ArrayList(); + + // compute all departments + List spaces = teamService.getSpaces(); + // sort by space.name + Collections.sort(spaces, new ItemCollectionComparator("space.name", true)); + + Map weekDataMap = new HashMap(); + FileData fileData = document.getFileData(fileName); + + // load XSSFWorkbook + XSSFWorkbook doc = null; + try (InputStream imputStream = new ByteArrayInputStream(fileData.getContent())) { + doc = new XSSFWorkbook(imputStream); + + // compute current week + Calendar calendar = new GregorianCalendar(); + calendar.setTime(new Date()); + int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); + int year = calendar.get(Calendar.YEAR); + String currentWeek = year + "/"; + if (weekNumber < 10) { + currentWeek = currentWeek + "0" + weekNumber; + } else { + currentWeek = currentWeek + weekNumber; + } + + CellStyle headerCellStyle = doc.createCellStyle(); + // fill foreground color ... + headerCellStyle.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.index); + // and solid fill pattern produces solid grey cell fill + headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + // NOTE: we only take the first sheet ! + XSSFSheet sheet = doc.getSheetAt(0); + + // First we create a column for each Space..... + XSSFRow rowSpacesLabels = sheet.getRow(9); + XSSFCellStyle superDuperStyle = rowSpacesLabels.getCell(0).getCellStyle(); + XSSFRow rowSpacesCurrencies = sheet.getRow(10); + XSSFRow rowValues = sheet.getRow(11); + + XSSFCell cellSpaceLabelReference = rowSpacesLabels.getCell(1); + XSSFCell cellSpaceCurrencyReference = rowSpacesLabels.getCell(1); + int column = 1; + for (ItemCollection space : spaces) { + String spaceName = space.getItemValueString("space.name"); + String spaceID = space.getUniqueID(); + spaceNames.add(spaceName); + + // Space Labe + XSSFCell cell = rowSpacesLabels.getCell(column); + // cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy()); + cell.setCellValue(spaceName); + // Space currency EUR + cell = rowSpacesCurrencies.getCell(column); + cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy()); + cell.setCellValue("EUR"); + + // Space currency USD + column++; + cell = rowSpacesCurrencies.getCell(column); + cell.copyCellFrom(cellSpaceCurrencyReference, new CellCopyPolicy()); + cell.setCellValue("USD"); + + // create two new cells... + cell = rowSpacesLabels.createCell(column); + cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy()); + cell.setCellValue(""); + column++; + cell = rowSpacesLabels.createCell(column); + cell.copyCellFrom(cellSpaceLabelReference, new CellCopyPolicy()); + cell.setCellValue(""); + + logger.info("...grouping invoices by week..."); + // collect all invoices for this space grouped by week.... + groupInvoicesByWeek(spaceID, spaceName, weekDataMap); + + } + + // now build a new row for each week and print out the collected invoice data + // first iterate over all objects and collect all known weeks and sort them into + // a ordered list.... + List sortedWeekList = new ArrayList(); + Iterator> iterator = weekDataMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + WeekInvoiceData weekInvoiceData = entry.getValue(); + if (!sortedWeekList.contains(weekInvoiceData.week)) { + sortedWeekList.add(weekInvoiceData.week); + } + } + Collections.sort(sortedWeekList); + + int rowPos = 11; + for (String week : sortedWeekList) { + // now create a new line.. + rowPos++; + XSSFRow row = sheet.createRow(rowPos); + row.copyRowFrom(rowValues, new CellCopyPolicy()); + + // insert values + row.getCell(0).setCellValue(week); + + // iterate over all spaceNames and test if we have any data to put it into the + // row cells.... + column = 1; + for (String name : spaceNames) { + String key = name + "/" + week; + logger.info("serach WeekInvoiceData for " + key); + // list of invoices + WeekInvoiceData weekData = weekDataMap.get(key); + if (weekData != null) { + logger.info("eur=" + weekData.totalEUR); + row.getCell(column).setCellValue(weekData.totalEUR); + column++; + row.getCell(column).setCellValue(weekData.totalUSD); + + } else { + logger.info("...... NOT FOUND"); + // skip columns + column = column + 2; + } + + } + + if (currentWeek.equals(week)) { + for (int i = 0; i < 15; i++) { + row.getCell(i).setCellStyle(superDuperStyle); + } + + } + + } + + // write back the file + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + doc.write(byteArrayOutputStream); + + byte[] newContent = byteArrayOutputStream.toByteArray(); + FileData fileDataNew = new FileData(fileData.getName(), newContent, fileData.getContentType(), null); + // update the fileData + document.addFileData(fileDataNew); + logger.finest("......new document added"); + + } catch (IOException e) { + throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, + "failed to update opliste: " + e.getMessage()); + } finally { + if (doc != null) { + try { + doc.close(); + } catch (IOException e) { + logger.severe("Failed to close workbook: " + e.getMessage()); + e.printStackTrace(); + } + } + } + } + + /** + * This method loads a text-block for a specified ref and appends the named + * fileData object of this document. + * + * @param document + * @throws PluginException + */ + private void appendExcelTemplate(ItemCollection document, String textblockRef, String template, String targetName) + throws PluginException { + + if ((template == null || template.isEmpty()) || (textblockRef == null || textblockRef.isEmpty())) { + throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, + "invalid op-list configuration in model event - textblock/template reference not defined!"); + } + + // load the text block + FileData fileData = loadTextBlockFileData(textblockRef, template); + + // do we found the document? + if (fileData == null) { + throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, + "invalid op-list configuration in model event - template=" + template + " not found!"); + } + fileData.setName(targetName); + // append document + logger.info("...append new op-list Template: " + targetName); + + document.addFileData(fileData); + + } + + /** + * This method returns a text-block ItemCollection for a specified name. + * + * @param name in attribute txtname + * + * + */ + public FileData loadTextBlockFileData(String name, String fileName) { + ItemCollection textBlockItemCollection = null; + + // load text-block by name.... + String sQuery = "(type:\"" + TYPE_TEXTBLOCK + "\" AND txtname:\"" + name + "\")"; + Collection col; + try { + // find the textblock... + col = documentService.find(sQuery, 1, 0); + if (col.size() > 0) { + textBlockItemCollection = col.iterator().next(); + // fetch the fileData... + return snapshotService.getWorkItemFile(textBlockItemCollection.getUniqueID(), fileName); + + } else { + logger.warning("Missing text-block : '" + name + "'"); + } + } catch (QueryException e) { + logger.warning("getTextBlock - invalid query: " + e.getMessage()); + } + + return null; + } + + /** + * Diese Methode gruppiert eine Rechnungsliste nach Kalenderwoche + * + * @param spaceID - Space Ref to select a list of invoices assoicated with a + * space + * @param cache - a local cache storing all invoices by week + * + * + */ + private void groupInvoicesByWeek(String spaceID, String spaceName, + Map cache) { + + logger.info("...group invoices for " + spaceID); + try { + List invoices = documentService.find( + "$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0, + "invoice.number", false); + + for (ItemCollection invoice : invoices) { + // compute Week + Date dueDate = invoice.getItemValueDate("invoice.duedate"); + Calendar calendar = new GregorianCalendar(); + calendar.setTime(dueDate); + int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); + int year = calendar.get(Calendar.YEAR); + String weekCategory = year + "/"; + if (weekNumber < 10) { + weekCategory = weekCategory + "0" + weekNumber; + } else { + weekCategory = weekCategory + weekNumber; + } + // haben wir shon ein listchen? + + String key = spaceName + "/" + weekCategory; + logger.info("....building weekInvoiceData object for " + key); + + WeekInvoiceData weekData = cache.get(key); + if (weekData == null) { + weekData = new WeekInvoiceData(spaceName, weekCategory); + } + // Jetzt Rechnung addieren + weekData.add(invoice); + cache.put(key, weekData); + } + + } catch ( + + QueryException e) { + e.printStackTrace(); + } + + } +} + +/** + * Data Element for invoice totals per week and space + */ +class WeekInvoiceData { + + String week; + String spaceName; + double totalEUR; + double totalUSD; + + public WeekInvoiceData(String spaceName, String week) { + this.spaceName = spaceName; + this.week = week; + } + + public void add(ItemCollection invoice) { + String spaceName = invoice.getItemValueString("space.name"); + String currency = invoice.getItemValueString("invoice.currency"); + Double total = invoice.getItemValueDouble("invoice.total"); + if ("EUR".equals(currency)) { + totalEUR = totalEUR + total; + } else { + totalUSD = totalUSD + total; + + } + + } + +} \ No newline at end of file diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java index 3d4f176..664b6fd 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java @@ -1,4 +1,5 @@ package com.alexanderlogistics; + /******************************************************************************* * Imixs Workflow Technology * Copyright (C) 2003, 2008 Imixs Software Solutions GmbH, @@ -25,7 +26,6 @@ package com.alexanderlogistics; import java.util.logging.Logger; -import javax.ejb.Timer; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; @@ -33,20 +33,12 @@ import javax.inject.Named; import org.imixs.workflow.engine.scheduler.SchedulerController; /** - * The DatevController is used to configure the DatevScheduler. This service is - * used to generate datev export workitems. + * The OPListExportController is used to configure the OpListeExporterService. + * This service is + * used to export workitems. *

* The Controller creates a configuration entity "type=configuration; - * txtname=datev". - *

- * The following config items are defined: - * - * The following config items are defined: - * - *

- * _model_version = model version for the SEPA export
- * _initial_task = inital task ID
- * 
+ * txtname=OPLIST_EXPORT_CONFIGURATION". * * * @author rsoika @@ -61,10 +53,9 @@ public class OPListExportController extends SchedulerController { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(OPListExportController.class.getName()); - @Inject OPListExportScheduler opListExportScheduler; - + @Override public String getName() { return OPLIST_EXPORT_CONFIGURATION; @@ -83,8 +74,4 @@ public class OPListExportController extends SchedulerController { return schedulerClass; } - - - - } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java index 7fe4312..f7d72c1 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java @@ -50,7 +50,7 @@ import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.QueryException; /** - * The OPListExportScheduler erzeugt für jeden Berich ein neues Workitem mit + * The OPListExportScheduler erzeugt für jeden Bereich ein neues Workitem mit * einer Excel Datei mit allen offenen Rechnungen. *

* bei den OP Listen für die Abteilungen dürfen nur Rechnungen aktiviert werden, @@ -71,7 +71,7 @@ public class OPListExportScheduler implements Scheduler { public static final String OPLIST_ERROR = "OPLIST_ERROR"; public static final int TASK_MAHNUNG_2ND = 5210; public static final int TASK_MAHNUNG_LAST = 5220; - + public static DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); public static DecimalFormat decimalFormat = new DecimalFormat("0.00", new DecimalFormatSymbols(java.util.Locale.GERMANY)); @@ -113,7 +113,7 @@ public class OPListExportScheduler implements Scheduler { workitem.setItemValue(WorkflowKernel.CREATED, new Date()); processOPListe(workitem); } else { - logger.info("....no invoices in overdue for "+space.getItemValueString("name")); + logger.info("....no invoices in overdue for " + space.getItemValueString("name")); } } @@ -150,18 +150,14 @@ public class OPListExportScheduler implements Scheduler { } for (ItemCollection invoice : invoices) { - Date date = invoice.getItemValueDate("invoice.duedate"); - if (OPListExportAdapter.isOverdue(date,invoice.getTaskID())) { + Date date = invoice.getItemValueDate("invoice.duedate"); + if (OPListExportAdapter.isOverdue(date, invoice.getTaskID())) { return true; } } return false; } - - - - @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) public void processOPListe(ItemCollection workitem) throws PluginException, AccessDeniedException, ProcessingErrorException, ModelException { diff --git a/templates/op-liste_kw_template.xlsx b/templates/op-liste_kw_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1fad6f105a24e335398f903aaea403c4dd28de95 GIT binary patch literal 41816 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 F`Y$Zt{Tl!P literal 0 HcmV?d00001 diff --git a/workflow/opliste-de-1.0.1.bpmn b/workflow/opliste-de-1.0.1.bpmn new file mode 100644 index 0000000..338ded7 --- /dev/null +++ b/workflow/opliste-de-1.0.1.bpmn @@ -0,0 +1,1100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + +<itemvalue>$workflowstatus</itemvalue> + +]]> + + + +]]> + + + + + + + + + + + + + + + + + StartEvent_1 + Task_1 + IntermediateCatchEvent_3 + IntermediateCatchEvent_1 + Task_4 + EndEvent_3 + Task_2 + IntermediateCatchEvent_2 + IntermediateCatchEvent_8 + Task_3 + IntermediateCatchEvent_4 + IntermediateCatchEvent_5 + + TextAnnotation_1 + + + + SequenceFlow_4 + + + + + + sequencenumber space.name - $created]]> + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_1 + SequenceFlow_9 + SequenceFlow_17 + + + SequenceFlow_19 + + + + + + sequencenumber space.name - $created]]> + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_4 + SequenceFlow_3 + SequenceFlow_2 + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + sequencenumber space.name - $created]]> + + + + + + + + + Html-Header +

Hallo,

+

+Bitte prüfen Sie die angefügte OP-Liste. Diese enthält sämtlich noch offenen Rechnungen zum Zeitpunkt des Exports für diesen Fachbereich. +

+

+Nach Prüfung schließen Sie bitte den Vorgang über die Schaltfläche "Erledigt" ab. +

+application.urlpages/workitems/workitem.jsf?id=$uniqueid + +Html-Footer]]> + + + + + + + + + + + + + + + + + + + + + + + + + + home +Mahnwesen +OP-Liste Template +op-liste_template.xlsx +op-liste_space.name_$lasteventdate.xlsx +true + + C6 + sequencenumber + text + + + D6 + Überfällig / 2. Mahnstufe + text + + + C8 + space.name + text + + + + I6 + $lasteventdate + date + +]]> + + + + + + + + + + + + false + + + + + + + + SequenceFlow_5 + SequenceFlow_9 + + DataOutput_2 + + + + + + + sequencenumber space.name - $created]]> + + + true + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_18 + SequenceFlow_19 + + + + + + + + home]]> + + + SequenceFlow_17 + SequenceFlow_8 + SequenceFlow_18 + + + + + + + + + + + + + + + + + + SequenceFlow_1 + + + + + + + + + + + + + + + + + + + SequenceFlow_3 + SequenceFlow_5 + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + Mahnwesen +OP-Liste Template +op-liste_template.xlsx +op-liste_space.name_$lasteventdate.xlsx + + + C6 + sequencenumber + text + + + D6 + Gesamtübersicht + text + + + C8 + space.name + text + + + + I6 + $lasteventdate + date + +]]> + + + SequenceFlow_2 + SequenceFlow_6 + + + + + + + + + + + + + sequencenumber space.name - $created]]> + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_6 + SequenceFlow_10 + SequenceFlow_8 + + + + + + + + + + + + + + SequenceFlow_10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + event_yvRYxA + task_A5VcTw + event_a0OyNw + task_xZ1VEg + event_XWmcVw + task_R0QI0w + event_rkG39w + textAnnotation_5ZBmxg + event_0DGK7A + + + + + sequenceFlow_71XoqA + + + + + sequencenumber space.name - $created]]> + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_2 + sequenceFlow_71XoqA + sequenceFlow_QzU0Xg + sequenceFlow_hH7RWQ + + + + + + + + + + + + + + + Mahnwesen +OP-Liste KW Template +op-liste_kw_template.xlsx +op-liste_space.name_$lasteventdate.xlsx + + + C6 + sequencenumber + text + + + D6 + Gesamtübersicht + text + + + C8 + space.name + text + + + + I6 + $lasteventdate + date + +]]> + + + + + + + + sequenceFlow_QzU0Xg + sequenceFlow_64kfIA + + + + + sequencenumber space.name - $created]]> + + + true + + + + + + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_10 + sequenceFlow_64kfIA + sequenceFlow_W9rmgA + + + + + + + + + + + + + + + + + home]]> + + + SequenceFlow_8 + + sequenceFlow_W9rmgA + sequenceFlow_5c0Y8A + + + + + sequencenumber space.name - $created]]> + + + true + + + + + + + + + + + + + + + + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_5c0Y8A + sequenceFlow_00R0Qw + + + + sequenceFlow_00R0Qw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mahnwesen +OP-Liste KW Template +op-liste_kw_template.xlsx +op-liste_space.name_$lasteventdate.xlsx + + + + I6 + $lasteventdate + date + + +I7 +]]> + + + + + + + + sequenceFlow_hH7RWQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +