From 3b7742ee07be87aa64b016dc7edc59ca0e636550 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Mon, 7 Apr 2025 11:26:00 +0200 Subject: [PATCH] Excel Export Ausgangsrechnungen --- .../mahnlauf/ExcelExportController.java | 151 ++++++++++++++++++ .../layout/commandbox_admin_custom.xhtml | 5 +- .../admin/excel_export_rechnungsausgang.xhtml | 147 +++++++++++++++++ 3 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java create mode 100644 office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java new file mode 100644 index 0000000..d8849fe --- /dev/null +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java @@ -0,0 +1,151 @@ +package com.alexanderlogistics.mahnlauf; + +import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.time.YearMonth; +import java.time.ZoneId; +import java.util.Calendar; +import java.util.Date; +import java.util.logging.Logger; + +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.engine.DocumentService; +import org.imixs.workflow.exceptions.PluginException; +import org.imixs.workflow.faces.data.DocumentController; +import org.imixs.workflow.faces.data.WorkflowController; +import org.imixs.workflow.office.forms.CustomFormItem; + +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.context.ConversationScoped; +import jakarta.inject.Inject; +import jakarta.inject.Named; + +/** + * Der ExcelExportController exportiert rechnungen anhand von Filterangaben + * (excel_export_rechnungsausgang.xhmlt) nach Excel. + * + * Die Ausgabe ist auf maximal 3000 Zeilen eingeschränkt + * + * @author rsoika + * + */ +@Named +@ConversationScoped +public class ExcelExportController implements Serializable { + + private static final long serialVersionUID = 1L; + private static Logger logger = Logger.getLogger(ExcelExportController.class.getName()); + + @Inject + protected DocumentService documentService; + + @Inject + WorkflowController workflowController; + + @Inject + DocumentController documentController; + + private ItemCollection filter; + private CustomFormItem dbtrItem; + + public ExcelExportController() { + } + + @PostConstruct + public void init() { + reset(); + } + + public ItemCollection getFilter() { + return filter; + } + + public void setFilter(ItemCollection filter) { + this.filter = filter; + } + + /** + * Fuert verschiedene Queries aus um eine Analyse der Sachprufung durchzuführen. + * + * @throws PluginException + */ + public void export() throws PluginException { + + logger.info("start export...."); + + Date start = filter.getItemValueDate("start"); + Date stop = filter.getItemValueDate("stop"); + + logger.info("...daterange=" + start + " - " + stop); + + // serach date range? + String sDateFrom = "191401070000"; // because * did not work here + String sDateTo = "211401070000"; + SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMddHHmm"); + + if (start != null) { + Calendar cal = Calendar.getInstance(); + cal.setTime(start); + sDateFrom = dateformat.format(cal.getTime()); + } + if (stop != null) { + Calendar cal = Calendar.getInstance(); + cal.setTime(stop); + cal.add(Calendar.DATE, 1); + sDateTo = dateformat.format(cal.getTime()); + } + + // query zeit + String query = "(type:workitem OR type:workitemarchive) "; + if (start != null && stop != null) { + query += "AND (invoice.date:[" + sDateFrom + " TO " + sDateTo + "]) "; + } else { + throw new PluginException("ERROR", "Bitte geben Sie einen Zeitraum an", null); + } + logger.info(query); + + // query Sachprüfung + + if (!filter.getItemValueString("space.name").isEmpty()) { + query += " AND (space.name:" + filter.getItemValueString("space.name") + ")"; + } + + if (workflowController.getWorkitem() != null + && !workflowController.getWorkitem().getItemValueString("dbtr.number").isEmpty()) { + query += " AND (dbtr.number:" + workflowController.getWorkitem().getItemValueString("dbtr.number") + ")"; + } + + logger.info("Query=" + query); + } + + /** + * This method reset the search and input state. + */ + public void reset() { + filter = new ItemCollection(); + + // compute start stop based on current month + YearMonth startYearMonth = YearMonth.now(); + java.time.LocalDate startOfMonthDate = startYearMonth.atDay(1); + java.time.LocalDate endOfMonthDate = startYearMonth.atEndOfMonth(); + filter.setItemValue("start", + java.util.Date.from(startOfMonthDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); + filter.setItemValue("stop", + java.util.Date.from(endOfMonthDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); + workflowController.setWorkitem(new ItemCollection()); + + // debtr item + dbtrItem = new CustomFormItem("dbtr.number", "text", "", false, false, false, "", null, false, 0); + + // public CustomFormItem(String name, String type, String label, boolean + // required, boolean readonly, boolean disabled, + // String options, + // String path, boolean hide, int span) { + } + + public CustomFormItem getItem() { + // dbtrItem.setName("dbtr.number"); + return dbtrItem; + } + +} diff --git a/office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml b/office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml index 60b71e4..9144306 100644 --- a/office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml @@ -14,13 +14,16 @@
  • Analyse Rechnungseingang
  • +
  • + Excel Export Rechnungsausgang +
  • Creditor/Debitor Management
  • OP List Export
  • -
  • +
  • Parameter
  • diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml new file mode 100644 index 0000000..903ac96 --- /dev/null +++ b/office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +
    +
    +

    Excle Export Ausgangsrechnungen

    +
    + + + + +
    + + +
    +

    Der folgende Report exportiert Ausgangsrechnungen, in eine Excel Datei. Der Export ist auf maximal 3000 Einträge pro Tabelle beschränkt +

    +
    +
    +
    +
    + Von:* +
    +
    + + + + + + +
    +
    + +
    +
    + Bis:* +
    +
    + + + +
    +
    + + + +
    +
    + Abteilung: +
    +
    + + + +
    +
    + +
    +
    + Debitor: +
    +
    + + + + +
    +
    + + +
    +
    + Positionsnummer: +
    +
    + + + +
    +
    + + +
    + + + + + + +
    + + + + + + +
    + +
    + + + + + +
    +
    +
    + + + +
    \ No newline at end of file