migration auf imixs-office-workflow-5.0.2

This commit is contained in:
Ralph Soika 2024-07-25 19:15:15 +02:00
parent 123c3a052c
commit b495b296d0
45 changed files with 422 additions and 518 deletions

View file

@ -1,7 +1,9 @@
FROM imixs/imixs-office-workflow:4.5.2 FROM imixs/imixs-office-workflow
#FROM imixs/imixs-office-workflow:latest
#FROM imixs/imixs-office-workflow:4.4.0
# Setup debug configuration
# COPY ./docker/configuration/standalone-debug.xml /opt/jboss/wildfly/standalone/configuration/
# Deploy artefact # Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/* RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/ COPY ./*-app/target/*-app.war /opt/jboss/wildfly/standalone/deployments/

View file

@ -1,6 +1,4 @@
FROM imixs/imixs-office-workflow:4.5.2 FROM imixs/imixs-office-workflow
#FROM imixs/imixs-office-workflow:latest
#FROM imixs/imixs-office-workflow:4.4.0
# Deploy artefact # Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/* RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
@ -8,3 +6,4 @@ COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
# Run in Debug Mode # Run in Debug Mode
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"] CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]

View file

@ -36,13 +36,13 @@ services:
#OCR_SERVICE_MAXFILESIZE: "1048576" #OCR_SERVICE_MAXFILESIZE: "1048576"
#OCR_PDF_MODE: "OCR_ONLY | TEXT_ONLY | TEXT_AND_OCR (default)" #OCR_PDF_MODE: "OCR_ONLY | TEXT_ONLY | TEXT_AND_OCR (default)"
OCR_PDF_MODE: "OCR_ONLY" OCR_PDF_MODE: "OCR_ONLY"
ML_SERVICE_ENDPOINT: "http://imixs-ml-spacy:8000/" #ML_SERVICE_ENDPOINT: "http://imixs-ml-spacy:8000/"
# Enable Training Scheduler # Enable Training Scheduler
#ML_TRAINNG_SCHEDULER_ENABLED: "true" #ML_TRAINNG_SCHEDULER_ENABLED: "true"
# TYPO Issue #28 # TYPO Issue #28
ML_TRAINING_SCHEDULER_ENABLED: "true" #ML_TRAINING_SCHEDULER_ENABLED: "true"
ML_TRAINING_SCHEDULER_INTERVAL: "10000" #ML_TRAINING_SCHEDULER_INTERVAL: "10000"
ML_TRAINING_SCHEDULER_INITIALDELAY: "30000" #ML_TRAINING_SCHEDULER_INITIALDELAY: "30000"
ports: ports:
- "8080:8080" - "8080:8080"
@ -66,48 +66,13 @@ services:
###############################################
# Imixs-ML-spaCy Service
###############################################
imixs-ml-spacy:
#image: imixs/imixs-ml-spacy:1.1.1
#image: imixs/imixs-ml-spacy:1.1.4
#image: imixs/imixs-ml-spacy:1.1.6
image: imixs/imixs-ml-spacy:latest
environment:
PYTHONUNBUFFERED: 1
TZ: "Europe/Berlin"
MODEL_LANGUAGE: "de"
MODEL_PATH: "models/"
ports:
- "8000:8000"
volumes:
- ./models/:/usr/src/app/models/
###############################################
# Imixs-ML Training service
###############################################
imixs-ml-training:
image: imixs/imixs-ml-training:latest
environment:
PAYARA_ARGS: "--debug"
TZ: "Europe/Berlin"
OCR_SERVICE_ENDPOINT: "http://tika:9998/tika"
#OCR_PDF_MODE: "OCR_ONLY | TEXT_ONLY | TEXT_AND_OCR (default)"
OCR_PDF_MODE: "OCR_ONLY"
# Payara-Micor ENV
MP_OPENAPI_SERVERS: "http://localhost:8081"
ports:
- "8081:8080"
- "9009:9009"
############################################### ###############################################
# Imixs-Admin # Imixs-Admin
############################################### ###############################################
imixsadmin: #imixsadmin:
image: imixs/imixs-admin # image: imixs/imixs-admin
ports: # ports:
- "8888:8080" # - "8888:8080"
############################################### ###############################################
# Mailgateway # Mailgateway
@ -120,13 +85,6 @@ services:
EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.16.0.0/12:192.168.0.0/16" EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.16.0.0/12:192.168.0.0/16"
###############################################
# Gotenberg Service (HTML2PDF converter)
###############################################
# gotenberg:
# image: thecodingmachine/gotenberg:6
# ports:
# - "3000:3000"
volumes: volumes:
dbdata: dbdata:

View file

@ -6,7 +6,7 @@
<parent> <parent>
<artifactId>office-alexander-logistics</artifactId> <artifactId>office-alexander-logistics</artifactId>
<groupId>com.alexander-logistics</groupId> <groupId>com.alexander-logistics</groupId>
<version>1.2.21</version> <version>1.3.0</version>
</parent> </parent>
<artifactId>office-alexander-logistics-app</artifactId> <artifactId>office-alexander-logistics-app</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
@ -302,31 +302,26 @@
<artifactId>imixs-adapters-poi</artifactId> <artifactId>imixs-adapters-poi</artifactId>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- Imixs-ML -->
<dependency> <dependency>
<groupId>org.imixs.workflow</groupId> <groupId>org.imixs.workflow</groupId>
<artifactId>imixs-ml-workflow</artifactId> <artifactId>imixs-ai-workflow</artifactId>
<version>${org.imixs.ml.version}</version> <version>${org.imixs.ai.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
<!-- Apache PDFBox --> <!-- Apache PDFBox -->
<dependency> <dependency>
<groupId>org.apache.pdfbox</groupId> <groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId> <artifactId>pdfbox</artifactId>
<version>2.0.19</version> <version>${apache.pdfbox.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- xsl 2.0 support -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.9.1-4</version>
</dependency>
<!-- Apache Commons FTP Client --> <!-- Apache Commons FTP Client -->
<dependency> <dependency>
<groupId>commons-net</groupId> <groupId>commons-net</groupId>
@ -382,11 +377,5 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.imixs.workflow</groupId>
<artifactId>imixs-melman</artifactId>
<version>${org.imixs.melman.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View file

@ -23,11 +23,11 @@
*******************************************************************************/ *******************************************************************************/
package com.alexanderlogistics; package com.alexanderlogistics;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import org.imixs.workflow.office.config.ConfigController; import org.imixs.workflow.office.config.ConfigController;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Named;
/** /**
* The Custom Config Controller for TAXES and Invoice typs * The Custom Config Controller for TAXES and Invoice typs
* *

View file

@ -9,20 +9,20 @@ import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.enterprise.context.ConversationScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.util.ErrorHandler; import org.imixs.workflow.faces.util.ErrorHandler;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.json.Json;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
/** /**
* The CargosoftController CDI Bean provides Front-End methods for the cargosoft * The CargosoftController CDI Bean provides Front-End methods for the cargosoft
* kreditore objects. * kreditore objects.

View file

@ -6,10 +6,6 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import javax.xml.bind.JAXBException;
import javax.xml.transform.TransformerException;
import org.eclipse.microprofile.config.inject.ConfigProperty; import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.imixs.archive.core.SnapshotService; import org.imixs.archive.core.SnapshotService;
import org.imixs.workflow.FileData; import org.imixs.workflow.FileData;
@ -20,6 +16,8 @@ import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import jakarta.inject.Inject;
/** /**
* This adapter exports the invoice data to a ftp server connected to cargosoft. * This adapter exports the invoice data to a ftp server connected to cargosoft.
* <p> * <p>
@ -115,7 +113,8 @@ public class CargosoftExportAdapter implements SignalAdapter {
// finally append the success event id // finally append the success event id
document.event(EVENT_SUCCESS); document.event(EVENT_SUCCESS);
} catch (PluginException | JAXBException | TransformerException | IOException e) { } catch (PluginException | IOException
| jakarta.xml.bind.JAXBException | javax.xml.transform.TransformerException e) {
logger.severe("cargosoft export failed: " + e.getMessage()); logger.severe("cargosoft export failed: " + e.getMessage());
document.setItemValue("cargosoft.error", e.getMessage()); document.setItemValue("cargosoft.error", e.getMessage());
document.event(EVENT_FAILURE); document.event(EVENT_FAILURE);

View file

@ -8,8 +8,6 @@ import java.util.StringTokenizer;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.WorkflowKernel; import org.imixs.workflow.WorkflowKernel;
@ -20,6 +18,8 @@ import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.office.util.SequenceService; import org.imixs.workflow.office.util.SequenceService;
import jakarta.inject.Inject;
/** /**
* Der CargosoftSplitAdapter erezeugt anhand der Positionstablelle eignee * Der CargosoftSplitAdapter erezeugt anhand der Positionstablelle eignee
* cargosoft export workitems, getrennt für jede Buchungsperdiode. Dies ist * cargosoft export workitems, getrennt für jede Buchungsperdiode. Dies ist

View file

@ -32,16 +32,16 @@ import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.marty.team.TeamController; import org.imixs.marty.team.TeamController;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.office.views.SearchController; import org.imixs.workflow.office.views.SearchController;
import org.imixs.workflow.office.views.SearchEvent; import org.imixs.workflow.office.views.SearchEvent;
import jakarta.enterprise.context.RequestScoped;
import jakarta.enterprise.event.Observes;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der CustomSearchController reagiert auf SeachEvents und erweitert das Search * Der CustomSearchController reagiert auf SeachEvents und erweitert das Search
* Query um Rechnungbetrag von-bis. * Query um Rechnungbetrag von-bis.

View file

@ -18,12 +18,6 @@ import java.util.TreeMap;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ConversationScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
@ -31,6 +25,12 @@ import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.office.views.SearchController; import org.imixs.workflow.office.views.SearchController;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der InvoiceAnalyseController dient zur Auswertung der Sachprüfungs WOrklfow * Der InvoiceAnalyseController dient zur Auswertung der Sachprüfungs WOrklfow
* Schritte. Die Analyse Seite ist büer das Admin Menü erreichbar. * Schritte. Die Analyse Seite ist büer das Admin Menü erreichbar.
@ -83,6 +83,7 @@ public class DebitorStatistikController implements Serializable {
} }
} }
} }
public ItemCollection getWorkitem() { public ItemCollection getWorkitem() {
return workflowController.getWorkitem(); return workflowController.getWorkitem();
} }
@ -100,6 +101,7 @@ public class DebitorStatistikController implements Serializable {
public String getBookmark() { public String getBookmark() {
return "/pages/dbtr-stats.xhtml?dbtr.number=" + getDbtNr() + "&faces-redirect=true"; return "/pages/dbtr-stats.xhtml?dbtr.number=" + getDbtNr() + "&faces-redirect=true";
} }
/* /*
* Gesamt * Gesamt
*/ */
@ -108,6 +110,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\""; + " AND $workflowgroup:\"Rechnungsausgang\"";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " gesamt&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " gesamt&query=" + query;
} }
public int getRechnungen() { public int getRechnungen() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -123,7 +126,6 @@ public class DebitorStatistikController implements Serializable {
return result; return result;
} }
/* /*
* Bezahlt * Bezahlt
*/ */
@ -132,6 +134,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5900 TO 5999])"; + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5900 TO 5999])";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " bezahlt&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " bezahlt&query=" + query;
} }
public int getRechnungenBezahlt() { public int getRechnungenBezahlt() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -155,6 +158,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5000 TO 5099])"; + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5000 TO 5099])";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " offen&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " offen&query=" + query;
} }
public int getRechnungenOffen() { public int getRechnungenOffen() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -178,6 +182,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5100 TO 5199])"; + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5100 TO 5199])";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " fällig&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " fällig&query=" + query;
} }
public int getRechnungenFaellig() { public int getRechnungenFaellig() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -201,6 +206,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5200 TO 5299])"; + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5200 TO 5299])";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " in Mahnung&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " in Mahnung&query=" + query;
} }
public int getRechnungenGemahnt() { public int getRechnungenGemahnt() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -224,6 +230,7 @@ public class DebitorStatistikController implements Serializable {
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5300 TO 5399])"; + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5300 TO 5399])";
return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " in Inkasso&query=" + query; return "/pages/workitems/worklist?title=Rechnungen " + getDbtNr() + " in Inkasso&query=" + query;
} }
public int getRechnungenInkasso() { public int getRechnungenInkasso() {
int result = 0; int result = 0;
if (getDbtNr().isEmpty()) { if (getDbtNr().isEmpty()) {
@ -390,6 +397,7 @@ public class DebitorStatistikController implements Serializable {
} }
} }
/** /**
* returns * returns
* *
@ -559,7 +567,6 @@ public class DebitorStatistikController implements Serializable {
result = result result = result
+ " trendlineLinear: { colorMin: \"red\", colorMax: \"green\", lineStyle: \"dotted\", width: 2 , projection: true },"; + " trendlineLinear: { colorMin: \"red\", colorMax: \"green\", lineStyle: \"dotted\", width: 2 , projection: true },";
result = result + "data: ["; result = result + "data: [";
for (Map.Entry<String, DebitorStatistikData> entry : stats.entrySet()) { for (Map.Entry<String, DebitorStatistikData> entry : stats.entrySet()) {
result = result + entry.getValue().getAveragePaymentDays() + ","; result = result + entry.getValue().getAveragePaymentDays() + ",";

View file

@ -29,9 +29,7 @@ import java.io.InputStream;
import java.util.Optional; import java.util.Optional;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.Stateless; import org.apache.commons.compress.archivers.ArchiveException;
import javax.inject.Inject;
import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPSClient; import org.apache.commons.net.ftp.FTPSClient;
@ -39,6 +37,9 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.imixs.workflow.FileData; import org.imixs.workflow.FileData;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
/** /**
* The FTPConnector service provides methods to push invoices to cargosoft * The FTPConnector service provides methods to push invoices to cargosoft
* *
@ -55,7 +56,7 @@ public class FTPConnector {
public static final String ENV_EXPORT_FTP_PORT = "cargosoft.export.ftp.port"; public static final String ENV_EXPORT_FTP_PORT = "cargosoft.export.ftp.port";
public static final String ENV_EXPORT_FTP_USER = "cargosoft.export.ftp.user"; public static final String ENV_EXPORT_FTP_USER = "cargosoft.export.ftp.user";
public static final String ENV_EXPORT_FTP_PASSWORD = "cargosoft.export.ftp.password"; public static final String ENV_EXPORT_FTP_PASSWORD = "cargosoft.export.ftp.password";
public static final String ENV_EXPORT_FTP_MAX_ATTACHMENT_SIZED = "cargosoft.export.ftp.maxattachmentsize"; public static final String ENV_EXPORT_FTP_MAX_ATTACHMENT_SIZED = "cargosoft.export.ftp.maxattachmentsize";
private static Logger logger = Logger.getLogger(FTPConnector.class.getName()); private static Logger logger = Logger.getLogger(FTPConnector.class.getName());
@ -92,7 +93,7 @@ public class FTPConnector {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed: no ftp host name provided (" + ENV_EXPORT_FTP_HOST + ")!"); "FTP file transfer failed: no ftp host name provided (" + ENV_EXPORT_FTP_HOST + ")!");
} }
String fileName = fileData.getName(); String fileName = fileData.getName();
// Compute file path // Compute file path

View file

@ -10,15 +10,15 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.index.Category; import org.imixs.workflow.engine.index.Category;
import org.imixs.workflow.engine.index.SearchService; import org.imixs.workflow.engine.index.SearchService;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der InvoiceAnalyseController dient zur Auswertung der Sachprüfungs WOrklfow * Der InvoiceAnalyseController dient zur Auswertung der Sachprüfungs WOrklfow
* Schritte. Die Analyse Seite ist büer das Admin Menü erreichbar. * Schritte. Die Analyse Seite ist büer das Admin Menü erreichbar.
@ -73,10 +73,10 @@ public class InvoiceAnalyseController implements Serializable {
} }
public Category getBuchhaltung() { public Category getBuchhaltung() {
return buchhaltung; return buchhaltung;
} }
public int totalCountByCategory(Category cat) { public int totalCountByCategory(Category cat) {
int result = 0; int result = 0;
Collection<Integer> allCounts = cat.getLabels().values(); Collection<Integer> allCounts = cat.getLabels().values();
@ -138,18 +138,18 @@ public class InvoiceAnalyseController implements Serializable {
sachpruefung = taxResult.get(0); sachpruefung = taxResult.get(0);
} }
// query Buchhaltung
query = "(type:workitem OR type:workitemarchive) ";
if (start != null || stop != null) {
query += "AND (taxonomy.buchhaltung.stop:[" + sDateFrom + " TO " + sDateTo + "]) ";
}
logger.info(query);
taxResult = searchService.getTaxonomyByQuery(query, "taxonomy.buchhaltung.stop.by");
if (taxResult.size() > 0) {
buchhaltung = taxResult.get(0);
} // query Buchhaltung
query = "(type:workitem OR type:workitemarchive) ";
if (start != null || stop != null) {
query += "AND (taxonomy.buchhaltung.stop:[" + sDateFrom + " TO " + sDateTo + "]) ";
}
logger.info(query);
taxResult = searchService.getTaxonomyByQuery(query, "taxonomy.buchhaltung.stop.by");
if (taxResult.size() > 0) {
buchhaltung = taxResult.get(0);
}
} }

View file

@ -2,8 +2,6 @@ package com.alexanderlogistics;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
@ -13,6 +11,8 @@ import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import jakarta.inject.Inject;
/** /**
* Der InvoiceDispatchAdapter verteilt die vom Abteilungsleiter ausgewählten * Der InvoiceDispatchAdapter verteilt die vom Abteilungsleiter ausgewählten
* Rechnungen * Rechnungen
@ -48,15 +48,15 @@ public class InvoiceDispatchAdapter implements SignalAdapter {
String sSelection = document.getItemValueString("invoice.selection"); String sSelection = document.getItemValueString("invoice.selection");
// cut first , // cut first ,
if (sSelection.startsWith(",")) { if (sSelection.startsWith(",")) {
sSelection=sSelection.substring(1); sSelection = sSelection.substring(1);
} }
String[] ids = sSelection.split(","); String[] ids = sSelection.split(",");
if (ids.length==0 || ids[0].isEmpty()) { if (ids.length == 0 || ids[0].isEmpty()) {
throw new PluginException(InvoiceDispatchAdapter.class.getSimpleName(), "PROCESSING_ERROR", throw new PluginException(InvoiceDispatchAdapter.class.getSimpleName(), "PROCESSING_ERROR",
"Es wurden keine Rechnungen zur Verteilung ausgewählt."); "Es wurden keine Rechnungen zur Verteilung ausgewählt.");
} }
for (String id : ids) { for (String id : ids) {
// load invoice // load invoice
ItemCollection invoice = workflowService.getWorkItem(id); ItemCollection invoice = workflowService.getWorkItem(id);

View file

@ -5,15 +5,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.util.LoginController; import org.imixs.workflow.faces.util.LoginController;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* The InvoiceDispatchController loads open workitems for the current user * The InvoiceDispatchController loads open workitems for the current user
* *
@ -34,9 +34,8 @@ public class InvoiceDispatchController implements Serializable {
protected LoginController loginController; protected LoginController loginController;
private List<ItemCollection> invoices = null; private List<ItemCollection> invoices = null;
private String filter =null; private String filter = null;
public String getFilter() { public String getFilter() {
return filter; return filter;
} }
@ -54,19 +53,20 @@ public class InvoiceDispatchController implements Serializable {
* *
*/ */
public void searchInvoices() { public void searchInvoices() {
long l=System.currentTimeMillis(); long l = System.currentTimeMillis();
String owner = loginController.getUserPrincipal(); String owner = loginController.getUserPrincipal();
String query = "(type:workitem) AND ($modelversion:rechnungseingang-de*) AND ($taskid:5100) AND ($owner:" String query = "(type:workitem) AND ($modelversion:rechnungseingang-de*) AND ($taskid:5100) AND ($owner:"
+ owner + ")"; + owner + ")";
if (filter!=null && !filter.isEmpty()) { if (filter != null && !filter.isEmpty()) {
query=query + " AND "+filter.toLowerCase() +"*"; query = query + " AND " + filter.toLowerCase() + "*";
} }
logger.info("search: " + query); logger.info("search: " + query);
try { try {
invoices = documentService.findStubs(query, 2000, 0, "$created", false); invoices = documentService.findStubs(query, 2000, 0, "$created", false);
logger.info("found " + invoices.size() + " invoices for StapelVerarbeitung in " + (System.currentTimeMillis()-l) + "ms"); logger.info("found " + invoices.size() + " invoices for StapelVerarbeitung in "
+ (System.currentTimeMillis() - l) + "ms");
} catch (QueryException e) { } catch (QueryException e) {
e.printStackTrace(); e.printStackTrace();
reset(); reset();

View file

@ -1,11 +1,11 @@
package com.alexanderlogistics; package com.alexanderlogistics;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.plugins.AbstractPlugin; import org.imixs.workflow.engine.plugins.AbstractPlugin;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import jakarta.inject.Inject;
/** /**
* Das InvoiceOutgoingPlugin aktualisiert die Debitor E-Mail Adresse * Das InvoiceOutgoingPlugin aktualisiert die Debitor E-Mail Adresse
* *

View file

@ -6,14 +6,14 @@ import java.util.logging.Logger;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.plugins.AbstractPlugin; import org.imixs.workflow.engine.plugins.AbstractPlugin;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.util.ResourceBundleHandler; import org.imixs.workflow.faces.util.ResourceBundleHandler;
import jakarta.inject.Inject;
/** /**
* Das InvoicePlugin prüft die Eingaben auf Gültigkeit, so dass diese problemlos * Das InvoicePlugin prüft die Eingaben auf Gültigkeit, so dass diese problemlos
* nach Cargosoft exportiert werden können. * nach Cargosoft exportiert werden können.

View file

@ -33,14 +33,15 @@ import java.util.logging.Logger;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.annotation.security.RunAs; import javax.annotation.security.RunAs;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import jakarta.ejb.EJB;
import jakarta.ejb.Singleton;
/** /**
* Der KreditorService wird verwendet um einen Kreditor zu finden oder neue * Der KreditorService wird verwendet um einen Kreditor zu finden oder neue
* IBAN/BIC kombinationen aufzunehmen. * IBAN/BIC kombinationen aufzunehmen.
@ -67,7 +68,8 @@ public class KreditorDebitorService {
DocumentService documentService; DocumentService documentService;
/** /**
* Diese Method sucht einen Kreditor/Debitor. Bei Cargosoft haben kreditoren und debitoren * Diese Method sucht einen Kreditor/Debitor. Bei Cargosoft haben kreditoren und
* debitoren
* die selbe nummer und haben nur ein führendes D/K (Absolutler Irrsinn) * die selbe nummer und haben nur ein führendes D/K (Absolutler Irrsinn)
* <p> * <p>
* Diese Methode erwartet das führende K oder D * Diese Methode erwartet das führende K oder D
@ -76,8 +78,9 @@ public class KreditorDebitorService {
*/ */
public ItemCollection findCreditorDebitor(String cdtrNumber) throws PluginException { public ItemCollection findCreditorDebitor(String cdtrNumber) throws PluginException {
if (cdtrNumber==null || !(cdtrNumber.startsWith("K") || cdtrNumber.startsWith("D"))) { if (cdtrNumber == null || !(cdtrNumber.startsWith("K") || cdtrNumber.startsWith("D"))) {
throw new PluginException(PluginException.class.getName(), "QUERY ERROR", "Invalid debitor/creditor number - prafix K/D expected!"); throw new PluginException(PluginException.class.getName(), "QUERY ERROR",
"Invalid debitor/creditor number - prafix K/D expected!");
} }
try { try {
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")"; String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")";
@ -93,18 +96,17 @@ public class KreditorDebitorService {
return null; return null;
} }
/** /**
* Diese Method sucht einen Kreditor. * Diese Method sucht einen Kreditor.
* <p> * <p>
* Diese Methode erwartet das führende K * Diese Methode erwartet das führende K
* *
* @throws PluginException * @throws PluginException
*/ */
public ItemCollection findCreditor(String cdtrNumber) throws PluginException { public ItemCollection findCreditor(String cdtrNumber) throws PluginException {
if ((!cdtrNumber.startsWith("K"))) { if ((!cdtrNumber.startsWith("K"))) {
cdtrNumber="K"+cdtrNumber; cdtrNumber = "K" + cdtrNumber;
} }
try { try {
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")"; String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")";
@ -119,18 +121,18 @@ public class KreditorDebitorService {
return null; return null;
} }
/** /**
* Diese Method sucht einen Debitor. * Diese Method sucht einen Debitor.
* <p> * <p>
* Diese Methode erwartet das führende D * Diese Methode erwartet das führende D
* *
* @throws PluginException * @throws PluginException
*/ */
public ItemCollection findDebitor(String dbtrNumber) throws PluginException { public ItemCollection findDebitor(String dbtrNumber) throws PluginException {
if ((!dbtrNumber.startsWith("D"))) { if ((!dbtrNumber.startsWith("D"))) {
dbtrNumber="D"+dbtrNumber; dbtrNumber = "D" + dbtrNumber;
} }
try { try {
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + dbtrNumber + ")"; String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + dbtrNumber + ")";
@ -146,8 +148,6 @@ public class KreditorDebitorService {
return null; return null;
} }
/** /**
* Diese Methode übertragt neue IBAN/BIC kombis in den kreditor * Diese Methode übertragt neue IBAN/BIC kombis in den kreditor
* *

View file

@ -7,12 +7,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.enterprise.event.Observes;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel; import org.imixs.workflow.WorkflowKernel;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
@ -21,6 +15,12 @@ import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.faces.data.WorkflowEvent; import org.imixs.workflow.faces.data.WorkflowEvent;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.enterprise.event.Observes;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der OPListeController dient dazu eine liste aller offenen Ausgangsrechnungen * Der OPListeController dient dazu eine liste aller offenen Ausgangsrechnungen
* zu bilden * zu bilden

View file

@ -12,9 +12,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.inject.Inject;
import org.apache.poi.ss.usermodel.CellCopyPolicy; import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCell;
@ -32,6 +29,9 @@ import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.office.config.ConfigService;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import jakarta.ejb.EJB;
import jakarta.inject.Inject;
/** /**
* Der OPListExportAdapter importiert eine Excel Datei aus einem Textblock * Der OPListExportAdapter importiert eine Excel Datei aus einem Textblock
* *

View file

@ -16,8 +16,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.apache.poi.ss.usermodel.CellCopyPolicy; import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.FillPatternType;
@ -39,6 +37,8 @@ import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.office.config.ConfigService;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import jakarta.inject.Inject;
/** /**
* Der OPListExportAdapterByWeek ist ählnlich dem Der OPListExportAdapter. Er * Der OPListExportAdapterByWeek ist ählnlich dem Der OPListExportAdapter. Er
* erzeugt eine Excel tabelle mit allen offenen Rechnungen und gruppiert diese * erzeugt eine Excel tabelle mit allen offenen Rechnungen und gruppiert diese

View file

@ -26,12 +26,12 @@ package com.alexanderlogistics;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.engine.scheduler.SchedulerController; import org.imixs.workflow.engine.scheduler.SchedulerController;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* The OPListExportController is used to configure the OpListeExporterService. * The OPListExportController is used to configure the OpListeExporterService.
* This service is * This service is

View file

@ -31,10 +31,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import org.imixs.marty.team.TeamService; import org.imixs.marty.team.TeamService;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.WorkflowKernel; import org.imixs.workflow.WorkflowKernel;
@ -49,6 +45,10 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import jakarta.ejb.EJB;
import jakarta.ejb.TransactionAttribute;
import jakarta.ejb.TransactionAttributeType;
/** /**
* The OPListExportScheduler erzeugt für jeden Bereich ein neues Workitem mit * The OPListExportScheduler erzeugt für jeden Bereich ein neues Workitem mit
* einer Excel Datei mit allen offenen Rechnungen. * einer Excel Datei mit allen offenen Rechnungen.

View file

@ -4,15 +4,15 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.sepa.controller.SepaController; import org.imixs.workflow.sepa.controller.SepaController;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der SEPAExportControllerAGL dient dazu die IBAN/BIC einstellungen in * Der SEPAExportControllerAGL dient dazu die IBAN/BIC einstellungen in
* einem SEPA Export zu aktualiseren. Er wird von der Form * einem SEPA Export zu aktualiseren. Er wird von der Form

View file

@ -3,8 +3,6 @@ package com.alexanderlogistics;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
@ -15,6 +13,8 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import jakarta.inject.Inject;
/** /**
* Der ZahlungsavisAdapter verknüpft eine Rechnung mit einem Zahlungsavsis zum * Der ZahlungsavisAdapter verknüpft eine Rechnung mit einem Zahlungsavsis zum
* aktuellen Kreiditor. Existiert aktuell kein offener Zahlungsavis für diesen * aktuellen Kreiditor. Existiert aktuell kein offener Zahlungsavis für diesen

View file

@ -4,14 +4,14 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der ZahlungsavisController dient dazu eine bereits zugewiesene Rechnung * Der ZahlungsavisController dient dazu eine bereits zugewiesene Rechnung
* wieder aus dem Zahlugnsavis zu entfernen. * wieder aus dem Zahlugnsavis zu entfernen.

View file

@ -8,8 +8,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.apache.poi.ss.usermodel.CellCopyPolicy; import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow;
@ -23,9 +21,10 @@ import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import jakarta.inject.Inject;
/** /**
* Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock * Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock
* *
@ -43,7 +42,7 @@ import org.imixs.workflow.poi.POIFindReplaceAdapter;
* <p> * <p>
* Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer * Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer
* 16 eingefügt werden. * 16 eingefügt werden.
* <p> * <p>
* Dabei werden Gutschriften in spalte E und Rechnungen in Spalte F eingetrgen. * Dabei werden Gutschriften in spalte E und Rechnungen in Spalte F eingetrgen.
* <p> * <p>
* Abschliessend wird die Zelle 'TOTAL' noch aktualisiert. * Abschliessend wird die Zelle 'TOTAL' noch aktualisiert.
@ -139,9 +138,9 @@ public class ZahlungsavisExportAdapter extends POIFindReplaceAdapter {
XSSFRow referenceRow = sheet.getRow(cr.getRow()); XSSFRow referenceRow = sheet.getRow(cr.getRow());
int referenceRowPos = 16; int referenceRowPos = 16;
int rowPos = 16; int rowPos = 16;
//int lastRow = sheet.getLastRowNum(); // int lastRow = sheet.getLastRowNum();
int lastRow = 999; int lastRow = 999;
logger.finest("Last rownum="+lastRow); logger.finest("Last rownum=" + lastRow);
sheet.shiftRows(rowPos, lastRow, invoiceIDs.size(), true, true); sheet.shiftRows(rowPos, lastRow, invoiceIDs.size(), true, true);
for (String invoiceID : invoiceIDs) { for (String invoiceID : invoiceIDs) {
@ -155,7 +154,7 @@ public class ZahlungsavisExportAdapter extends POIFindReplaceAdapter {
row.getCell(1).setCellValue(invoice.getItemValueDate("invoice.date")); row.getCell(1).setCellValue(invoice.getItemValueDate("invoice.date"));
row.getCell(2).setCellValue(invoice.getItemValueString("invoice.number")); row.getCell(2).setCellValue(invoice.getItemValueString("invoice.number"));
row.getCell(3).setCellValue(invoice.getItemValueDate("invoice.duedate")); row.getCell(3).setCellValue(invoice.getItemValueDate("invoice.duedate"));
if ("credit".equals(invoice.getItemValueString("payment.type"))) { if ("credit".equals(invoice.getItemValueString("payment.type"))) {
// Gutschrift // Gutschrift
row.getCell(4).setCellValue(invoice.getItemValueDouble("invoice.total")); row.getCell(4).setCellValue(invoice.getItemValueDouble("invoice.total"));

View file

@ -3,13 +3,13 @@ package com.alexanderlogistics;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import jakarta.inject.Inject;
/** /**
* Der ZahlungseingangSaldoAdapter korrigiert den Saldo einer Ausgangsrechnung * Der ZahlungseingangSaldoAdapter korrigiert den Saldo einer Ausgangsrechnung
* anhand der Zahlungsdaten in einem Zahlungseingangsworkflow. * anhand der Zahlungsdaten in einem Zahlungseingangsworkflow.
@ -83,7 +83,7 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
if (paymentWarning.isEmpty()) { if (paymentWarning.isEmpty()) {
// falls mehr einzelsummen eingeben wurden als der oben angegeben Total Pamyment // falls mehr einzelsummen eingeben wurden als der oben angegeben Total Pamyment
// dann soll eine Warnung ausgegen werden. // dann soll eine Warnung ausgegen werden.
if ( InvoiceUtil.round(masterPaymentAmount+masterPaymentDifference) != InvoiceUtil.round(einzelPayments)) { if (InvoiceUtil.round(masterPaymentAmount + masterPaymentDifference) != InvoiceUtil.round(einzelPayments)) {
document.setItemValue("payment.warning", "invalid saldo"); document.setItemValue("payment.warning", "invalid saldo");
throw new PluginException(PluginException.class.getName(), throw new PluginException(PluginException.class.getName(),
ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED, ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED,
@ -91,7 +91,6 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
} }
} }
for (ItemCollection payment : paymentDetails) { for (ItemCollection payment : paymentDetails) {
ItemCollection invoice = zahlungseingangService.findInvoice(payment.getUniqueID()); ItemCollection invoice = zahlungseingangService.findInvoice(payment.getUniqueID());
@ -103,7 +102,6 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
float invoicePaymentAmount = payment.getItemValueFloat("payment.amount"); float invoicePaymentAmount = payment.getItemValueFloat("payment.amount");
float invoiceRate = invoice.getItemValueFloat("invoice.rate"); float invoiceRate = invoice.getItemValueFloat("invoice.rate");
if (!invoiceCurrency.equals(paymentCurrency)) { if (!invoiceCurrency.equals(paymentCurrency)) {
if (invoiceRate == 0) { if (invoiceRate == 0) {
throw new PluginException(PluginException.class.getName(), throw new PluginException(PluginException.class.getName(),
@ -112,19 +110,18 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
+ " nicht mit der Währung der Rechnung " + invoiceNumber + " übereinstimmt!"); + " nicht mit der Währung der Rechnung " + invoiceNumber + " übereinstimmt!");
} }
} }
/** /**
* Falls die Währung der Rechnung von der Währung der Zahlung abweicht, dann * Falls die Währung der Rechnung von der Währung der Zahlung abweicht, dann
* rechnen wir den PaymentAmmout mit der Rate aus. * rechnen wir den PaymentAmmout mit der Rate aus.
*/ */
if ("EUR".equals(paymentCurrency) && if ("EUR".equals(paymentCurrency) &&
!invoiceCurrency.equals(paymentCurrency) && invoiceRate != 0) { !invoiceCurrency.equals(paymentCurrency) && invoiceRate != 0) {
invoicePaymentAmount = invoicePaymentAmount*invoiceRate; invoicePaymentAmount = invoicePaymentAmount * invoiceRate;
// runde auf 2 Stellen // runde auf 2 Stellen
invoicePaymentAmount =(float) InvoiceUtil.round(invoicePaymentAmount); invoicePaymentAmount = (float) InvoiceUtil.round(invoicePaymentAmount);
} }
// vergeiche Restsaldo mit payment für diese Rechnung // vergeiche Restsaldo mit payment für diese Rechnung
if (Math.abs(InvoiceUtil.round(invoicePaymentAmount)) > Math.abs(InvoiceUtil.round(invoiceSaldo))) { if (Math.abs(InvoiceUtil.round(invoicePaymentAmount)) > Math.abs(InvoiceUtil.round(invoiceSaldo))) {
throw new PluginException(PluginException.class.getName(), throw new PluginException(PluginException.class.getName(),
@ -135,9 +132,8 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
// jetzt den Rechnungsbetrag verkleinern // jetzt den Rechnungsbetrag verkleinern
invoiceSaldo = invoiceSaldo - invoicePaymentAmount; invoiceSaldo = invoiceSaldo - invoicePaymentAmount;
invoiceSaldo = (float) InvoiceUtil.round(invoiceSaldo);
invoiceSaldo=(float) InvoiceUtil.round(invoiceSaldo);
invoice.setItemValue("invoice.saldo", invoiceSaldo); invoice.setItemValue("invoice.saldo", invoiceSaldo);
invoice.event(ZahlungseingangService.EVENT_UPDATE_INVOICE); invoice.event(ZahlungseingangService.EVENT_UPDATE_INVOICE);
zahlungseingangService.processInvoice(invoice); zahlungseingangService.processInvoice(invoice);

View file

@ -35,8 +35,6 @@ import java.util.logging.Logger;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.annotation.security.RunAs; import javax.annotation.security.RunAs;
import javax.ejb.Singleton;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
@ -46,6 +44,9 @@ import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import jakarta.ejb.Singleton;
import jakarta.inject.Inject;
/** /**
* Der ZahlungseingangService wird vom ZahlungseingangSaldoAdapter verwendet um * Der ZahlungseingangService wird vom ZahlungseingangSaldoAdapter verwendet um
* Ausgangsrechnungen zu akutalisieren. * Ausgangsrechnungen zu akutalisieren.
@ -63,7 +64,7 @@ import org.imixs.workflow.exceptions.ProcessingErrorException;
@Singleton @Singleton
@RunAs("org.imixs.ACCESSLEVEL.MANAGERACCESS") @RunAs("org.imixs.ACCESSLEVEL.MANAGERACCESS")
public class ZahlungseingangService { public class ZahlungseingangService {
public static final int EVENT_UPDATE_INVOICE = 200; public static final int EVENT_UPDATE_INVOICE = 200;
public static final String ERROR_PAYMENT_BOOKING_FAILED = "PAYMENT_BOOKING_FAILED"; public static final String ERROR_PAYMENT_BOOKING_FAILED = "PAYMENT_BOOKING_FAILED";
public static final String ITEM_PAYMENT_DETAILS = "payment.details"; public static final String ITEM_PAYMENT_DETAILS = "payment.details";

View file

@ -5,15 +5,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der ZollListController dient dazu in einer Zoll Liste die Rechnungen * Der ZollListController dient dazu in einer Zoll Liste die Rechnungen
* anzuzeigen, * anzuzeigen,
@ -28,70 +28,70 @@ import org.imixs.workflow.faces.data.WorkflowController;
@ConversationScoped @ConversationScoped
public class ZollListController implements Serializable { public class ZollListController implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final int TASK_ERSTELLUNG = 1000; public static final int TASK_ERSTELLUNG = 1000;
private static Logger logger = Logger.getLogger(ZollListController.class.getName()); private static Logger logger = Logger.getLogger(ZollListController.class.getName());
private String lastDbtrNumber = null; private String lastDbtrNumber = null;
private String currencyFilter = "-"; private String currencyFilter = "-";
private String lastCurrencyFilter = null; private String lastCurrencyFilter = null;
private List<ItemCollection> invoiceList = null; private List<ItemCollection> invoiceList = null;
@Inject @Inject
protected WorkflowController workflowController; protected WorkflowController workflowController;
@Inject @Inject
protected WorkflowService workflowService; protected WorkflowService workflowService;
@Inject @Inject
ZahlungseingangService zahlungseingangService; ZahlungseingangService zahlungseingangService;
@Inject @Inject
protected DocumentService documentService; protected DocumentService documentService;
/** /**
* Diese Methode ist eine Dummy Methode die nur mal 3 Rechnungen simmuliert. * Diese Methode ist eine Dummy Methode die nur mal 3 Rechnungen simmuliert.
* *
* Später wird diese Methode irgend was anderes machen. * Später wird diese Methode irgend was anderes machen.
* *
* *
* @return * @return
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<ItemCollection> getInvoices() { public List<ItemCollection> getInvoices() {
invoiceList = new ArrayList<ItemCollection>(); invoiceList = new ArrayList<ItemCollection>();
// dummy1 // dummy1
invoiceList.add(new ItemCollection() invoiceList.add(new ItemCollection()
.setItemValue("invoice.text", "LA-HOL-2401-002") .setItemValue("invoice.text", "LA-HOL-2401-002")
.setItemValue("invoice.atc", "ATC400058750120242452") .setItemValue("invoice.atc", "ATC400058750120242452")
.setItemValue("dbtr.name", "D18317 Big Belly Solar GmbH") .setItemValue("dbtr.name", "D18317 Big Belly Solar GmbH")
.setItemValue("invoice.ZOLL", 18.45) .setItemValue("invoice.ZOLL", 18.45)
.setItemValue("invoice.EUST", 0) .setItemValue("invoice.EUST", 0)
.setItemValue("invoice.number", "")); .setItemValue("invoice.number", ""));
invoiceList.add(new ItemCollection() invoiceList.add(new ItemCollection()
.setItemValue("invoice.text", "LA-HOL-2401-003") .setItemValue("invoice.text", "LA-HOL-2401-003")
.setItemValue("invoice.atc", "ATC400058750120242450") .setItemValue("invoice.atc", "ATC400058750120242450")
.setItemValue("dbtr.name", "D18317 Big Belly Solar GmbH") .setItemValue("dbtr.name", "D18317 Big Belly Solar GmbH")
.setItemValue("invoice.ZOLL", 100.45) .setItemValue("invoice.ZOLL", 100.45)
.setItemValue("invoice.EUST", 0) .setItemValue("invoice.EUST", 0)
.setItemValue("invoice.number", "")); .setItemValue("invoice.number", ""));
invoiceList.add(new ItemCollection() invoiceList.add(new ItemCollection()
.setItemValue("invoice.text", "LA-PAP-2401-003") .setItemValue("invoice.text", "LA-PAP-2401-003")
.setItemValue("invoice.atc", "345345") .setItemValue("invoice.atc", "345345")
.setItemValue("dbtr.name", "D18006 GPI BERLIN GMBH") .setItemValue("dbtr.name", "D18006 GPI BERLIN GMBH")
.setItemValue("invoice.ZOLL", 253.4) .setItemValue("invoice.ZOLL", 253.4)
.setItemValue("invoice.EUST", 0) .setItemValue("invoice.EUST", 0)
.setItemValue("invoice.number", "")); .setItemValue("invoice.number", ""));
return invoiceList; return invoiceList;
} }
} }

View file

@ -38,8 +38,6 @@ import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
@ -70,6 +68,9 @@ import org.xml.sax.SAXException;
import com.alexanderlogistics.InvoiceUtil; import com.alexanderlogistics.InvoiceUtil;
import com.alexanderlogistics.xml.CargosoftXMLInvoiceImportService; import com.alexanderlogistics.xml.CargosoftXMLInvoiceImportService;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
/** /**
** Dieser Service korrigiert falsch importierte Cargosoft daten. ** Dieser Service korrigiert falsch importierte Cargosoft daten.
* Ausgangsrechnungen die ein falsches Jahr haben. * Ausgangsrechnungen die ein falsches Jahr haben.

View file

@ -1,4 +1,5 @@
package com.alexanderlogistics.datev; package com.alexanderlogistics.datev;
/******************************************************************************* /*******************************************************************************
* Imixs Workflow Technology * Imixs Workflow Technology
* Copyright (C) 2003, 2008 Imixs Software Solutions GmbH, * Copyright (C) 2003, 2008 Imixs Software Solutions GmbH,
@ -25,12 +26,11 @@ package com.alexanderlogistics.datev;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import org.imixs.workflow.engine.scheduler.SchedulerController; import org.imixs.workflow.engine.scheduler.SchedulerController;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Named;
/** /**
* The DatevController is used to configure the DatevScheduler. This service is * The DatevController is used to configure the DatevScheduler. This service is
* used to generate datev export workitems. * used to generate datev export workitems.

View file

@ -33,8 +33,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPSClient; import org.apache.commons.net.ftp.FTPSClient;
@ -50,6 +48,8 @@ import org.imixs.workflow.engine.scheduler.SchedulerService;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import jakarta.ejb.EJB;
/** /**
* The CargosoftExportScheduler exportiert eine csv Datei auf eine FTP Laufwerk * The CargosoftExportScheduler exportiert eine csv Datei auf eine FTP Laufwerk
* mit allen noch offenen Rechnungen. Diese Datei wird von Cargosoft dann * mit allen noch offenen Rechnungen. Diese Datei wird von Cargosoft dann

View file

@ -12,8 +12,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.imixs.marty.team.TeamService; import org.imixs.marty.team.TeamService;
import org.imixs.workflow.FileData; import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
@ -32,6 +30,8 @@ import com.alexanderlogistics.InvoiceUtil;
import com.alexanderlogistics.KreditorDebitorService; import com.alexanderlogistics.KreditorDebitorService;
import com.alexanderlogistics.mahnlauf.MahnlaufService; import com.alexanderlogistics.mahnlauf.MahnlaufService;
import jakarta.inject.Inject;
/** /**
* Der DatevCargosoftImportAdapter liest eine von Cargosoft bereitgestellte * Der DatevCargosoftImportAdapter liest eine von Cargosoft bereitgestellte
* DATEV Datei ein und erzeugt Ausgangsrechnungs Workitems. Die Cargosoft DATEV * DATEV Datei ein und erzeugt Ausgangsrechnungs Workitems. Die Cargosoft DATEV

View file

@ -1,19 +1,7 @@
package com.alexanderlogistics.dwc; package com.alexanderlogistics.dwc;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.inject.Inject;
import javax.xml.bind.JAXBException;
import javax.xml.transform.TransformerException;
import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.ReportService; import org.imixs.workflow.engine.ReportService;
@ -21,7 +9,8 @@ import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.sepa.services.SepaWorkflowService; import org.imixs.workflow.sepa.services.SepaWorkflowService;
import com.alexanderlogistics.OPListExportAdapterByWeek; import jakarta.ejb.EJB;
import jakarta.inject.Inject;
/** /**
* TheSEPAExportAdapterNBD is an extension of the SEPAExportAdapter. * TheSEPAExportAdapterNBD is an extension of the SEPAExportAdapter.
@ -58,95 +47,24 @@ public class SEPAExportAdapterNBD implements SignalAdapter {
// Textblock laden // Textblock laden
// load the text block // load the text block
FileData fileData = loadTextBlockFileData(textblockRef, template); // FileData fileData = loadTextBlockFileData(textblockRef, template);
// do we found the document? // // do we found the document?
if (fileData == null) { // if (fileData == null) {
throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(), ERROR_CONFIG, // throw new PluginException(OPListExportAdapterByWeek.class.getSimpleName(),
"invalid op-list configuration in model event - template=" + template + " not found!"); // ERROR_CONFIG,
} // "invalid op-list configuration in model event - template=" + template + " not
fileData.setName(targetName); // found!");
// append document // }
logger.info("...append new op-list Template: " + targetName); // fileData.setName(targetName);
// // append document
// logger.info("...append new op-list Template: " + targetName);
document.addFileData(fileData); // document.addFileData(fileData);
/* Processing .... */ /* Processing .... */
String key = sepaExport.getItemValueString("name"); String key = sepaExport.getItemValueString("name");
// load the report
ItemCollection report = reportService.findReport(event.getItemValueString("txtReportName"));
if (report == null) {
throw new PluginException(SEPAExportAdapterNBD.class.getName(), SepaWorkflowService.REPORT_ERROR,
"Missing report definition. Unable to load report '" + event.getItemValueString("txtReportName")
+ "'. Please check model configuration ");
}
// get the data source based on the $workitemref ....
List<String> refList = sepaExport.getItemValue("$workitemref");
List<ItemCollection> data = new ArrayList<ItemCollection>();
ItemCollection configuration = sepaWorkflowService.loadConfiguration();
logger.info("...SEPA export started - " + refList.size() + " invoices found...");
for (String ref : refList) {
// load invoice
ItemCollection invoice = sepaWorkflowService.loadInvoice(ref);
if (invoice == null) {
logger.warning("Invoice '" + ref + "' not found! SEPA Export can not be executed");
continue;
}
// avoid unsupported characters in sepa fields
invoice = sepaWorkflowService.harmonizeSEPAItem(invoice, SepaWorkflowService.ITEM_CDTR_NAME);
invoice = sepaWorkflowService.harmonizeSEPAItem(invoice, SepaWorkflowService.ITEM_DBTR_NAME);
data.add(invoice);
}
// finally we add the sepa export document to the data collection
data.add(sepaExport);
// create the attachment based on the report definition
// attach a file to the current workitem
// create a harmonized debitor name for the filename.....
String sDepName = sepaExport.getItemValueString(SepaWorkflowService.ITEM_DBTR_NAME);
sDepName = sDepName.replace("&", "_");
sDepName = sDepName.replace(">", "_");
sDepName = sDepName.replace("<", "_");
sDepName = sDepName.replace(" ", "_");
// build a timestamp for the filename
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HHmm");
String sepaFileName = "sepa_" + sDepName + "_" + df.format(new Date()) + ".xml";
try {
// now we transform the data source
// if an optional report definition was defined, this report is used for XSL
// processing if not, than the main report definition is used
FileData filedata = null;
String optionalSepaReport = sepaExport.getItemValueString(SepaWorkflowService.ITEM_SEPA_REPORT);
ItemCollection reportOptional = reportService.findReport(optionalSepaReport);
if (reportOptional != null) {
// use optional report
filedata = reportService.transformDataSource(reportOptional, data, sepaFileName);
sepaWorkflowService.logMessage(
"...SEPA export report=" + sepaExport.getItemValueString(SepaWorkflowService.ITEM_SEPA_REPORT),
configuration, sepaExport);
} else {
if (!optionalSepaReport.isEmpty()) {
sepaWorkflowService.logMessage("...WARNING - SEPA export report " + optionalSepaReport
+ " not found! Default report will be used.", configuration, sepaExport);
}
// use the default report
filedata = reportService.transformDataSource(report, data, sepaFileName);
}
// attach the file
sepaExport.addFileData(filedata);
} catch (JAXBException | IOException | TransformerException e) {
throw new PluginException(SEPAExportAdapterNBD.class.getName(), SepaWorkflowService.REPORT_ERROR,
"Failed to generate SEPA File:" + e.getMessage());
}
// write log
logger.info("...SEPA export " + key + " finished.");
return sepaExport; return sepaExport;
} }

View file

@ -3,8 +3,6 @@ package com.alexanderlogistics.mahnlauf;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
@ -15,8 +13,11 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import jakarta.inject.Inject;
/** /**
* Der InkassoAppendAdapter verknüpft eine Rechnung mit einem Inkasso Workflow zum * Der InkassoAppendAdapter verknüpft eine Rechnung mit einem Inkasso Workflow
* zum
* aktuellen Debitor. Existiert aktuell kein Inkasso für diesen * aktuellen Debitor. Existiert aktuell kein Inkasso für diesen
* Debitor erzeugt der Adapter automatisch eine neue Prozessinstanz. * Debitor erzeugt der Adapter automatisch eine neue Prozessinstanz.
* <p> * <p>
@ -50,15 +51,16 @@ public class InkassoAppendAdapter implements SignalAdapter {
public ItemCollection execute(ItemCollection document, ItemCollection event) public ItemCollection execute(ItemCollection document, ItemCollection event)
throws AdapterException, PluginException { throws AdapterException, PluginException {
ItemCollection inkassoWorkitem=appendInvoice(document); ItemCollection inkassoWorkitem = appendInvoice(document);
document.setItemValue("debtcollection.ref", inkassoWorkitem.getUniqueID()); document.setItemValue("debtcollection.ref", inkassoWorkitem.getUniqueID());
return document; return document;
} }
/** /**
* Diese method hängt eine referenz der aktuellen Rechnung an den Inkasso Workflow an. Gibt es noch keinen, wird einer erzeugt. * Diese method hängt eine referenz der aktuellen Rechnung an den Inkasso
* Workflow an. Gibt es noch keinen, wird einer erzeugt.
* Die method liefert das Inkasso Workitem zurück. * Die method liefert das Inkasso Workitem zurück.
* *
* @param document * @param document
@ -72,12 +74,11 @@ public class InkassoAppendAdapter implements SignalAdapter {
throw new PluginException(PluginException.class.getName(), ERROR_MISSING_DATA, throw new PluginException(PluginException.class.getName(), ERROR_MISSING_DATA,
"Inkasso kann nicht erzeugt werden. Bitte wählen Sie zuerst einen Debitor aus."); "Inkasso kann nicht erzeugt werden. Bitte wählen Sie zuerst einen Debitor aus.");
} }
logger.info("......Search Inkasso '" + dbtrNumber + "'..."); logger.info("......Search Inkasso '" + dbtrNumber + "'...");
ItemCollection inkasso; ItemCollection inkasso;
try { try {
inkasso = findInkasso(dbtrNumber,currency); inkasso = findInkasso(dbtrNumber, currency);
if (inkasso == null) { if (inkasso == null) {
// create a new one // create a new one
inkasso = new ItemCollection().workflowGroup("Inkasso").task(1000).event(100); inkasso = new ItemCollection().workflowGroup("Inkasso").task(1000).event(100);
@ -108,14 +109,13 @@ public class InkassoAppendAdapter implements SignalAdapter {
* @return * @return
* @throws QueryException * @throws QueryException
*/ */
private ItemCollection findInkasso(String dbtrNumber,String currency) throws QueryException { private ItemCollection findInkasso(String dbtrNumber, String currency) throws QueryException {
String query = "(type:workitem) AND ($modelversion:inkasso*) "; String query = "(type:workitem) AND ($modelversion:inkasso*) ";
List<ItemCollection> resultList = workflowService.getDocumentService().find(query, 999, 0, "$modified", true); List<ItemCollection> resultList = workflowService.getDocumentService().find(query, 999, 0, "$modified", true);
for (ItemCollection inkasso : resultList) { for (ItemCollection inkasso : resultList) {
if (dbtrNumber.equals(inkasso.getItemValueString(ITEM_DBTR_NUMBER)) if (dbtrNumber.equals(inkasso.getItemValueString(ITEM_DBTR_NUMBER))
&& currency.equals(inkasso.getItemValueString("invoice.currency")) && currency.equals(inkasso.getItemValueString("invoice.currency"))) {
) {
return inkasso; return inkasso;
} }
} }

View file

@ -4,16 +4,16 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import com.alexanderlogistics.InvoiceUtil; import com.alexanderlogistics.InvoiceUtil;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
/** /**
* Der InkassoController dient dazu eine bereits zugewiesene Rechnung * Der InkassoController dient dazu eine bereits zugewiesene Rechnung
* wieder aus dem Inkasso zu entfernen. * wieder aus dem Inkasso zu entfernen.
@ -54,7 +54,7 @@ public class InkassoController implements Serializable {
ItemCollection doc = documentService.load(id); ItemCollection doc = documentService.load(id);
if (doc != null) { if (doc != null) {
result = result + doc.getItemValueDouble(item); result = result + doc.getItemValueDouble(item);
} else { } else {
logger.warning("invalid read access to calculate sum"); logger.warning("invalid read access to calculate sum");
} }

View file

@ -8,8 +8,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject;
import org.apache.poi.ss.usermodel.CellCopyPolicy; import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow;
@ -23,9 +21,10 @@ import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import jakarta.inject.Inject;
/** /**
* Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock * Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock
* *
@ -43,7 +42,7 @@ import org.imixs.workflow.poi.POIFindReplaceAdapter;
* <p> * <p>
* Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer * Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer
* 16 eingefügt werden. * 16 eingefügt werden.
* <p> * <p>
* Dabei werden Gutschriften in spalte E und Rechnungen in Spalte F eingetrgen. * Dabei werden Gutschriften in spalte E und Rechnungen in Spalte F eingetrgen.
* <p> * <p>
* Abschliessend wird die Zelle 'TOTAL' noch aktualisiert. * Abschliessend wird die Zelle 'TOTAL' noch aktualisiert.
@ -139,9 +138,9 @@ public class InkassoExportAdapter extends POIFindReplaceAdapter {
XSSFRow referenceRow = sheet.getRow(cr.getRow()); XSSFRow referenceRow = sheet.getRow(cr.getRow());
int referenceRowPos = 16; int referenceRowPos = 16;
int rowPos = 16; int rowPos = 16;
//int lastRow = sheet.getLastRowNum(); // int lastRow = sheet.getLastRowNum();
int lastRow = 999; int lastRow = 999;
logger.finest("Last rownum="+lastRow); logger.finest("Last rownum=" + lastRow);
sheet.shiftRows(rowPos, lastRow, invoiceIDs.size(), true, true); sheet.shiftRows(rowPos, lastRow, invoiceIDs.size(), true, true);
for (String invoiceID : invoiceIDs) { for (String invoiceID : invoiceIDs) {

View file

@ -2,16 +2,12 @@ package com.alexanderlogistics.mahnlauf;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.Model; import org.imixs.workflow.Model;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
@ -23,6 +19,9 @@ import org.imixs.workflow.exceptions.PluginException;
import com.alexanderlogistics.InvoiceUtil; import com.alexanderlogistics.InvoiceUtil;
import jakarta.ejb.EJB;
import jakarta.inject.Inject;
/** /**
* The MahnlaufExecuteAdapter triggers the event 300 for all linked invoices * The MahnlaufExecuteAdapter triggers the event 300 for all linked invoices
* <p> * <p>
@ -30,7 +29,7 @@ import com.alexanderlogistics.InvoiceUtil;
* processed invoices. This item is used in the Workflow Model to construct a * processed invoices. This item is used in the Workflow Model to construct a
* HTML Table wen sending the mail. * HTML Table wen sending the mail.
* <p> * <p>
* The Adapter also splits the item 'dbtr.mail' into a multi value field if * The Adapter also splits the item 'dbtr.mail' into a multi value field if
* the value contains email addresses separated with new lines. * the value contains email addresses separated with new lines.
* *
* *
@ -108,9 +107,9 @@ public class MahnlaufExecuteAdapter implements SignalAdapter {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(new Date()); cal.setTime(new Date());
cal.add(Calendar.DATE, period); cal.add(Calendar.DATE, period);
cal.set(Calendar.HOUR,0); cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE,0); cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND,0); cal.set(Calendar.SECOND, 0);
invoice.setItemValue("invoice.reminder", cal.getTime()); invoice.setItemValue("invoice.reminder", cal.getTime());
} }
@ -121,24 +120,24 @@ public class MahnlaufExecuteAdapter implements SignalAdapter {
} }
switch (invoice.getTaskID()) { switch (invoice.getTaskID()) {
case 5200: case 5200:
case 5201: case 5201:
if (dunningLevel < 1) if (dunningLevel < 1)
dunningLevel = 1; dunningLevel = 1;
break; break;
case 5210: case 5210:
case 5211: case 5211:
if (dunningLevel < 2) if (dunningLevel < 2)
dunningLevel = 2; dunningLevel = 2;
break; break;
case 5220: case 5220:
if (dunningLevel < 3) if (dunningLevel < 3)
dunningLevel = 3; dunningLevel = 3;
break; break;
default: default:
if (dunningLevel < 1) if (dunningLevel < 1)
dunningLevel = 1; dunningLevel = 1;
break; break;
} }
// create a workitem stub for the mail message // create a workitem stub for the mail message
@ -175,29 +174,29 @@ public class MahnlaufExecuteAdapter implements SignalAdapter {
// compute subject // compute subject
switch (dunningLevel) { switch (dunningLevel) {
case 2: case 2:
mahnLaufWorkitem.setItemValue("mail.subject_de", "2. MAHNUNG"); mahnLaufWorkitem.setItemValue("mail.subject_de", "2. MAHNUNG");
mahnLaufWorkitem.setItemValue("mail.subject_en", "2. REMINDER"); mahnLaufWorkitem.setItemValue("mail.subject_en", "2. REMINDER");
break; break;
case 3: case 3:
mahnLaufWorkitem.setItemValue("mail.subject_de", "LETZTE AUSSERGERICHTLICHE MAHNUNG"); mahnLaufWorkitem.setItemValue("mail.subject_de", "LETZTE AUSSERGERICHTLICHE MAHNUNG");
mahnLaufWorkitem.setItemValue("mail.subject_en", "LAST REMINDER"); mahnLaufWorkitem.setItemValue("mail.subject_en", "LAST REMINDER");
break; break;
default: default:
mahnLaufWorkitem.setItemValue("mail.subject_de", "1. MAHNUNG"); mahnLaufWorkitem.setItemValue("mail.subject_de", "1. MAHNUNG");
mahnLaufWorkitem.setItemValue("mail.subject_en", "1. REMINDER"); mahnLaufWorkitem.setItemValue("mail.subject_en", "1. REMINDER");
break; break;
} }
// Verify the dbtr.mail item (split into multi value) // Verify the dbtr.mail item (split into multi value)
List<String> mailListe =mahnLaufWorkitem.getItemValue("dbtr.mail"); List<String> mailListe = mahnLaufWorkitem.getItemValue("dbtr.mail");
for (String mail: mailListe) { for (String mail : mailListe) {
logger.info(" teste mail:'" + mail + "'"); logger.info(" teste mail:'" + mail + "'");
if (!InvoiceUtil.validateEmail(mail)) { if (!InvoiceUtil.validateEmail(mail)) {
throw new PluginException(MahnlaufExecuteAdapter.class.getName(), throw new PluginException(MahnlaufExecuteAdapter.class.getName(),
"INVALID_EMAIL", "Die Daten konnten nicht aktualisiert werden! Bitte geben Sie eine gültige E-Mail Adresse ein!"); "INVALID_EMAIL",
} "Die Daten konnten nicht aktualisiert werden! Bitte geben Sie eine gültige E-Mail Adresse ein!");
}
} }
return mahnLaufWorkitem; return mahnLaufWorkitem;
} }

View file

@ -4,9 +4,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.Model; import org.imixs.workflow.Model;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
@ -21,6 +18,9 @@ import org.imixs.workflow.sepa.services.SepaWorkflowService;
import com.alexanderlogistics.KreditorDebitorService; import com.alexanderlogistics.KreditorDebitorService;
import jakarta.ejb.EJB;
import jakarta.inject.Inject;
/** /**
* The MahnlaufRefAddAdapter links an invoice with a Mahnlauf for the * The MahnlaufRefAddAdapter links an invoice with a Mahnlauf for the
* dbtr.number item . If there is currently no open Mahnlauf for this key, the * dbtr.number item . If there is currently no open Mahnlauf for this key, the
@ -39,7 +39,7 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
@EJB @EJB
ModelService modelService; ModelService modelService;
@EJB @EJB
KreditorDebitorService kreditorDebitorService; KreditorDebitorService kreditorDebitorService;
@ -60,12 +60,13 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
public ItemCollection execute(ItemCollection invoice, ItemCollection event) public ItemCollection execute(ItemCollection invoice, ItemCollection event)
throws AdapterException, PluginException { throws AdapterException, PluginException {
if (invoice.getTaskID() < MahnlaufService.TASK_MAHNLAUF_START
if (invoice.getTaskID()<MahnlaufService.TASK_MAHNLAUF_START || invoice.getTaskID()>MahnlaufService.TASK_MAHNLAUF_END) { || invoice.getTaskID() > MahnlaufService.TASK_MAHNLAUF_END) {
throw new PluginException(MahnlaufRefAddAdapter.class.getName(), throw new PluginException(MahnlaufRefAddAdapter.class.getName(),
MahnlaufService.ERROR_CONFIG, "Der Mahnlauf kann nur für Rechnungen erstellt werden die bereits die Fälligkeit erreicht haben."); MahnlaufService.ERROR_CONFIG,
"Der Mahnlauf kann nur für Rechnungen erstellt werden die bereits die Fälligkeit erreicht haben.");
} }
String dbtrNumber = invoice.getItemValueString(MahnlaufService.ITEM_DBTR_NUMBER); String dbtrNumber = invoice.getItemValueString(MahnlaufService.ITEM_DBTR_NUMBER);
ItemCollection mahnLaufWorkitem; ItemCollection mahnLaufWorkitem;
try { try {
@ -85,7 +86,7 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
// set event 100 and process // set event 100 and process
ItemCollection mahnlaufConfig = workflowService.evalWorkflowResult(event, "mahnlauf", invoice, true); ItemCollection mahnlaufConfig = workflowService.evalWorkflowResult(event, "mahnlauf", invoice, true);
int eventID = mahnlaufConfig.getItemValueInteger("event"); int eventID = mahnlaufConfig.getItemValueInteger("event");
mahnLaufWorkitem.event(eventID); mahnLaufWorkitem.event(eventID);
workflowService.processWorkItem(mahnLaufWorkitem); workflowService.processWorkItem(mahnLaufWorkitem);
@ -93,7 +94,7 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
throw new PluginException(MahnlaufRefAddAdapter.class.getName(), throw new PluginException(MahnlaufRefAddAdapter.class.getName(),
MahnlaufService.ERROR_CONFIG, "Unable to create Mahnlauf", e); MahnlaufService.ERROR_CONFIG, "Unable to create Mahnlauf", e);
} }
// set mahnlauf ref // set mahnlauf ref
invoice.setItemValue("dunning.ref", mahnLaufWorkitem.getUniqueID()); invoice.setItemValue("dunning.ref", mahnLaufWorkitem.getUniqueID());
return invoice; return invoice;
@ -127,11 +128,11 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
* @throws PluginException * @throws PluginException
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public ItemCollection createNewMahnlauf(String key, ItemCollection invoice, ItemCollection event) public ItemCollection createNewMahnlauf(String key, ItemCollection invoice, ItemCollection event)
throws ModelException, PluginException { throws ModelException, PluginException {
String modelVersion = null; String modelVersion = null;
int taskID = -1; int taskID = -1;
int eventID=-1; int eventID = -1;
// test if the event provides a sepa export configuration // test if the event provides a sepa export configuration
ItemCollection mahnlaufConfig = workflowService.evalWorkflowResult(event, "mahnlauf", invoice, true); ItemCollection mahnlaufConfig = workflowService.evalWorkflowResult(event, "mahnlauf", invoice, true);
if (mahnlaufConfig != null && mahnlaufConfig.hasItem("modelversion") && mahnlaufConfig.hasItem("task")) { if (mahnlaufConfig != null && mahnlaufConfig.hasItem("modelversion") && mahnlaufConfig.hasItem("task")) {
@ -150,17 +151,18 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
mahnlaufWorkitem.setItemValue(WorkflowKernel.UNIQUEID, WorkflowKernel.generateUniqueID()); mahnlaufWorkitem.setItemValue(WorkflowKernel.UNIQUEID, WorkflowKernel.generateUniqueID());
// copy dbtr_iban // copy dbtr_iban
mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_NAME, invoice.getItemValue(MahnlaufService.ITEM_DBTR_NAME)); mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_NAME,
invoice.getItemValue(MahnlaufService.ITEM_DBTR_NAME));
// lookup email.... // lookup email....
String dbtrNumber=invoice.getItemValueString("dbtr.number"); String dbtrNumber = invoice.getItemValueString("dbtr.number");
ItemCollection dbtrItemCol=kreditorDebitorService.findDebitor("D"+dbtrNumber); ItemCollection dbtrItemCol = kreditorDebitorService.findDebitor("D" + dbtrNumber);
if (dbtrItemCol!=null) { if (dbtrItemCol != null) {
mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_EMAIL, dbtrItemCol.getItemValue("cdtr.mail"));// dbtr.mail mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_EMAIL, dbtrItemCol.getItemValue("cdtr.mail"));// dbtr.mail
} }
mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_NUMBER, invoice.getItemValue(MahnlaufService.ITEM_DBTR_NUMBER)); mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_NUMBER,
invoice.getItemValue(MahnlaufService.ITEM_DBTR_NUMBER));
mahnlaufWorkitem.setItemValue("invoice.language", invoice.getItemValue("invoice.language")); mahnlaufWorkitem.setItemValue("invoice.language", invoice.getItemValue("invoice.language"));
// set workflow group name from the Task Element to identify document in xslt // set workflow group name from the Task Element to identify document in xslt

View file

@ -33,12 +33,6 @@ import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.annotation.security.RunAs;
import javax.ejb.Singleton;
import javax.inject.Inject;
import org.imixs.marty.team.TeamService; import org.imixs.marty.team.TeamService;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
@ -48,6 +42,12 @@ import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import jakarta.annotation.security.DeclareRoles;
import jakarta.annotation.security.RolesAllowed;
import jakarta.annotation.security.RunAs;
import jakarta.ejb.Singleton;
import jakarta.inject.Inject;
/** /**
* Der MahnlaufService wird vom MahnlaufExecuteAdapter um * Der MahnlaufService wird vom MahnlaufExecuteAdapter um
* Ausgangsrechnungen zu akutalisieren. * Ausgangsrechnungen zu akutalisieren.

View file

@ -43,10 +43,6 @@ import java.util.Properties;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
@ -87,6 +83,11 @@ import com.alexanderlogistics.InvoiceUtil;
import com.alexanderlogistics.KreditorDebitorService; import com.alexanderlogistics.KreditorDebitorService;
import com.alexanderlogistics.mahnlauf.MahnlaufService; import com.alexanderlogistics.mahnlauf.MahnlaufService;
import jakarta.ejb.EJB;
import jakarta.ejb.Stateless;
import jakarta.enterprise.event.Observes;
import jakarta.inject.Inject;
/** /**
* Der CargosoftXMLInvoiceImportImportService erweitert den FTPImportService und * Der CargosoftXMLInvoiceImportImportService erweitert den FTPImportService und
* kann XML Invoice Dokumente von Cargosoft importieren. * kann XML Invoice Dokumente von Cargosoft importieren.

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
bean-discovery-mode="all" version="2.0"> bean-discovery-mode="all" version="3.0">
</beans> </beans>

View file

@ -4,11 +4,7 @@ import java.util.Properties;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.mail.Folder; import org.eclipse.angus.mail.imap.IMAPFolder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Store;
import org.imixs.archive.importer.DocumentImportService; import org.imixs.archive.importer.DocumentImportService;
import org.imixs.archive.importer.mail.IMAPBasicAuthenticator; import org.imixs.archive.importer.mail.IMAPBasicAuthenticator;
import org.imixs.archive.importer.mail.IMAPOutlookAuthenticator; import org.imixs.archive.importer.mail.IMAPOutlookAuthenticator;
@ -16,8 +12,10 @@ import org.imixs.workflow.ItemCollection;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import com.sun.mail.imap.IMAPFolder; import jakarta.mail.Folder;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Store;
import junit.framework.Assert; import junit.framework.Assert;
/** /**

View file

@ -11,6 +11,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import org.imixs.melman.FormAuthenticator; import org.imixs.melman.FormAuthenticator;
import org.imixs.melman.RestAPIException;
import org.imixs.melman.WorkflowClient; import org.imixs.melman.WorkflowClient;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.datev.imports.DatevImportAdapter; import org.imixs.workflow.datev.imports.DatevImportAdapter;
@ -34,8 +35,15 @@ public class DueDateBugfix {
public void setup() throws PluginException { public void setup() throws PluginException {
// Init Workflow Client // Init Workflow Client
workflowCLient = new WorkflowClient(restAPI); workflowCLient = new WorkflowClient(restAPI);
FormAuthenticator formAuth = new FormAuthenticator(restAPI, user, ps); FormAuthenticator formAuth;
workflowCLient.registerClientRequestFilter(formAuth); try {
formAuth = new FormAuthenticator(restAPI, user, ps);
workflowCLient.registerClientRequestFilter(formAuth);
} catch (RestAPIException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Assert.fail();
}
} }

92
pom.xml
View file

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.alexander-logistics</groupId> <groupId>com.alexander-logistics</groupId>
<artifactId>office-alexander-logistics</artifactId> <artifactId>office-alexander-logistics</artifactId>
<version>1.2.21</version> <version>1.3.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Imixs Office Workflow - Custom Build</name> <name>Imixs Office Workflow - Custom Build</name>
@ -14,24 +14,28 @@
</modules> </modules>
<properties> <properties>
<java.source>11</java.source>
<java.target>11</java.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 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>
<!-- Versions --> <!-- Dependency Versions -->
<org.imixs.workflow.version>5.2.18</org.imixs.workflow.version> <jakarta.version>10.0.0</jakarta.version>
<org.imixs.marty.version>4.2.3</org.imixs.marty.version> <org.imixs.office.version>5.0.2-SNAPSHOT</org.imixs.office.version>
<!-- 4.5.3 --> <org.imixs.workflow.version>6.0.7-SNAPSHOT</org.imixs.workflow.version>
<org.imixs.office.version>4.6.2</org.imixs.office.version> <org.imixs.marty.version>5.0.0</org.imixs.marty.version>
<org.imixs.adapters.version>2.3.3</org.imixs.adapters.version> <org.imixs.archive.version>3.0.2-SNAPSHOT</org.imixs.archive.version>
<!-- 2.2.14 --> <org.imixs.adapters.version>3.0.0</org.imixs.adapters.version>
<org.imixs.archive.version>2.4.2</org.imixs.archive.version> <org.imixs.melman.version>2.0.0-SNAPSHOT</org.imixs.melman.version>
<org.imixs.melman.version>1.0.22</org.imixs.melman.version> <microprofile.version>6.0</microprofile.version>
<org.imixs.ml.version>1.1.6</org.imixs.ml.version> <net.sf.saxon.version>9.9.1-4</net.sf.saxon.version>
<microprofile.version>2.2</microprofile.version> <apache.pdfbox.version>2.0.26</apache.pdfbox.version>
<!-- -->
<org.imixs.ai.version>1.1.0-SNAPSHOT</org.imixs.ai.version>
<custom.webResources>src/main/webapp</custom.webResources> <custom.webResources>src/main/webapp</custom.webResources>
<!-- Environment Settings --> <!-- Environment Settings -->
@ -41,11 +45,12 @@
<imixs-office.IndexDir>lucene/office-index</imixs-office.IndexDir> <imixs-office.IndexDir>lucene/office-index</imixs-office.IndexDir>
<imixs-office.applicationname>office-alexander-logistics</imixs-office.applicationname> <imixs-office.applicationname>office-alexander-logistics</imixs-office.applicationname>
<imixs-mail-res-ref-name>java:/mail/org.imixs.workflow.mail</imixs-mail-res-ref-name>
<!-- Wildfly unpack war --> <!-- Wildfly unpack war -->
<custom.unpackTypes>war</custom.unpackTypes> <custom.unpackTypes>war</custom.unpackTypes>
<imixs-office.applicationname>office-alexander-logistics</imixs-office.applicationname>
<!-- jndi Mail res-ref name --> <!-- jndi Mail res-ref name -->
<imixs-mail-res-ref-name>java:/mail/org.imixs.workflow.mail</imixs-mail-res-ref-name> <imixs-mail-res-ref-name>java:/mail/org.imixs.workflow.mail</imixs-mail-res-ref-name>
@ -59,14 +64,11 @@
<id>sonatype-snaptshots</id> <id>sonatype-snaptshots</id>
<name>Sonatype Snapshot repository</name> <name>Sonatype Snapshot repository</name>
<url>http://oss.sonatype.org/content/repositories/snapshots</url> <url>http://oss.sonatype.org/content/repositories/snapshots</url>
</repository> <releases>
<!-- Imixs repository -->
<repository>
<id>imixs-mvn-repo</id>
<url>https://raw.githubusercontent.com/imixs/imixs-mvn-repo/master/</url>
<snapshots>
<enabled>false</enabled> <enabled>false</enabled>
<updatePolicy>always</updatePolicy> </releases>
<snapshots>
<enabled>true</enabled>
</snapshots> </snapshots>
</repository> </repository>
</repositories> </repositories>
@ -96,15 +98,23 @@
</resource> </resource>
</resources> </resources>
<plugins> <plugins>
<!-- use JDK settings for compiling -->
<plugin> <plugin>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version> <version>3.8.1</version>
<configuration> <configuration>
<source>1.8</source> <source>${java.source}</source>
<target>1.8</target> <target>${java.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
<finalName>office-alexander-logistics</finalName> <finalName>office-alexander-logistics</finalName>
@ -146,6 +156,7 @@
<groupId>org.imixs.workflow</groupId> <groupId>org.imixs.workflow</groupId>
<artifactId>imixs-marty</artifactId> <artifactId>imixs-marty</artifactId>
<version>${org.imixs.marty.version}</version> <version>${org.imixs.marty.version}</version>
<scope>provided</scope>
</dependency> </dependency>
<!-- Office Workflow --> <!-- Office Workflow -->
@ -206,7 +217,7 @@
<groupId>org.imixs.workflow</groupId> <groupId>org.imixs.workflow</groupId>
<artifactId>imixs-archive-documents</artifactId> <artifactId>imixs-archive-documents</artifactId>
<version>${org.imixs.archive.version}</version> <version>${org.imixs.archive.version}</version>
<scope>compile</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Imxixs-Archive Importer --> <!-- Imxixs-Archive Importer -->
<dependency> <dependency>
@ -215,17 +226,34 @@
<version>${org.imixs.archive.version}</version> <version>${org.imixs.archive.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- Imixs AI -->
<dependency>
<groupId>org.imixs.workflow</groupId>
<artifactId>imixs-ai-workflow</artifactId>
<version>${org.imixs.ai.version}</version>
<scope>compile</scope>
</dependency>
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>${net.sf.saxon.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<dependencies> <dependencies>
<!-- JEE Dependencies --> <!-- Jakarta EE -->
<dependency> <dependency>
<groupId>javax</groupId> <groupId>jakarta.platform</groupId>
<artifactId>javaee-api</artifactId> <artifactId>jakarta.jakartaee-api</artifactId>
<version>7.0</version> <version>${jakarta.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Microprofile --> <!-- Microprofile -->
<dependency> <dependency>
<groupId>org.eclipse.microprofile</groupId> <groupId>org.eclipse.microprofile</groupId>
@ -249,4 +277,4 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>