From b09846efbe3c11511a0daf40e2b9d8099bb138ac Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Wed, 9 Oct 2024 13:52:59 +0200 Subject: [PATCH] debitor analyse update --- .../AGLAnalyticExcelAdapterDebitor.java | 315 ++++++++++++++++++ templates/soa_template.xlsx | Bin 0 -> 50427 bytes workflow/dwc/analyse-debitor-en-1.0.0.bpmn | 69 ++-- 3 files changed, 356 insertions(+), 28 deletions(-) create mode 100644 office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java create mode 100644 templates/soa_template.xlsx diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java new file mode 100644 index 0000000..aa9e948 --- /dev/null +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java @@ -0,0 +1,315 @@ +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.List; +import java.util.logging.Logger; + +import org.apache.poi.ss.usermodel.CellCopyPolicy; +import org.apache.poi.ss.usermodel.Row.MissingCellPolicy; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.imixs.workflow.FileData; +import org.imixs.workflow.ItemCollection; +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.office.config.ConfigService; +import org.imixs.workflow.poi.POIFindReplaceAdapter; +import org.imixs.workflow.util.XMLParser; + +import jakarta.inject.Inject; + +/** + * Der AGLAnalyticExcelAdapterDebitor exportiert eine Excel Datei aus einem + * Textblock und fügt die offenen Recnungen ein + * + * Der Adapter wird im Modell wie folgt konfiguriert + * + *
+ * {@code
+        
+            textblock-ref
+            
+            filename
+         
+   }
+ * 
+ * + *

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

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

+ * + * Abschliessend wird die Zelle 'TOTAL' noch aktualisiert. + * + * + * @version 1.0 + * @author rsoika + */ +public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter { + + private static Logger logger = Logger.getLogger(AGLAnalyticExcelAdapter.class.getName()); + + @Inject + WorkflowService workflowService; + + @Inject + OPListExportService opListExportService; + + @Inject + DocumentService documentService; + + @Inject + ConfigService configService; + + /** + * This method + * + * @throws PluginException + */ + @SuppressWarnings("unchecked") + @Override + public ItemCollection execute(ItemCollection document, ItemCollection event) + throws AdapterException, PluginException { + + // ermittle die Hauptwährungen + ItemCollection configItemCollection = configService.loadConfiguration("AGL_CONFIGURATION"); + List currencyList = configItemCollection.getItemValue("currency.out"); + if (currencyList == null || currencyList.size() < 2) { + throw new PluginException(AGLAnalyticExcelAdapter.class.getSimpleName(), + OPListExportService.ERROR_CONFIG, + "missing Currency configuration - please check parameters"); + } + + // read the Steuerbescheide options + ItemCollection ausgangsrechnungConfig = workflowService.evalWorkflowResult(event, "soa", + document, + false); + if (ausgangsrechnungConfig == null || !ausgangsrechnungConfig.hasItem("excel-export")) { + throw new PluginException(AGLAnalyticExcelAdapterDebitor.class.getSimpleName(), CONFIG_ERROR, + "missing soa configuration in model event - please check model configuration"); + } + List excelDefList = ausgangsrechnungConfig.getItemValue("excel-export"); + ItemCollection excelDefCollection = XMLParser.parseItemStructure(excelDefList.get(0)); + + String textblock = excelDefCollection.getItemValueString("textblock"); + String template = excelDefCollection.getItemValueString("template"); + String targetName = excelDefCollection.getItemValueString("target-name"); + + // adapt text.... + targetName = workflowService.adaptText(targetName, document); + + try { + appendExcelTemplate(document, textblock, template, targetName); + insertInvoiceRows(document, 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"); + + logger.info("... update template with normal poi information.."); + this.updateFileData(document.getFileData(targetName), document, replaceDevList, eval); + + } catch (PluginException | IOException | QueryException e) { + throw new PluginException(AGLAnalyticExcelAdapter.class.getSimpleName(), + OPListExportService.ERROR_CONFIG, + "failed to update steuerbescheide: " + e.getMessage()); + } + logger.info("... completed!"); + return document; + } + + /** + * Hilfsmethode die das fuehrende K/D aus der Debitorennummer entfernt + * + * @return + */ + private String getDbtNr(ItemCollection workitem) { + String dbtNr = workitem.getItemValueString("dbtr.number"); + if (dbtNr.startsWith("D") || dbtNr.startsWith("K")) { + dbtNr = dbtNr.substring(1); + } + return dbtNr; + } + + /** + * This helper method inserts a row for each invoice at row 16 + * into the excel template file + *

+ * 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 { + + // load dummy rechnungen + List invoices = loadInvoices(getDbtNr(document)); + + FileData fileData = document.getFileData(fileName); + + // load XSSFWorkbook + XSSFWorkbook doc = null; + try (InputStream imputStream = new ByteArrayInputStream(fileData.getContent())) { + doc = new XSSFWorkbook(imputStream); + // NOTE: we only take the first sheet ! + XSSFSheet sheet = doc.getSheetAt(0); + CellReference invoiceRefCell = new CellReference("A11"); + XSSFRow referenceRowInvoice = sheet.getRow(invoiceRefCell.getRow()); + int referenceRowPos = 10; + int rowPos = referenceRowPos; + int lastRow = 2999; + logger.finest("Last rownum=" + lastRow); + + // jetzt füge alle Rechnungen an. + int totalRowCount = invoices.size(); + sheet.shiftRows(referenceRowPos, lastRow, totalRowCount, true, true); + for (ItemCollection invoice : invoices) { + logger.fine("......add invoice " + invoice.getUniqueID()); + // now create a new line.. + XSSFRow row = sheet.createRow(rowPos); + row.copyRowFrom(referenceRowInvoice, new CellCopyPolicy()); + // insert values + row.getCell(0) + .setCellValue(invoice.getItemValueDate("$created")); + row.getCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueString("invoice.number")); + row.getCell(2, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDate("invoice.date")); + row.getCell(3, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDate("invoice.duedate")); + row.getCell(4, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueString("space.name")); + row.getCell(5, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueString("invoice.text")); + + // Waehrung? + if (invoice.getItemValueDouble("invoice.rate") == 0) { + row.getCell(6, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDouble("invoice.total")); + row.getCell(7, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDouble("invoice.saldo")); + } else { + row.getCell(8, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDouble("invoice.total")); + row.getCell(9, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueDouble("invoice.saldo")); + } + row.getCell(10, MissingCellPolicy.CREATE_NULL_AS_BLANK) + .setCellValue(invoice.getItemValueString("$workflowstatus")); + + rowPos++; + } + + // Leerzeile + // categoryRow = sheet.createRow(rowPos); + rowPos++; + + // 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(AGLAnalyticExcelAdapter.class.getSimpleName(), + OPListExportService.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(AGLAnalyticExcelAdapter.class.getSimpleName(), + OPListExportService.ERROR_CONFIG, + "invalid SOA configuration in model event - textblock/template reference not defined!"); + } + + // load the text block + FileData fileData = opListExportService.loadTextBlockFileData(textblockRef, template); + + // do we found the document? + if (fileData == null) { + throw new PluginException(AGLAnalyticExcelAdapter.class.getSimpleName(), + OPListExportService.ERROR_CONFIG, + "invalid SOA configuration in model event - template=" + template + + " not found!"); + } + fileData.setName(targetName); + // append document + logger.info("...append new SOA Template: " + targetName); + document.addFileData(fileData); + + } + + /** + * Diese Methode läd alle offenen Steuerbescheide + * + * @return + */ + private List loadInvoices(String dbtrNumber) { + List result = new ArrayList<>(); + + String query = "(type:workitem) AND dbtr.number:" + dbtrNumber + + " AND $modelversion:rechnungsausgang-*"; + try { + result = documentService.find( + query, 9999, 0, + "invoice.number", false); + } catch (QueryException e) { + e.printStackTrace(); + } + return result; + } + +} \ No newline at end of file diff --git a/templates/soa_template.xlsx b/templates/soa_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e1b0fe490be959dc18f24c660806a195b5a87c03 GIT binary patch literal 50427 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 wf2O~` true - + @@ -123,7 +123,6 @@ th { font-weight: bold;} $workflowgroup - $workflowstatus]]> SequenceFlow_10 sequenceFlow_OL83kQ - sequenceFlow_P5vJKg @@ -164,7 +163,7 @@ th { font-weight: bold;} $workflowgroup - $workflowstatus]]> SequenceFlow_4 sequenceFlow_17AQjg - sequenceFlow_nZPhew + sequenceFlow_1K0l0g @@ -308,24 +307,47 @@ th { font-weight: bold;} - + false Mahnwesen - - Steuerbescheide Template - - steuerbescheide_$lasteventdate.xlsx - + + SOA Template + + soa_dbtr.number_$lasteventdate.xlsx + - K6 + I6 $lasteventdate date + + D6 + dbtr.name + date + + + G10 + Total AED + + + H10 + Saldo AED + + + I10 + Total USD + + + J10 + Saldo USD + + + TOTAL1;TOTAL2;TOTAL3;TOTAL4 ]]> @@ -333,15 +355,8 @@ th { font-weight: bold;} - sequenceFlow_nZPhew - sequenceFlow_P5vJKg + sequenceFlow_1K0l0g - - - - - - @@ -355,7 +370,7 @@ th { font-weight: bold;} - + @@ -365,6 +380,9 @@ th { font-weight: bold;} + + + @@ -446,15 +464,6 @@ th { font-weight: bold;} - - - - - - - - - @@ -467,6 +476,10 @@ th { font-weight: bold;} + + + +