diff --git a/.gitignore b/.gitignore index 5577f61..49fe8d0 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,11 @@ target/ .metadata/ .project .classpath +.env # ignore docker deployments docker/deployments/ +docker/keys/imixs-llm.xml # Sepa Report reports/sepa/result_sepa* diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c1fc951..0ad1114 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,17 @@ # Versionen +## 1.4.0 (Development) + +- neuer AGLAIInvoiceAdapter + der Adapter `AGLAIInvoiceAdapter` muss künftig in das Import Event der Rechnungseingangs Modelle. Dieser Adapter Findet den Space und den Mandanten. + +Neue Modelle: + +- Posteingang + - posteingang-de-3.0 +- AMS + - rechnungseingang-ams-1.1.0.bpmn + ## 1.3.6 (Development) **KSeF Produktiname II.** diff --git a/backup/README.md b/backup/README.md new file mode 100644 index 0000000..f850a97 --- /dev/null +++ b/backup/README.md @@ -0,0 +1,204 @@ +# Eigenes Backup-System (Backup-Mirror) +## Architektur, Einrichtung und Disaster-Recovery-Konzept + +--- + +## 1. Idee und Architektur + +### 1.1 Ausgangslage + +Imixs-Office-Workflow wird von uns als eine transaktionale, hochverfügbare +Geschäftsprozessmanagement-Suite betrieben. Die Basis ist ein Open Source Kernel, +der frei zugänglich ist ([https://github.com/imixs/](https://github.com/imixs/)). +Unabhängig vom gewählten Betriebsmodell (SaaS, Public Cloud, Private Cloud, On +Premise) sind und bleiben Sie Eigentümer Ihrer Geschäftsdaten. Über den +Backup-Service haben Sie die Möglichkeit, jederzeit eigenständig auf eine +vollständige Kopie Ihrer Daten zuzugreifen – unabhängig davon, wie und wo Ihre +Instanz aktuell betrieben wird. + +### 1.2 Architektur – Own your Data + +Auch wenn wir den Betrieb Ihrer Instanz übernehmen, bedeutet das nicht, dass Sie +von uns abhängig sind. Über den Backup-Mirror betreiben Sie bei sich einen eigenen, +unabhängigen Backup-Dienst. Dieser Dienst wird von Ihnen selbst eingerichtet, +verwaltet und überwacht und läuft vollständig autark – wir müssen ihn technisch +weder kennen noch verwalten. Dadurch gilt: + +> **Sie verfügen über eine eigenständige, vollständige Kopie Ihrer +> Geschäftsdaten – unabhängig von unserer Infrastruktur. Mit dieser Kopie kann +> Ihr System bei Bedarf komplett neu aufgebaut werden.** + +Das ist ein bewusst einfaches und robustes Prinzip: Es kommt nicht darauf an, *wo* +Ihre Daten zusätzlich liegen, sondern *wer* die Kontrolle über diesen zusätzlichen +Sicherungsort hat. Nur wenn diese Kontrolle bei Ihnen liegt, sind Sie wirklich +unabhängig. + +### 1.3 Wie es funktioniert + +Technisch basiert das Konzept auf dem Open-Source-Projekt +[Imixs-Archive](https://github.com/imixs/imixs-archive), konkret auf dem Baustein +*Imixs-Archive-Backup*. Der Ablauf im Überblick: + +1. Bei jeder Änderung an einem Geschäftsvorgang erzeugt Ihre Workflow-Instanz + automatisch einen unveränderlichen Snapshot (eine vollständige Kopie des + Vorgangs inkl. aller angehängten Dokumente). +2. Diese Snapshots werden über die REST-Schnittstelle Ihrer Workflow-Instanz + bereitgestellt. +3. Ein bei Ihnen installierter Backup-Dienst (siehe Abschnitt 2) ruft diese + Snapshots eigenständig ab und speichert sie auf einem Speicherort Ihrer Wahl + (z. B. eigener FTP-/Storage-Server). + +Wichtig: Die Verbindung erfolgt **von Ihrem System zu unserer Workflow-Instanz** +(„Pull-Prinzip"). Sie benötigen dafür lediglich einen Netzwerkzugriff auf die +REST-Schnittstelle Ihrer Instanz – wir müssen keinen Zugriff auf Ihre Infrastruktur +haben und erhalten auch keinen. + +--- + +## 2. Technische Einrichtung + +Der Backup-Dienst kann als Docker-Container in unterschiedlichen Umgebungen betrieben werden: + + - **Local**: lokal über Docker oder Docker Compose, + - **Private Cloud**: in einer Private Cloud (z.b. Kubernetes, OpenShift) + - **Public Cloud**: in einer Public Cloud Umgebung (z.b. AWS, Microsoft Azure) + + +### 2.1 Voraussetzungen + +- Eine eigene Server- bzw. Container-Umgebung (Docker) auf Ihrer Seite +- Ein eigener Speicherort für die Backup-Daten (z. B. FTP-Storage, NAS mit + FTP-Anbindung) +- Eine sogenannte **Mirror-ID**, die wir Ihnen bereitstellen + +### 2.2 Mirror-ID anfragen + +Die Mirror-ID ist eine organisatorische Kennung, mit der wir Ihre eigene +Backup-Verbindung für Ihre Instanz freischalten. Sie ist kein Sicherheitsmerkmal im +engeren Sinn, sondern eine Vereinbarung zwischen uns: *„Kunde X betreibt ein eigenes +Backup."* Bitte fordern Sie diese ID formlos bei uns an. + +### 2.3 Backup-Nutzer in Ihrer eigenen Instanz anlegen + +Ein zentraler Punkt für die Autarkie des Systems: **Sie legen den technischen +Benutzer für den Backup-Zugriff selbst in Ihrer Imixs-Instanz an.** Dieser Nutzer +gehört ausschließlich Ihnen – wir kennen weder das Passwort noch verwalten wir +dieses Konto. Vergeben Sie dem Nutzer ausreichende Leserechte, damit er alle +relevanten Vorgänge und Dokumente sichern kann. + +### 2.4 Docker-Compose Beispielkonfiguration + +Das folgende Beispiel zeigt eine Docker Compose Konfiguraiton für den Betrieb des Backup-Dienstes: + +```yaml +version: "3.6" +services: + backup: + image: imixs/imixs-archive-backup:latest + environment: + TZ: "Europe/Berlin" + WORKFLOW_SERVICE_ENDPOINT: "https://.office-workflow.de/api/" + WORKFLOW_SERVICE_USER: "" + WORKFLOW_SERVICE_PASSWORD: "" + WORKFLOW_SERVICE_AUTHMETHOD: "form" + BACKUP_FTP_HOST: "" + BACKUP_FTP_PATH: "" + BACKUP_FTP_PORT: "21" + BACKUP_FTP_USER: "" + BACKUP_FTP_PASSWORD: "" + BACKUP_MIRROR_ID: "" + ports: + - "8084:8080" + - "9990:9990" +``` + +**Erläuterung der wichtigsten Parameter:** + +| Parameter | Bedeutung | +|---|---| +| `WORKFLOW_SERVICE_ENDPOINT` | Die REST-API-Adresse Ihrer bei uns gehosteten Workflow-Instanz | +| `WORKFLOW_SERVICE_USER/PASSWORD` | Der von Ihnen selbst angelegte Backup-Nutzer | +| `BACKUP_FTP_*` | Ihr eigener Speicherort für die Backup-Daten | +| `BACKUP_MIRROR_ID` | Die von uns bereitgestellte Freischalt-ID | + +Nach dem Start prüft der Dienst regelmäßig auf neue zu sichernde Vorgänge und +überträgt diese automatisch auf Ihren Speicherort. + +### 2.5 Monitoring des eigenen Backup-Dienstes + +Da der Dienst vollständig in Ihrer Verantwortung läuft, sollten Sie ihn aktiv +überwachen. Ein einfacher Ping-Check zeigt zwar, dass der Container erreichbar +ist – sagt aber nichts darüber aus, ob der Dienst tatsächlich funktionsfähig ist +und Backups erfolgreich durchführt. + +Der Imixs-Archive-Backup-Service stellt hierfür standardisierte **MicroProfile-Endpunkte** mit, die auf Port `9990` +bereitgestellt werden: + +| Endpunkt | Beschreibung | +|---|---| +| `/health` | Liefert den Health-Status des Dienstes nach dem MicroProfile-Health-Standard – inklusive Readiness (ist der Dienst betriebsbereit, z. B. Verbindung zur Workflow-API und zum FTP-Storage vorhanden?) und Liveness (läuft der Prozess korrekt?) | +| `/metrics` | Liefert Betriebskennzahlen im MicroProfile-Metrics-Format (Prometheus-kompatibel), z. B. Anzahl verarbeiteter Backups, Fehlerzähler, Laufzeiten | + +Damit lässt sich der Dienst professionell überwachen: + +- **Health-Checks** binden Sie direkt in gängige Monitoring-Systeme ein (z. B. + Kubernetes Liveness-/Readiness-Probes, Uptime-Kuma, Nagios, Icinga) und erkennen + so nicht nur einen abgestürzten Container, sondern auch einen Dienst, der zwar + läuft, aber z. B. keine Verbindung mehr zu Ihrer Workflow-Instanz oder zum + FTP-Ziel herstellen kann. +- **Metrics** lassen sich direkt von Prometheus abgegriffen und in Grafana + visualisiert werden – so erkennen Sie auf einen Blick, ob regelmäßig Backups + durchgeführt werden, oder ob z. B. die Fehlerrate ansteigt. + +**Voraussetzung:** Sie müssen Port `9990` in Ihrer Docker-Umgebung entsprechend +freigeben bzw. mappen, damit Ihr Monitoring-System auf die Endpunkte zugreifen kann +(siehe Port-Mapping im Beispiel aus Abschnitt 2.4). + +Ein Backup, das unbemerkt seit Wochen nicht mehr funktioniert, bietet keinen Schutz. +Die Überwachung über Health- und Metrics-Endpunkte ist daher ein integraler +Bestandteil des Konzepts, nicht optional. + +--- + +## 3. Notfall- und Wiederherstellungsfall (Disaster Recovery) + +Im Falle eines Disaster-Recovery-Prozesses stellen Sie uns Ihr Backup zur Verfügung, damit Ihr System auf dessen Basis wiederhergestellt werden kann. Dieser Abschnitt beschreibt das Vorgehen nur in Stichpunkten. +Die vollständige technische Dokumentation der +Imixs-Workflow-Architektur ist Open Source und öffentlich einsehbar unter +[github.com/imixs](https://github.com/imixs). + +**Grundprinzip der Wiederherstellung:** + +- Ihre gesicherten Snapshot-Daten liegen vollständig und unverändert in Ihrem + eigenen Speicher (FTP/Storage) vor. +- Diese Daten liegen in einem offenen, plattformunabhängigen XML-Format vor und + sind nicht an unsere konkrete Infrastruktur gebunden. +- Auf Basis dieser Daten kann eine neue Imixs-Workflow-Instanz (bei Ihnen oder bei + einem anderen Dienstleister) aufgesetzt werden. +- Über die Restore-Funktion der Imixs-Archive-Komponenten werden die Snapshots in + die neue Instanz zurückgespielt – jeder Geschäftsvorgang wird dabei inklusive + seiner Historie und aller Dokumente wiederhergestellt. + +**Wichtige Stichpunkte für den Ernstfall:** + +- Backup-Daten sind vollständig bei Ihnen vorhanden → keine Abhängigkeit von uns +- Wiederherstellung erfordert eine lauffähige Imixs-Workflow-Umgebung (Open Source, + frei verfügbar) +- Die technische Vorgehensweise zum Restore ist Teil der öffentlichen + Imixs-Archive-Dokumentation +- Wir unterstützen Sie im Ernstfall selbstverständlich gerne beim Wiederaufbau – + diese Unterstützung ist jedoch **keine Voraussetzung**, da die Daten und das + Wiederherstellungsverfahren vollständig unabhängig von uns nutzbar sind + +--- + +## 4. Zusammenfassung + +Mit dem Backup-Mirror bleiben Sie jederzeit Eigentümer Ihrer Geschäftsdaten – unabhängig +davon, wie und wo Ihre Instanz betrieben wird. Sie richten den Dienst selbst ein, verwalten +ihn eigenständig und behalten so die volle Kontrolle über Ihre zusätzliche Datenkopie. Genau +diese Unabhängigkeit ist es, die Ihnen im Bedarfsfall den vollständigen Wiederaufbau Ihres +Systems ermöglicht. + +Bei Fragen zur Einrichtung oder zur Anforderung Ihrer Mirror-ID kontaktieren Sie uns +gerne. \ No newline at end of file diff --git a/backup/docker-compose.yaml b/backup/docker-compose.yaml new file mode 100644 index 0000000..dbcd64e --- /dev/null +++ b/backup/docker-compose.yaml @@ -0,0 +1,22 @@ +version: "3.6" +services: + ############################################### + # Backup Service + ############################################### + backup: + image: imixs/imixs-archive-backup:latest + environment: + TZ: "Europe/Berlin" + WORKFLOW_SERVICE_ENDPOINT: "https://alexander-logistics-ams.office-workflow.de/api/" + WORKFLOW_SERVICE_USER: "kutzner-backup-service" + WORKFLOW_SERVICE_PASSWORD: "16e-7ede-4c1c-bdeb-e16ce" + WORKFLOW_SERVICE_AUTHMETHOD: "form" + BACKUP_FTP_HOST: "u248962.your-storagebox.de" + BACKUP_FTP_PATH: "/test/agl/ams-test" + BACKUP_FTP_PORT: "21" + BACKUP_FTP_USER: "u248962" + BACKUP_FTP_PASSWORD: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + BACKUP_MIRROR_ID: "backup-mirror-local" + WORKFLOW_REST_JPQL_DOUBLEDECODE_WORKAROUND: "true" + ports: + - "8084:8080" diff --git a/cargosoft-migration/AGL_ADRESSEN_GLEICHENUMMER_VERSCHIEDENEFELDER.xls b/cargosoft-migration/AGL_ADRESSEN_GLEICHENUMMER_VERSCHIEDENEFELDER.xls deleted file mode 100644 index 3667504..0000000 Binary files a/cargosoft-migration/AGL_ADRESSEN_GLEICHENUMMER_VERSCHIEDENEFELDER.xls and /dev/null differ diff --git a/devi b/devi index d0fcf0c..beda5f3 100755 --- a/devi +++ b/devi @@ -53,9 +53,7 @@ fi if [[ "$(strip_dash $1)" == "hot" ]]; then echo "* Hotdeploy..." - cd *-app mvn manik-hotdeploy:hotdeploy - cd .. fi if [[ "$(strip_dash $1)" == "deploy" ]]; then diff --git a/doc/FTP.md b/doc/FTP.md deleted file mode 100644 index 46356ce..0000000 --- a/doc/FTP.md +++ /dev/null @@ -1,99 +0,0 @@ -# FTP Server - -Wir stellen verschiedene FTP Laufwerke auf dem Hetzner bereit um Daten mit Cargosoft und anderen Partnern auszutauschen - -# Cargosoft - -**ACHTUNG:** Frau Beste bittet darum den public key für alle Sub Accounts zu installieren: - -$ cat id_rsa_cargosoft.pub | ssh -p23 u248962-sub12@u248962.your-storagebox.de install-ssh-key - -## Cargosoft Schnittstelle (Bremen - Mandant 001) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft - Benutzername: u248962-sub2 - Passwort: aXa61n9Un3jDNQlL - -## Cargosoft Schnittstelle (AMS - Mandant 002) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-ams - Benutzername: u248962-sub12 - Passwort: RA9N0V8EB8_1Dnw - -## Cargosoft Schnittstelle (Bremerhaven Mandant 005) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-bhv - Benutzername: u248962-sub5 - Passwort: 5hKKzv6TFCKRrAdR - -## Cargosoft Schnittstelle (Polen Mandant 003) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-pl - Benutzername: u248962-sub7 - Passwort: PGPzzqmtZ8BSxkbs - -## Cargosoft Schnittstelle (Dubai Mandant 006) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-dwc - Benutzername: u248962-sub3 - Passwort: enHjxs9h4nJ6EgsZ - - Wir stellen Herrn Hoelzl in Dubai ein eigenes FTP Laufwerk bereit, in das wir die Rechnungen per Imixs-Exporter verschieben. - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/filetransfer-dwc - Benutzername: u248962-sub11 - Passwort: mH9mAS77QhuA5XJi - -Herr Hoelzl überträgt dann die Daten in eine app von einer Steuerkanzlei. - -Es wird dazu ein FTP Server bereitgestellt der von Herrn Hölzl und Frau Geisler lokal eingebunden werden kann. - -Der aktuelle Workflow für Eingangs- und Ausgangsrechnungen wird dahingehend angepasst, dass die Belege automatisch nach folgenden Format exportiert werden: - -``` -├── invoice-out -│ ├── 2024 -│ │ ├── 06 -│ │ │ ├── 198_EX-DWC-2406-013.pdf -│ │ │ ├── 199_EX-DWC-2406-013.pdf -│ │ ├── 07 -│ │ │ ├── 200_IM-DWC-2407-010.pdf -├── invoice-in -│ ├── 2024 -│ │ ├── 06 -│ │ │ ├── 700045_EX-DWC-2406-005.pdf -│ │ │ ├── 700045_59475.pdf -``` - -sequencenumer + - -firmename + positionsnummer + rechnungsnummer + - -Der Export erfolgt automatisch nach Empfang der Rechnung bzw. nach Prüfung der Rechnung (Review->Approved). Die Dateinamen werden vom System berechnet (siehe oben). Bei Sachrechnungen wird das Rechnungsdatum verwendet um die Buchungsperiode zu berechnen. - -## Cargosoft Schnittstelle (USA Mandant 004) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-usa - Benutzername: u248962-sub9 - Passwort: GMk7NgDBrmb2QqXg - -## Cargosoft Schnittstelle (China Mandant 007) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-chn - Benutzername: u248962-sub10 - Passwort: yswBeN83jMqkMqJa - -## Cargosoft Schnittstelle (Brazil - Mandant 008) - - Server: u248962.your-storagebox.de - Pfad: /office-alexander-logistics/cargosoft-br - Benutzername: u248962-sub13 - Passwort: YjQ5u5Nzz535-eGR diff --git a/doc/HETZNER_SUPPORT/2025-07-28.md b/doc/HETZNER_SUPPORT/2025-07-28.md deleted file mode 100644 index 692622e..0000000 --- a/doc/HETZNER_SUPPORT/2025-07-28.md +++ /dev/null @@ -1,49 +0,0 @@ -Hallo, -wir nutzen oben genannte Storage Box für den Datenaustausch mit verschiedenen Kunden. -Einer der Kunden kann seit dem 25. Juli nicht mehr von seinem Firmennetzwerk darauf zugreifen. - -Wir haben auf dem Linux Server beim Kunden folgende Tests durchgeführt: - -cargodb@cargodb:~$ sftp -v -oPort=22 u248962-sub1@u248962.your-storagebox.de -OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f 31 Mar 2020 -debug1: Reading configuration data /etc/ssh/ssh_config -debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/_.conf matched no files -debug1: /etc/ssh/ssh_config line 21: Applying options for _ -debug2: resolving "u248962.your-storagebox.de" port 22 -debug2: ssh_connect_direct -debug1: Connecting to u248962.your-storagebox.de [78.47.94.120] port 22. -debug1: connect to address 78.47.94.120 port 22: Connection refused -debug1: Connecting to u248962.your-storagebox.de [2a01:4f8:2b01:db::2] port 22. -debug1: connect to address 2a01:4f8:2b01:db::2 port 22: Network is unreachable -ssh: connect to host u248962.your-storagebox.de port 22: Network is unreachable -Connection closed. - -cargodb@cargodb:~$ nc -zv u248962-sub1@u248962.your-storagebox.de 22 -nc: getaddrinfo for host u248962-sub1@u248962.your-storagebox.de port 22: Name or service not known - -cargodb@cargodb:~$ tcptraceroute u248962.your-storagebox.de 22 -Selected device ens160, address 192.168.83.3, port 52113 for outgoing packets -Tracing the path to u248962.your-storagebox.de (78.47.94.120) on TCP port 22 (ssh), 30 hops max -1 192.168.83.254 0.233 ms 0.175 ms 0.242 ms -2 82-198-218-38.briteline.de (82.198.218.38) 1.470 ms 1.103 ms 2.286 ms -3 10.200.48.254 0.930 ms 0.915 ms 0.776 ms -4 82-198-192-194.briteline.de (82.198.192.194) 1.092 ms 1.114 ms 0.902 ms -5 82-198-216-168.briteline.de (82.198.216.168) 1.101 ms 1.168 ms 1.034 ms -6 ae0-201.cr11.bre04.lwlcom.net (31.209.93.121) 1.543 ms 1.650 ms 1.528 ms -7 ae0-30.cr10.bre09.lwlcom.net (185.146.230.97) 7.713 ms 7.440 ms 11.215 ms -8 ae0-10.cr11.bre09.lwlcom.net (185.146.230.53) 7.647 ms 7.652 ms 7.617 ms -9 ae0-20.cr10.bre03.lwlcom.net (185.146.230.99) 7.530 ms 7.716 ms 7.505 ms -10 ae7-90.cr10.bre11.lwlcom.net (185.146.230.34) 7.723 ms 7.661 ms 7.578 ms -11 ae7-100.cr10.lut01.lwlcom.net (185.146.230.39) 7.446 ms 7.509 ms 7.673 ms -12 ae6-100.cr10.fra03.lwlcom.net (185.146.230.27) 7.980 ms 7.281 ms 7.981 ms -13 ae2-100.cr10.fra04.lwlcom.net (185.146.230.51) 7.287 ms 7.392 ms 7.406 ms -14 213-133-121-205.clients.your-server.de (213.133.121.205) 10.464 ms 10.542 ms 10.573 ms -15 core24.fsn1.hetzner.com (213.239.224.85) 16.458 ms 16.381 ms 16.338 ms -16 mx10k1.dc3.fsn1.hetzner.com (213.239.254.142) 16.632 ms 16.687 ms 24.837 ms -17 static.120.94.47.78.clients.your-server.de (78.47.94.120) 16.526 ms !p 16.509 ms !p 16.505 ms !p - -Können Sie anhand dieser Daten erkennen worin das Problem besteht? Andere Kunden können die Storage Box problemlos nutzen. - -Vielen Dank für Ihre Hilfe -Mit freundlichen Grüßen -Ralph Soika diff --git a/doc/KSeF/FEEDBACK.md b/doc/KSeF/FEEDBACK.md deleted file mode 100644 index c35ad33..0000000 --- a/doc/KSeF/FEEDBACK.md +++ /dev/null @@ -1,25 +0,0 @@ -# Feedback zum PDF FIle - -| Feld / Komponente | Status | -| :------------------------------------------------------- | :----------------------- | -| **1. Podmiot 1 — Daten des Rechnungsausstellers (AGLP)** | | -| `` | **FIXED** | -| `` | **FIXED** | -| `PL` | **FIXED** | -| **2. Podmiot 2 — Daten des Rechnungsempfängers** | | -| ` ` | **ALREADY IMPLEMENTED** | -| EU-Rechnungsempfänger | **UNCLEAR!** | -| Anschrift des Rechnungsempfängers | **CARGOSOFT TOPIC** | -| **3. Abschnitt — Rechnungskopf** | **FIXED** | -| `` | **FIXED** | -| `` | **FIXED** | -| **4. Rechnungspositionen — Pflichtfelder** | | -| `` | **FIXED** | -| `` | **IGNORED - NOT FIXED!** | -| `` | **????** | -| `` | **????** | -| **5. Rechnungssummen — / ** | | -| _Noch keine Details_ | — | -| **6. Zahlung — ** | | -| `` | **FIXED** | -| `` | **FIXED** | diff --git a/doc/KSeF/SECRETS.md b/doc/KSeF/SECRETS.md deleted file mode 100644 index 9a78aa4..0000000 --- a/doc/KSeF/SECRETS.md +++ /dev/null @@ -1,3 +0,0 @@ -NIP = "9552521552" - -TOKEN = "20251113-EC-2751AC3000-5C5466924B-62|nip-9552521552|fc0c95d020dc45d4af491fb0aa755f3f3f674b33ecbf4250a88ea6e36fa8340b diff --git a/doc/MAIL.md b/doc/MAIL.md deleted file mode 100644 index e1a13c6..0000000 --- a/doc/MAIL.md +++ /dev/null @@ -1,9 +0,0 @@ -# Mail - -Testen von Mailing kann man über - -https://www.mail-tester.com/ - -Kutzner Mail gateway - -PW: 26W%R#Xe4^Z2Gyz1 diff --git a/doc/id_rsa_cargosoft.pub b/doc/id_rsa_cargosoft.pub deleted file mode 100644 index 1c83088..0000000 --- a/doc/id_rsa_cargosoft.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnGiu0PUBl+G++vHrGP5wDRit4mXF4hXTyzUem3BPADaV0DUuYN1Fx5RpDl2F8mhnqDYcyCTBzLTJ+0jFqq1pzoJW5ZWZ+hSChabVCV4m8UkFkhbRmjxNkPx26ZMhfTD1mDqgCKQ+bbt1mi04UZppDKBr+9ZrMG3d0odHblEJHixtJ7Hqr9vvXXbvNv4E9B/9dlW57oyEUk/vKmwuLyGAsDjxjfB3W+Faab+gev8VDwJxdbD90HX0O2Az05wy9EC7M3pujcawsHdaFXgFFRRwlVuUkX3z9hp1Uekqg0N81hty7/i8GiZ9/m3Y6hIA5eRM4ZpDQFEF8SY9TLSzDehNoQ== seesped@cargodb diff --git a/doc/zoho/SECRETS.md b/doc/zoho/SECRETS.md deleted file mode 100644 index f35c1bd..0000000 --- a/doc/zoho/SECRETS.md +++ /dev/null @@ -1,78 +0,0 @@ -# Zoho Web API - -AGL Dubai nutzt Zoho als Platform zusammen mit einer lokalen Steuerkanzlei - -## Test/Prod Account Imixs - -https://api-console.zoho.eu/ -https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN - -``` -zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13 -zoho.apidomain https://www.zohoapis.eu -zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ -zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47 -zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072 -zoho.organization 20105697367 -zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e -zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE - -``` - -## Atari - -atari.600xl@gmail.com -800xlAtari - -``` -zoho.apidomain https://www.zohoapis.eu -zoho.clientid 1000.86O4P321HDYDRX0Q0N1G7YOJRJ9D5W -zoho.clientsecret 2a67b6cfc364f5df27cc8eb33e9b0e4e8a0221ebc3 -zoho.code 1000.c7dc89c06111b93f1242b587fabed4ac.44c591dffbd978a316e3d90ed3fefc78 -zoho.organization 886924765 -zoho.scope ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL -``` - -## Prod DWC - -info@imixs.com -imixs4zoho - -Für Drecks Forum -Imixs4#zoho -Imixs4#zoho - -http://books.zoho.com/ - -https://api-console.zoho.com/ - -ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL - -``` - -zoho.apidomain https://www.zohoapis.com -zoho.clientid 1000.MQE1SU8UGY6F2PBPASOXGTLWYQD1FS -zoho.clientsecret 1ca70e1ab803b3fed6b1b5e00858c316e2003d289b -zoho.organization 884218508 -zoho.scope ZohoBooks.contacts.ALL,ZohoBooks.invoices.ALL,ZohoBooks.bills.ALL - -``` - -# API Dokumentation - -- API Docu: https://www.zoho.com/books/api/v3/introduction/ -- Authentication: https://www.zoho.com/books/api/v3/oauth/ - -# Testumgebung - -https://books.zoho.eu/app/20105697367 -https://accounts.zoho.eu/home# - -Base API URI= https://accounts.zoho.eu/ - -# AGL Organisation - -https://api-console.zoho.com - -info@imixs.com -password imixs4zoho diff --git a/docker-compose.yml b/docker-compose.yml index 959af24..3048492 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,8 +41,8 @@ services: WORKFLOW_SERVICE_USER: "admin" WORKFLOW_SERVICE_PASSWORD: "adminadmin" - LLM_SERVICE_ENDPOINT_USER: "admin" - LLM_SERVICE_ENDPOINT_PASSWORD: "imixs4.null" + # LLM Integration + LLM_CONFIG_FILE: /opt/jboss/imixs-llm.xml # KSeF - Polen Test KSEF_API_NIP: "9552521552" @@ -57,6 +57,7 @@ services: - "8787:8787" volumes: - ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/ + - ./docker/keys/imixs-llm.xml:/opt/jboss/imixs-llm.xml - ./docker/transfer:/opt/jboss/wildfly/transfer/ ############################################### diff --git a/hotdeploy.sh b/hotdeploy.sh deleted file mode 100755 index f11b218..0000000 --- a/hotdeploy.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -############################################################ -# Setup hotdeploy -# -############################################################ - -cd office-alexander-logistics-app -mvn manik-hotdeploy:hotdeploy - -cd .. \ No newline at end of file diff --git a/office-alexander-logistics-app/.gitignore b/office-alexander-logistics-app/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/office-alexander-logistics-app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/office-alexander-logistics-app/pom.xml b/office-alexander-logistics-app/pom.xml deleted file mode 100644 index 30f9f42..0000000 --- a/office-alexander-logistics-app/pom.xml +++ /dev/null @@ -1,430 +0,0 @@ - - - 4.0.0 - - office-alexander-logistics - com.alexander-logistics - 1.3.6 - - office-alexander-logistics-app - war - Imixs Office Workflow App - - - - docker - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.8 - - - install - - - - - - - - - - - - run - - - - - - - - - - - debug - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.8 - - - install - - - - - - - - - - - - - - run - - - - - - - - - - - kubernetes - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.8 - - - install - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - - - - - - ${basedir}/../reports - - - ${basedir}/../workflow - - - ${basedir}/src/test/resources - - - - - - maven-war-plugin - 3.3.2 - - false - - - true - - ${custom.webResources} - - **/WEB-INF/* - - - - - target/overlay-war-folder - - - - org.imixs.workflow - imixs-office-workflow-app - - WEB-INF/lib/*.jar - - - - - - - - org.imixs.maven - manik-hotdeploy-maven-plugin - 2.0.0 - - - install - - deploy - - - - - - - - - target/*.{war,ear,jar} - ../docker/deployments/ - true - - - - - src/main/webapp - ../docker/deployments/office-alexander-logistics.war - - - - - - - - - - - - - - - - org.imixs.workflow - imixs-workflow-core - jar - compile - - - org.imixs.workflow - imixs-workflow-engine - jar - compile - - - org.imixs.workflow - imixs-workflow-jax-rs - jar - compile - - - org.imixs.workflow - imixs-workflow-faces - jar - compile - - - org.imixs.workflow - imixs-workflow-index-lucene - compile - - - - - org.imixs.workflow - imixs-marty - jar - compile - - - - - org.imixs.workflow - imixs-office-workflow-app - war - - - - org.imixs.workflow - imixs-office-workflow-util - compile - - - - - org.imixs.workflow - imixs-archive-api - compile - - - - - - org.imixs.workflow - imixs-data-groups - - - org.imixs.workflow - imixs-data-views - - - org.imixs.workflow - imixs-data-documents - compile - - - org.imixs.workflow - imixs-data-importer - compile - - - - - org.imixs.workflow - imixs-adapters-sepa - compile - - - - org.imixs.workflow - imixs-adapters-datev - compile - - - - org.imixs.workflow - imixs-adapters-qrcode - compile - - - - org.imixs.workflow - imixs-adapters-poi - compile - - - org.imixs.workflow - imixs-ai-workflow - ${org.imixs.ai.version} - compile - - - - - org.imixs.util - imixs-e-invoice - ${org.imixs.e-invoice.version} - - - - - net.sf.saxon - Saxon-HE - - - - org.apache.pdfbox - pdfbox - ${apache.pdfbox.version} - compile - - - - - commons-net - commons-net - 3.6 - - - - - com.sun.mail - javax.mail - 1.6.2 - test - - - org.apache.httpcomponents - httpclient - 4.5.10 - test - - - com.fasterxml.jackson.core - jackson-databind - 2.13.3 - test - - - - - - - org.glassfish.jersey.core - jersey-client - 3.1.2 - test - - - org.apache.cxf - cxf-rt-rs-client - 3.3.6 - test - - - org.glassfish.jersey.inject - jersey-hk2 - 3.1.2 - test - - - - jakarta.ws.rs - jakarta.ws.rs-api - 3.1.0 - test - - - - - - - - - \ No newline at end of file diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java deleted file mode 100644 index 3952bd6..0000000 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java +++ /dev/null @@ -1,181 +0,0 @@ -package org.imixs.workflow.office.forms; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.logging.Logger; - -import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.faces.data.WorkflowController; - -import jakarta.enterprise.context.ConversationScoped; -import jakarta.enterprise.event.Event; -import jakarta.inject.Inject; -import jakarta.inject.Named; - -/** - * The AnalyticController is a conversationScoped controller that provides - * values for the analytic-custom parts. - *

- * A custom implementation can react on AnalyticEvent to compute values and - * datasets. - *

- * The controller implements a caching mechanism to avoid repeated calls for new - * analytic values. If the analytic value is already stored in the current - * workitem, no new value will be fired. - * - * - * @author rsoika - * - */ -@Named -@ConversationScoped -public class AnalyticController implements Serializable { - - private static final long serialVersionUID = 1L; - private static Logger logger = Logger.getLogger(AnalyticController.class.getName()); - - @Inject - protected Event analyticEvents; - - @Inject - protected WorkflowController workflowController; - - /** - * Returns a analytic value as a String for a given key. - * - * @param key - * @return - */ - public String getAsString(String key) { - ItemCollection analyticData = computeValue(key); - return analyticData.getItemValueString("value"); - } - - /** - * Returns a analytic value as a Json String for a given key. - * - * @param key - * @return - */ - public String getAsJson(String key) { - ItemCollection analyticData = computeValue(key); - String jsonval = analyticData.getItemValueString("value"); - if (jsonval == null || jsonval.isEmpty()) { - return "null"; - } else { - return jsonval; - } - } - - /** - * Returns a analytic value as a Double for a given key. - * - * @param key - * @return - */ - public double getAsDouble(String key) { - ItemCollection analyticData = computeValue(key); - return analyticData.getItemValueDouble("value"); - } - - /** - * Returns the analytic label for a given key - * - * @param key - * @return - */ - public String getLabel(String key) { - ItemCollection analyticData = computeValue(key); - return analyticData.getItemValueString("label"); - } - - /** - * Returns the analytic optional link for a given key - * - * @param key - * @return - */ - public String getLink(String key) { - ItemCollection analyticData = computeValue(key); - return analyticData.getItemValueString("link"); - } - - /** - * Returns the analytic description for a given key - * - * @param key - * @return - */ - public String getDescription(String key) { - ItemCollection analyticData = computeValue(key); - return analyticData.getItemValueString("description"); - } - - /** - * Computes an analytic value. The method cache the value in the item key. - * - * An observer controller is responsible to cache or reset the cached values if - * needed. - * - * @param key - * @return - */ - protected ItemCollection computeValue(String key) { - if (workflowController.getWorkitem() != null) { - logger.fine("fire analytic event for key '" + key + "'"); - // Fire the Analytics Event for this key - AnalyticEvent event = new AnalyticEvent(key, workflowController.getWorkitem()); - if (analyticEvents != null) { - analyticEvents.fire(event); - if (event.getValue() != null) { - ItemCollection details = new ItemCollection(); - details.setItemValue("value", event.getValue()); - details.setItemValue("label", event.getLabel()); - details.setItemValue("description", event.getDescription()); - details.setItemValue("link", event.getLink()); - // cache result - implodeDetails(key, details); - } - } - } - - // analytic value is now already cached! - return explodeDetails(key); - } - - /** - * Convert the List of ItemCollections back into a List of Map elements - * - * @param workitem - */ - @SuppressWarnings({ "rawtypes" }) - private void implodeDetails(String key, ItemCollection details) { - // convert the child ItemCollection elements into a List of Map - List detailsList = new ArrayList(); - detailsList.add(details.getAllItems()); - workflowController.getWorkitem().replaceItemValue(key, detailsList); - } - - /** - * converts the Map List of a workitem into a List of ItemCollectons - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - private ItemCollection explodeDetails(String key) { - // convert current list of childItems into ItemCollection elements - List mapOrderItems = workflowController.getWorkitem().getItemValue(key); - if (mapOrderItems != null && mapOrderItems.size() > 0) { - ItemCollection itemCol = new ItemCollection((Map) mapOrderItems.get(0)); - return itemCol; - } - // return empty collection - ItemCollection dummy = new ItemCollection(); - dummy.setItemValue("value", ""); - dummy.setItemValue("label", ""); - dummy.setItemValue("description", "No data available"); - - return dummy; - } - -} diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticEvent.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticEvent.java deleted file mode 100644 index 365583a..0000000 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/AnalyticEvent.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.imixs.workflow.office.forms; - -import org.imixs.workflow.ItemCollection; - -/** - * An AnalyticEvent is send by the AnalyticController during initialization - */ -public class AnalyticEvent { - - private String key; - private Object value = null; - private String label = ""; - private String description = ""; - private String link = ""; - private ItemCollection workitem = null; - - public AnalyticEvent(String key, ItemCollection workitem) { - this.key = key; - this.workitem = workitem; - } - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public ItemCollection getWorkitem() { - return workitem; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - -} diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionController.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionController.java deleted file mode 100644 index ba532ac..0000000 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionController.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Imixs Workflow Technology - * Copyright (C) 2003, 2008 Imixs Software Solutions GmbH, - * http://www.imixs.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You can receive a copy of the GNU General Public - * License at http://www.gnu.org/licenses/gpl.html - * - * Contributors: - * Imixs Software Solutions GmbH - initial API and implementation - * Ralph Soika - * - *******************************************************************************/ -package org.imixs.workflow.office.forms; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.imixs.workflow.dataview.DataViewService; -import org.imixs.workflow.exceptions.QueryException; -import org.imixs.workflow.faces.data.WorkflowController; - -import jakarta.annotation.PostConstruct; -import jakarta.enterprise.context.Conversation; -import jakarta.enterprise.context.ConversationScoped; -import jakarta.faces.context.FacesContext; -import jakarta.inject.Inject; -import jakarta.inject.Named; -import jakarta.servlet.http.HttpServletRequest; - -/** - * The DataViewFormSectionController provides methods to display a data view in - * a custom form section - * - * @see pages/workitems/sections/dataview.xhtml - * @author rsoika - * @version 1.0 - */ - -@Named -@ConversationScoped -public class DataViewSectionController implements Serializable { - private static final long serialVersionUID = 1L; - - public static final int MAX_SEARCH_RESULT = 1000; - public static Logger logger = Logger.getLogger(DataViewSectionController.class.getName()); - - @Inject - WorkflowController workflowController; - - @Inject - private Conversation conversation; - - @Inject - DataViewService dataViewService; - - private Map dataSets = null; - - @PostConstruct - public void init() { - startConversation(); - dataSets = new HashMap<>(); - } - - /** - * Starts a new conversation - */ - protected void startConversation() { - if (conversation.isTransient()) { - conversation.setTimeout( - ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()) - .getSession().getMaxInactiveInterval() * 1000); - conversation.begin(); - logger.log(Level.FINEST, "......start new conversation, id={0}", - conversation.getId()); - } - } - - /** - * Returns a single value from a Option key/value list - * - * @param options - options - * @param key - option key - * @return option value - */ - public String getOptionValue(String options, String key) { - // Null checks - if (options == null || key == null || options.trim().isEmpty() || key.trim().isEmpty()) { - return null; - } - - // Split options into key/value pairs (separated by semicolon) - String[] pairs = options.split(";"); - - for (String pair : pairs) { - // Split each pair into key and value (separated by equals sign) - String[] keyValue = pair.split("=", 2); // Limit to 2 in case value contains "=" - - if (keyValue.length == 2) { - String currentKey = keyValue[0].trim(); - String currentValue = keyValue[1].trim(); - - // Check if the searched key was found - if (key.equals(currentKey)) { - return currentValue; - } - } - } - - // Key not found - return null; - } - - /** - * Initializes a new DataViewSectionDataSet based on the given options - * (parameter 'name'). - * - * The expected format of the options string is: - *

- * "name=DATAVIEWNAME" - *

- * The method loads the corresponding dataView definition immediately and stores - * the dataSet in a local cache. - * - * @return view result - * @throws QueryException - */ - public DataViewSectionDataSet loadDataSet(String options) throws QueryException { - DataViewSectionDataSet dataSet = dataSets.get(options); - // Extract and set dataViewName from options - if (dataSet == null) { - String _dataViewName = getOptionValue(options, "name"); - if (_dataViewName != null) { - logger.info("...build new dataSet by options: " + options); - dataSet = new DataViewSectionDataSet(_dataViewName, workflowController.getWorkitem(), dataViewService); - if (dataSet.getDataViewDefinition() != null) { - dataSets.put(options, dataSet); - } - } - } - return dataSet; - } - - public boolean hasDataSet(String options) { - DataViewSectionDataSet dataSet = dataSets.get(options); - // Extract and set dataViewName from options - if (dataSet != null) { - return true; - } - - // test if view exists.. - String _dataViewName = getOptionValue(options, "name"); - if (dataViewService.loadDataViewDefinition(_dataViewName) != null) { - return true; - } - - return false; - } - -} diff --git a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionDataSet.java b/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionDataSet.java deleted file mode 100644 index 5f7a00e..0000000 --- a/office-alexander-logistics-app/src/main/java/org/imixs/workflow/office/forms/DataViewSectionDataSet.java +++ /dev/null @@ -1,279 +0,0 @@ -package org.imixs.workflow.office.forms; - -import java.io.IOException; -import java.io.Serializable; -import java.util.List; -import java.util.UUID; -import java.util.logging.Logger; - -import org.imixs.workflow.FileData; -import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.dataview.DataViewController; -import org.imixs.workflow.dataview.DataViewExportEvent; -import org.imixs.workflow.dataview.DataViewPOIHelper; -import org.imixs.workflow.dataview.DataViewService; -import org.imixs.workflow.exceptions.PluginException; -import org.imixs.workflow.exceptions.QueryException; - -public class DataViewSectionDataSet implements Serializable { - private static final long serialVersionUID = 1L; - - public static Logger logger = Logger.getLogger(DataViewSectionController.class.getName()); - - List data = null; - private ItemCollection dataViewDefinition; - private String dataViewName; - private List viewItemDefinitions = null; - private String query = null; - private boolean endOfList = false; - - private long totalCount = 0; - private long totalPages = 0; - - private String sortBy = null; - private boolean sortReverse = false; - private int pageSize = 10; - private int pageIndex = 0; - - private String viewId; - - private DataViewService dataViewService; - - private ItemCollection workitem; - - public DataViewSectionDataSet(String dataViewName, ItemCollection workitem, DataViewService dataViewService) { - this.dataViewName = dataViewName; - this.workitem = workitem; - this.dataViewService = dataViewService; - - // Generate a unique view ID for JSF component identification - this.viewId = "dv_" + UUID.randomUUID().toString().replace("-", ""); - - dataViewDefinition = dataViewService.loadDataViewDefinition(dataViewName); - if (dataViewDefinition == null) { - return; - } - boolean debug = dataViewDefinition.getItemValueBoolean("debug"); - if (debug) { - logger.info("resolve query by dataView '" + dataViewName + "'"); - } - - // preload the viewItem definitions - viewItemDefinitions = this.dataViewService.computeDataViewItemDefinitions(dataViewDefinition); - - // resove query by dataView - query = this.dataViewService.parseQuery(dataViewDefinition, this.workitem); - sortBy = dataViewDefinition.getItemValueString("sort.by"); - sortReverse = dataViewDefinition.getItemValueBoolean("sort.reverse"); - - loadData(); - } - - /** - * return unique data view id for jsf pages - * - * @return - */ - public String getViewId() { - return viewId; - } - - public void forward() { - if (!isEndOfList()) { - pageIndex++; - loadData(); - } - } - - public void back() { - if (pageIndex > 0) { - pageIndex--; - loadData(); - } - } - - /** - * load current page - */ - private void loadData() { - try { - data = dataViewService.getWorkflowService().getDocumentService().find(query, getPageSize(), getPageIndex(), - getSortBy(), isSortReverse()); - - // The end of a list is reached when the size is below or equal the - // pageSize. See issue #287 - totalCount = dataViewService.getWorkflowService().getDocumentService().count(query); - totalPages = (long) Math.ceil((double) totalCount / pageSize); - - if (data.size() < pageSize) { - setEndOfList(true); - } else { - // look ahead if we have more entries... - int iAhead = (getPageSize() * (getPageIndex() + 1)) + 1; - if (totalCount < iAhead) { - // there is no more data - setEndOfList(true); - } else { - setEndOfList(false); - } - } - } catch (QueryException e) { - logger.warning("Failed to load data: " + e.getMessage()); - } - } - - public List getData() { - return data; - } - - public ItemCollection getDataViewDefinition() { - return dataViewDefinition; - } - - public long getTotalCount() { - return totalCount; - } - - public long getTotalPages() { - return totalPages; - } - - public int getPageIndex() { - return pageIndex; - } - - public void setPageIndex(int pageIndex) { - this.pageIndex = pageIndex; - } - - public boolean isEndOfList() { - return endOfList; - } - - public void setEndOfList(boolean endOfList) { - this.endOfList = endOfList; - } - - public String getDataViewName() { - return dataViewName; - } - - public List getViewItemDefinitions() { - return viewItemDefinitions; - } - - /** - * returns the maximum size of a search result - * - * @return - */ - public int getPageSize() { - return pageSize; - } - - /** - * set the maximum size of a search result - * - * @param searchCount - */ - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public String getSortBy() { - return sortBy; - } - - public void setSortBy(String sortBy) { - this.sortBy = sortBy; - } - - public boolean isSortReverse() { - return sortReverse; - } - - public void setSortReverse(boolean sortReverse) { - this.sortReverse = sortReverse; - } - - /** - * Exports data into a excel template processed by apache-poi. The method sends - * a DataViewExport event to allow clients to adapt the export process. - * - * @see DataViewExportEvent - * - * @throws PluginException - * @throws QueryException - */ - public String export() throws PluginException, QueryException { - - // Build target filename - boolean debug = dataViewDefinition.getItemValueBoolean("debug"); - - // start export - if (debug) { - logger.info("│ ├── Query: " + query); - } - - try { - - // test if query exceeds max count - int totalCount = dataViewService.getWorkflowService().getDocumentService().count(query); - // start export - if (debug) { - logger.info("│ ├── Count: " + totalCount); - } - if (totalCount > DataViewService.MAX_ROWS) { - throw new PluginException(DataViewController.class.getSimpleName(), DataViewService.ERROR_CONFIG, - "Data can not be exported into Excel because dataset exceeds " + DataViewService.MAX_ROWS - + " rows!"); - } - String sortBy = dataViewDefinition.getItemValueString("sort.by"); - if (sortBy.isEmpty()) { - sortBy = "$modified"; // default - } - List workitems = dataViewService.getWorkflowService().getDocumentService().find(query, - DataViewService.MAX_ROWS, 0, sortBy, - dataViewDefinition.getItemValueBoolean("sort.reverse")); - - FileData fileDataExport = dataViewService.poiExport(workitems, dataViewDefinition, viewItemDefinitions); - - // create a temp event - ItemCollection event = new ItemCollection().setItemValue("txtActivityResult", - dataViewDefinition.getItemValue("poi.update")); - ItemCollection poiConfig = dataViewService.getWorkflowService().evalWorkflowResult(event, "poi-update", - dataViewDefinition, - false); - - // merge workitem fields (Workaround because custom forms did hard coded map to - // workflowController instead of workitem - - DataViewPOIHelper.poiUpdate(workitem, fileDataExport, poiConfig, dataViewService.getWorkflowService()); - - if (debug) { - logger.info("├── POI Export completed!"); - } - // See: - // https://stackoverflow.com/questions/9391838/how-to-provide-a-file-download-from-a-jsf-backing-bean - DataViewPOIHelper.downloadExcelFile(fileDataExport); - } catch (IOException | QueryException e) { - throw new PluginException(DataViewController.class.getSimpleName(), DataViewService.ERROR_CONFIG, - "Failed to generate Excel Export: " + e.getMessage()); - } - - // return "/pages/admin/excel_export_rechnungsausgang.jsf?faces-redirect=true"; - return ""; - } - - /** - * Returns true if a poi export is defined - * - * @return - */ - public boolean hasPoiExport() { - if (dataViewDefinition != null && !dataViewDefinition.getItemValueString("poi.targetfilename").isBlank()) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/office-alexander-logistics-testclient/pom.xml b/office-alexander-logistics-testclient/pom.xml deleted file mode 100644 index fd2ff67..0000000 --- a/office-alexander-logistics-testclient/pom.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - 4.0.0 - - office-alexander-logistics - com.alexander-logistics - 1.3.6 - - office-alexander-logistics-testclient - jar - Imixs Office Workflow Remote Test Client - - - - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - 11 - 11 - - - - - - org.apache.maven.plugins - maven-resources-plugin - 3.3.1 - - ${project.build.sourceEncoding} - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.1.2 - - - - imixs-process-manager - - - - - - jakarta.platform - jakarta.jakartaee-api - 10.0.0 - provided - - - - - - org.imixs.workflow - imixs-workflow-core - ${org.imixs.workflow.version} - - - - org.imixs.workflow - imixs-melman - ${org.imixs.melman.version} - - - - org.junit.jupiter - junit-jupiter-api - ${junit.jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.jupiter.version} - test - - - - org.mockito - mockito-core - ${mockito.version} - test - - - org.mockito - mockito-junit-jupiter - ${mockito.version} - test - - - - jakarta.xml.bind - jakarta.xml.bind-api - 3.0.0 - test - - - org.eclipse.parsson - jakarta.json - 1.1.1 - test - - - org.glassfish.jaxb - jaxb-runtime - 3.0.0 - test - - - org.glassfish.jersey.media - jersey-media-jaxb - 3.1.5 - test - - - - org.glassfish.jersey.core - jersey-client - 3.1.5 - - - - - \ No newline at end of file diff --git a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java b/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java deleted file mode 100644 index 6ed86cc..0000000 --- a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestCargosoftEvents.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.alexanderlogistics.rest; - -import java.util.List; -import java.util.Map; -import java.util.logging.Logger; - -import org.imixs.melman.EventLogClient; -import org.imixs.melman.FormAuthenticator; -import org.imixs.melman.RestAPIException; -import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.exceptions.PluginException; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -/** - * A test to explore a corgosoft invoice event - * - */ -@Disabled -public class TestCargosoftEvents { - - private static Logger logger = Logger.getLogger(TestCargosoftEvents.class.getName()); - - EventLogClient client = null; - - String restAPI = "https://test.alexander-logistics.office-workflow.de/api"; - // String restAPI = "http://localhost:8080/api"; - String userID = "kutzner-service"; - String password = "imixs"; - - /** - * Setup a new Rest Client - * - * @throws PluginException - */ - @BeforeEach - public void setup() throws PluginException { - - client = new EventLogClient(restAPI); - FormAuthenticator aut; - try { - aut = new FormAuthenticator(restAPI, userID, password); - client.registerClientRequestFilter(aut); - } catch (RestAPIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Disabled - @Test - public void getXMLData() { - logger.info("start..."); - try { - List list = client.searchEventLog("TOPIC_CARGOSOFT_INVOICE"); - logger.info("found " + list.size() + " log entries"); - for (ItemCollection entry : list) { - List dataList = entry.getItemValue("data"); - if (dataList != null && dataList.size() > 0) { - ItemCollection data = new ItemCollection((Map>) dataList.get(0)); - logger.info("Data=" + data.getItemValueString("some-data")); - logger.info("XML Data=" + data.getItemValueString("xml-data")); - } - } - } catch (RestAPIException e) { - logger.severe("Failed to read event log entry: " + e.getMessage()); - e.printStackTrace(); - } - } - - /** - * Deletes the 10 last topics - */ - @Test - public void deleteXMLData() { - logger.info("start..."); - int count = 0; - try { - client.setPageSize(1000); - List list = client.searchEventLog("topictest", "TOPIC_CARGOSOFT_INVOICE"); - // List list = client.searchEventLog(""); - - logger.info("found " + list.size() + " log entries"); - for (ItemCollection entry : list) { - String id = entry.getItemValueString("id"); - logger.info("delete event log entry id=" + id); - client.deleteEventLogEntry(id); - - count++; - if (count >= 635000) { - break; - } - - } - logger.info(count + " log entries deleted"); - } catch ( - - RestAPIException e) { - logger.severe("Failed to read event log entry: " + e.getMessage()); - e.printStackTrace(); - } - } - -} diff --git a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestEventLog.java b/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestEventLog.java deleted file mode 100644 index 32a9bc7..0000000 --- a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestEventLog.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.alexanderlogistics.rest; - -import java.util.List; -import java.util.Map; -import java.util.logging.Logger; - -import org.imixs.melman.EventLogClient; -import org.imixs.melman.FormAuthenticator; -import org.imixs.melman.RestAPIException; -import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.WorkflowKernel; -import org.imixs.workflow.exceptions.PluginException; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -/** - * A simple example how to create a new event log entry remote. - * - */ -@Disabled -public class TestEventLog { - - private static Logger logger = Logger.getLogger(TestEventLog.class.getName()); - - EventLogClient client = null; - - // String restAPI = "https://test.alexander-logistics.office-workflow.de/api"; - String restAPI = "http://localhost:8080/api"; - String userID = "kutzner-service"; - String password = "imixs"; - - /** - * Setup a new Rest Client - * - * @throws PluginException - */ - @BeforeEach - public void setup() throws PluginException { - - client = new EventLogClient(restAPI); - FormAuthenticator aut; - try { - aut = new FormAuthenticator(restAPI, userID, password); - client.registerClientRequestFilter(aut); - } catch (RestAPIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Create an event log entry.... - * - */ - @Test - public void sendXMLData() { - - logger.info("start..."); - ItemCollection payLoad = new ItemCollection(); - String uid = WorkflowKernel.generateUniqueID(); - try { - // set data.... - payLoad.setItemValue("some-data", "abc"); - String xmlString = "" - + "" - + " " - + " 224225" - + " " - + " "; - payLoad.setItemValue("xml-data", xmlString); - - client.createEventLogEntry("TOPIC_CARGOSOFT_INVOICE", uid, payLoad); - logger.info("completed"); - } catch (RestAPIException e) { - logger.severe("Failed to send event log entry: " + e.getMessage()); - e.printStackTrace(); - } - } - - @Test - public void getXMLData() { - logger.info("start..."); - try { - List list = client.searchEventLog("TOPIC_CARGOSOFT_INVOICE"); - logger.info("found " + list.size() + " log entries"); - for (ItemCollection entry : list) { - List dataList = entry.getItemValue("data"); - if (dataList != null && dataList.size() > 0) { - ItemCollection data = new ItemCollection((Map>) dataList.get(0)); - logger.info("Data=" + data.getItemValueString("some-data")); - logger.info("XML Data=" + data.getItemValueString("xml-data")); - } - } - } catch (RestAPIException e) { - logger.severe("Failed to read event log entry: " + e.getMessage()); - e.printStackTrace(); - } - } - -} diff --git a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestSendInvoice.java b/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestSendInvoice.java deleted file mode 100644 index ee50923..0000000 --- a/office-alexander-logistics-testclient/src/test/java/com/alexanderlogistics/rest/TestSendInvoice.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.alexanderlogistics.rest; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; - -import java.io.IOException; -import java.util.List; -import java.util.logging.Logger; - -import org.imixs.melman.FormAuthenticator; -import org.imixs.melman.RestAPIException; -import org.imixs.melman.WorkflowClient; -import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.exceptions.PluginException; -import org.imixs.workflow.xml.XMLDataCollectionAdapter; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -import jakarta.xml.bind.JAXBException; - -/** - * A simple example how to send an invoice document remote. - * - */ -@Disabled -public class TestSendInvoice { - - private static Logger logger = Logger.getLogger(TestSendInvoice.class.getName()); - - WorkflowClient client = null; - - // String restAPI = "https://test.alexander-logistics.office-workflow.de/api"; - String restAPI = "http://localhost:8080/api"; - String userID = "kutzner-service"; - String password = "imixs"; - - /** - * Setup a new Rest Client - * - * @throws PluginException - */ - @BeforeEach - public void setup() throws PluginException { - - client = new WorkflowClient(restAPI); - FormAuthenticator aut; - try { - aut = new FormAuthenticator(restAPI, userID, password); - client.registerClientRequestFilter(aut); - } catch (RestAPIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Create an event log entry.... - * - */ - @Test - public void sendXMLData() { - - logger.info("send invoice..."); - ItemCollection payLoad = new ItemCollection(); - ItemCollection result = null; - try { - // read test data - List col = null; - // read default content - - col = XMLDataCollectionAdapter - .readCollectionFromInputStream(getClass().getResourceAsStream("/invoice-01.xml")); - assertEquals(1, col.size()); - // set invoice data.... - // XMLDataCollection result = client.postXMLDocument("workflow/workitem", - // XMLDocumentAdapter.getDocument(col.get(0))); - result = client.processWorkitem(col.get(0)); - - logger.info("completed"); - } catch (RestAPIException | JAXBException | IOException e) { - logger.severe("Failed to send event log entry: " + e.getMessage()); - - fail(e); - } - } - -} diff --git a/office-alexander-logistics-testclient/src/test/resources/invoice-01.xml b/office-alexander-logistics-testclient/src/test/resources/invoice-01.xml deleted file mode 100644 index e6ee361..0000000 --- a/office-alexander-logistics-testclient/src/test/resources/invoice-01.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - workitem - - - Rechnungsausgang - - - 5001 - - - 980 - - - - - - - application/pdf - - JVBERi0xLjMgCiXi48............................ - - - - - - - - - - NACHL40 - - - EUR - - - 252.84 - - - Container transport from port - to warehouse in Antwerp - - - H - - - SEE - - - LA-PAP-2508-012 - - - - - FC - - - EUR - - - 22.38 - - - Fuel Charge as per fuel floater August - 2025 - - - H - - - DIESEL - - - LA-PAP-2508-012 - - - - - ZOLLABF - - - EUR - - - 16.2 - - - custom clearance fiscal representation - VAT reporting - - - H - - - SEE - - - LA-PAP-2508-012 - - - - - - - - - Graphic Packaging International (NL) - - - D12495 - - - 0.0 - - - 202508 - - - IM-ZEL - - - - - - EUR - - - 2025-09-01T00:00:00+02:00 - - - 2025-10-16T00:00:00+02:00 - - - EN - - - 245956 - - - LA-PAP-2508-012 - LA-PAP-2508-012 - LA-PAP-2508-012 - - - 0.0 - - - 2025-10-16T00:00:00+02:00 - - - 469.07 - - - LA-PAP-2508-012 - - - 469.07 - - - 469.07 - - - 0.0 - - - R - - - Ausgangsrechnung - - - 0.0 - - - 001 - - - 10 - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 77e800e..e493807 100644 --- a/pom.xml +++ b/pom.xml @@ -5,40 +5,73 @@ 4.0.0 com.alexander-logistics office-alexander-logistics - 1.3.6 - pom + 1.4.0 + war Imixs Office Workflow - Custom Build + + Imixs Software Solutions GmbH + http://www.imixs.com + + 2024 + + + rsoika + Ralph Soika + ralph.soika@imixs.com + http://blog.imixs.org/ + Imixs Software Solutions GmbH + http://www.imixs.com + + developer + testing + + 2 + + + gaheinle + Gaby Heinle + + + Imixs Software Solutions GmbH + http://www.imixs.com + + developer + testing + + 2 + + - - office-alexander-logistics-app - office-alexander-logistics-testclient - - 11 - 11 + 17 + 17 UTF-8 UTF-8 + + src/main/webapp + war + ${maven.build.timestamp} yyyyMMddHHmmss - - 10.0.0 - 5.0.5 - 6.0.9 - 5.0.0 - 3.1.3 - 3.0.3 - 2.1.1 - 1.0.3 - 1.0.3-SNAPSHOT - 6.0 - 9.9.1-4 - 2.0.26 + + 10.0.0 + 6.0 + 5.1.9-SNAPSHOT + 6.2.8-SNAPSHOT + 5.2.0 + 1.0.3-SNAPSHOT + 3.2.4-SNAPSHOT + 1.0.4-SNAPSHOT + + 4.0.0 + 9.9.1-4 + 2.0.24 - 1.1.1 + 1.1.9-SNAPSHOT src/main/webapp @@ -56,6 +89,7 @@ war + Production java:/mail/org.imixs.workflow.mail @@ -67,9 +101,9 @@ - sonatype-snaptshots - Sonatype Snapshot repository - http://oss.sonatype.org/content/repositories/snapshots + central-portal-snapshots + Central Portal Snapshots + https://central.sonatype.com/repository/maven-snapshots/ false @@ -82,19 +116,114 @@ docker - + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.8 + + + install + + + + + + + + + + + + run + + + + + + + + debug - + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.8 + + + install + + + + + + + + + + + + + + run + + + + + + - kubernetes - + imixs-cloud + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.8 + + + install + + + + + + + + + + + + + + + + + + + + + run + + + + + + + - @@ -103,7 +232,21 @@ true + + + + ${basedir}/./reports + + + ${basedir}/./workflow + + + ${basedir}/src/test/resources + + + + maven-compiler-plugin @@ -117,8 +260,59 @@ org.apache.maven.plugins maven-surefire-plugin - 2.22.2 + 3.3.1 + + + default-test + test + + test + + + + --add-opens java.base/java.lang=ALL-UNNAMED + + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.2.0 + + false + + + true + + ${custom.webResources} + + **/WEB-INF/* + + + + + + + + + org.apache.maven.plugins maven-resources-plugin @@ -128,196 +322,49 @@ - + + + + target/*.{war,ear,jar} + ./docker/deployments/ + true + + + + + src/main/webapp + ./docker/deployments/${imixs-office.applicationname}.war + + + + + org.apache.maven.plugins - maven-checkstyle-plugin - 3.3.0 - - - https://raw.githubusercontent.com/imixs/imixs-workflow/master/imixs-checkstyle-8.44.xml - true - - - - verify - - check - - - + maven-release-plugin - --> - - office-alexander-logistics + + office-alexander-logistics - - - - - org.imixs.workflow - imixs-workflow-core - ${org.imixs.workflow.version} - provided - - - org.imixs.workflow - imixs-workflow-engine - ${org.imixs.workflow.version} - provided - - - org.imixs.workflow - imixs-workflow-faces - ${org.imixs.workflow.version} - - - org.imixs.workflow - imixs-workflow-jax-rs - ${org.imixs.workflow.version} - - - org.imixs.workflow - imixs-workflow-index-lucene - ${org.imixs.workflow.version} - - - - - org.imixs.workflow - imixs-marty - ${org.imixs.marty.version} - provided - - - - - org.imixs.workflow - imixs-office-workflow-app - ${org.imixs.office.version} - war - - - - - org.imixs.workflow - imixs-office-workflow-util - ${org.imixs.office.version} - provided - - - - - - org.imixs.workflow - imixs-adapters-sepa - ${org.imixs.adapters.version} - provided - - - - org.imixs.workflow - imixs-adapters-datev - ${org.imixs.adapters.version} - provided - - - - org.imixs.workflow - imixs-adapters-qrcode - ${org.imixs.adapters.version} - provided - - - - org.imixs.workflow - imixs-adapters-poi - ${org.imixs.adapters.version} - provided - - - - - org.imixs.workflow - imixs-archive-api - ${org.imixs.archive.version} - provided - - - - - - org.imixs.workflow - imixs-ai-workflow - ${org.imixs.ai.version} - compile - - - - - - org.imixs.workflow - imixs-data-groups - ${org.imixs.data.version} - compile - - - org.imixs.workflow - imixs-data-views - ${org.imixs.data.version} - compile - - - org.imixs.workflow - imixs-data-documents - ${org.imixs.data.version} - provided - - - org.imixs.workflow - imixs-data-importer - ${org.imixs.data.version} - compile - - - - - - org.imixs.workflow - imixs-melman - ${org.imixs.melman.version} - compile - - - - - net.sf.saxon - Saxon-HE - ${net.sf.saxon.version} - - - @@ -326,8 +373,6 @@ ${jakarta.version} provided - - org.eclipse.microprofile @@ -337,6 +382,131 @@ provided + + + org.imixs.workflow + imixs-office-workflow-app + war + ${org.imixs.office.version} + + + org.imixs.workflow + imixs-office-workflow-util + ${org.imixs.office.version} + + + + + org.imixs.workflow + imixs-data-importer + ${org.imixs.data.version} + + + org.apache.pdfbox + pdfbox + ${apache.pdfbox.version} + + + + + org.imixs.workflow + imixs-ai-workflow + ${org.imixs.ai.version} + + + org.imixs.workflow + imixs-ai-bpmn + ${org.imixs.ai.version} + + + + + org.imixs.workflow + imixs-adapters-sepa + ${org.imixs.adapter.version} + + + + org.imixs.workflow + imixs-adapters-datev + ${org.imixs.adapter.version} + + + + + org.imixs.workflow + imixs-adapters-qrcode + ${org.imixs.adapter.version} + + + + org.imixs.util + imixs-e-invoice + ${org.imixs.e-invoice.version} + + + + + commons-net + commons-net + 3.6 + + + + + com.sun.mail + javax.mail + 1.6.2 + test + + + org.apache.httpcomponents + httpclient + 4.5.10 + test + + + com.fasterxml.jackson.core + jackson-databind + 2.13.3 + test + + + + + + org.glassfish.jersey.core + jersey-client + 3.1.2 + test + + + org.apache.cxf + cxf-rt-rs-client + 3.3.6 + test + + + org.glassfish.jersey.inject + jersey-hk2 + 3.1.2 + test + + + + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 + test + + + @@ -365,7 +535,6 @@ ${mockito.version} test - org.eclipse.parsson jakarta.json diff --git a/sepa_PKO_Bank_Polski_SA_(PLN)_2024-06-20T0933-fix.xml b/sepa_PKO_Bank_Polski_SA_(PLN)_2024-06-20T0933-fix.xml deleted file mode 100644 index a5aec11..0000000 --- a/sepa_PKO_Bank_Polski_SA_(PLN)_2024-06-20T0933-fix.xml +++ /dev/null @@ -1,523 +0,0 @@ - - - - - 885e0519099f4ef5876b1b721d4b605f - 2024-06-20T09:33:46 - 20 - 67913,22 - - PKO Bank Polski SA (PLN) - - - - 885e0519099f4ef5876b1b721d4b605f-1 - TRF - 20 - 67913,22 - - - SEPA - - - 2024-06-20 - - PKO Bank Polski SA (PLN) - - - - PL61102010260000120203993128 - - - - - BPKOPLPW - - - SHAR - - - NOTPROVIDED - - - 2337.00 - - - - ALBPPLPW - - - - Blaszkiewicz - - - - PL35249000050000453034973384 - - - - 701528 / 540/05/2024 - - - - - NOTPROVIDED - - - 4059.00 - - - - GBWCPLPP - - - - KOWALEWSKI - - - - PL33823300040017753920140001 - - - - 701515 / FS 318/04/2024 - - - - - NOTPROVIDED - - - 2337.00 - - - - PKOPPLPW - - - - GEODIS - - - - PL85124062921111001069083502 - - - - 701779 / FWA/24FTD/01725 - - - - - NOTPROVIDED - - - 2337.00 - - - - PKOPPLPW - - - - GEODIS - - - - PL85124062921111001069083502 - - - - 701780 / FWA/24FTD/01732 - - - - - NOTPROVIDED - - - 2337.00 - - - - PKOPPLPW - - - - GEODIS - - - - PL85124062921111001069083502 - - - - 701781 / FWA/24FTD/01736 - - - - - NOTPROVIDED - - - 3013.50 - - - - INGBPLPW - - - - adex - - - - PL42105015911000009135641521 - - - - 701800 / FS 34/05/2024 - - - - - NOTPROVIDED - - - 2952.00 - - - - PPABPLPK - - - - Danuta Bedkowska - - - - PL50102024300000860200294058 - - - - 701801 / FT/948/2024 - - - - - NOTPROVIDED - - - 2952.00 - - - - INGBPLPW - - - - Easy Way - - - - PL31105017221000009142459099 - - - - 701817 / FV/106/2024 - - - - - NOTPROVIDED - - - 2337.00 - - - - PPABPLPK - - - - RABEN - - - - PL67203000745059000010201640 - - - - 701809 / 8742530343 - - - - - NOTPROVIDED - - - 2337.00 - - - - PPABPLPK - - - - RABEN - - - - PL67203000745059000010201640 - - - - 701808 / 8742530342 - - - - - NOTPROVIDED - - - 2337.00 - - - - WBKPPLPP - - - - ZASADA TRANS - - - - PL08150017481217400107410000 - - - - 701815 / TKP/0211/05/2024/FV - - - - - NOTPROVIDED - - - 2337.00 - - - - PPABPLPKXXX - - - - Wielkopolska - - - - PL73203000451110000002046170 - - - - 701802 / V 00043/05/2024 - - - - - NOTPROVIDED - - - 2337.00 - - - - PKOPPLPW - - - - EXWIS - - - - PL88124060871111001053542790 - - - - 701823 / 381/2024 - - - - - NOTPROVIDED - - - 1230.00 - - - - PKOPPLPW - - - - GEODIS - - - - PL85124062921111001069083502 - - - - 701782 / FKA/24FTD/01907 - - - - - NOTPROVIDED - - - 2029.50 - - - - PKOPPLPW - - - - STALKO - - - - PL51124063351111000051278199 - - - - 701813 / 3814/04/2024/TR - - - - - NOTPROVIDED - - - 2029.50 - - - - PKOPPLPW - - - - STALKO - - - - PL51124063351111000051278199 - - - - 701811 / 3812/04/2024/TR - - - - - NOTPROVIDED - - - 3075.00 - - - - POLUPLPR - - - - Klajnowski - - - - PL21888210322001002691790001 - - - - 701816 / 751/2024 - - - - - NOTPROVIDED - - - 1848.00 - - - - INGBPLPW - - - - BULK CARGO - - - - PL97105000995381000010009580 - - - - 702441 / VAT/2043/E /2024 - - - - - NOTPROVIDED - - - 16961.40 - - - - PPABPLPK - - - - Baltic Hub - - - - PL52160014753166100000000793 - - - - 702466 / FV/24/06/0304 - - - - - NOTPROVIDED - - - 6730.32 - - - - PPABPLPK - - - - Baltic Hub - - - - PL52160014753166100000000793 - - - - 702467 / FV/24/06/0309 - - - - - \ No newline at end of file diff --git a/setup_dev.sh b/setup_dev.sh deleted file mode 100755 index 5eed491..0000000 --- a/setup_dev.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -############################################################ -# Setup Imixs-Documents Training Environment -# -############################################################ - -sudo chmod -R 777 docker/deployments/ - -echo "#############################################" -echo " building Imixs-ML Docker images..." -echo "#############################################" -mvn -f ~/git/imixs-ml/ clean install -Pdocker -DskipTests - -echo "#############################################" -echo " starting dev enrvionment..." -echo "#############################################" -mvn clean install -Pdebug -cp ./*-app/target/*.war ./docker/deployments/ -docker-compose -f docker-compose.yml up \ No newline at end of file diff --git a/office-alexander-logistics-app/src/main/deprecated/CargosoftController.java b/src/main/deprecated/CargosoftController.java similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/CargosoftController.java rename to src/main/deprecated/CargosoftController.java diff --git a/office-alexander-logistics-app/src/main/deprecated/DatevCargosoftImportAdapter.java b/src/main/deprecated/DatevCargosoftImportAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/DatevCargosoftImportAdapter.java rename to src/main/deprecated/DatevCargosoftImportAdapter.java diff --git a/office-alexander-logistics-app/src/main/deprecated/KreditorDebitorService.java b/src/main/deprecated/KreditorDebitorService.java similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/KreditorDebitorService.java rename to src/main/deprecated/KreditorDebitorService.java diff --git a/office-alexander-logistics-app/src/main/deprecated/KreditorSearchEntry.java b/src/main/deprecated/KreditorSearchEntry.java similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/KreditorSearchEntry.java rename to src/main/deprecated/KreditorSearchEntry.java diff --git a/office-alexander-logistics-app/src/main/deprecated/cargsoft-creditor-search.xhtml b/src/main/deprecated/cargsoft-creditor-search.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/cargsoft-creditor-search.xhtml rename to src/main/deprecated/cargsoft-creditor-search.xhtml diff --git a/office-alexander-logistics-app/src/main/deprecated/cargsoft-debitor-search.xhtml b/src/main/deprecated/cargsoft-debitor-search.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/cargsoft-debitor-search.xhtml rename to src/main/deprecated/cargsoft-debitor-search.xhtml diff --git a/office-alexander-logistics-app/src/main/deprecated/cdtreingabe.xhtml b/src/main/deprecated/cdtreingabe.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/cdtreingabe.xhtml rename to src/main/deprecated/cdtreingabe.xhtml diff --git a/office-alexander-logistics-app/src/main/deprecated/debitor_search.xhtml b/src/main/deprecated/debitor_search.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/deprecated/debitor_search.xhtml rename to src/main/deprecated/debitor_search.xhtml diff --git a/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java b/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java new file mode 100644 index 0000000..097a69c --- /dev/null +++ b/src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java @@ -0,0 +1,167 @@ +package com.alexanderlogistics; + +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.SignalAdapter; +import org.imixs.workflow.engine.DocumentService; +import org.imixs.workflow.exceptions.AdapterException; +import org.imixs.workflow.exceptions.PluginException; +import org.imixs.workflow.exceptions.QueryException; + +import com.alexanderlogistics.mahnlauf.MahnlaufService; + +import jakarta.inject.Inject; + +/** + * Der AGLAIInvoiceAdapter weist eien Rechnung dem richtigen Space zu und sucht + * nach dem passenden Business Partner + * + * + * + * @version 1.0 + * @author rsoika + */ +public class AGLAIInvoiceAdapter implements SignalAdapter { + + private static Logger logger = Logger.getLogger(AGLAIInvoiceAdapter.class.getName()); + + public static final String ERROR_MISSING_DATA = "MISSING_DATA"; + public static final String ERROR_CONFIG = "CONFIG_ERROR"; + + @Inject + MahnlaufService mahnlaufService; + + @Inject + DocumentService documentService; + + /** + * This method finds or create the Zahlungsavis and adds a reference + * ($workitemref) to the current invoice. + * + * @throws PluginException + */ + @Override + public ItemCollection execute(ItemCollection workitem, ItemCollection event) + throws AdapterException, PluginException { + + // Inbound Invoice? + if (workitem.getModelVersion().startsWith("rechnungseingang")) { + + // Initialize invoice.positions and Space + initInvoicePositions(workitem); + initInvoiceSpace(workitem); + initInvoiceBusinessPartner(workitem); + } + + return workitem; + + } + + /** + * Diese Methode prüft ob es bei einer Eingangsrechnung zwar das feld + * 'invoice.positions' gibt, aber noch keine Positionsliste + * Die Methode erzeugt eine Default Zeile. + * + * @param workitem + */ + private void initInvoicePositions(ItemCollection workitem) { + + List childList = InvoiceUtil.explodeChildList(workitem); + if (childList.size() == 0 && !workitem.getItemValueString("invoice.positions").isEmpty()) { + String positionNumber = workitem.getItemValueString("invoice.positions"); + + logger.info("├── init invoice.positions: " + positionNumber); + + ItemCollection child = new ItemCollection(); + child.setItemValue("numPos", 1); + child.setItemValue("name", positionNumber); + childList.add(child); + InvoiceUtil.implodeChildList(workitem, childList); + + } + } + + /** + * Die Methode findet den passenden Space anhand + * der REgex in space sofern das workitem noch keinem Space zugewiesen ist + * + * @param workitem + */ + private void initInvoiceSpace(ItemCollection workitem) { + + if (workitem.getItemValueString("space.ref").isEmpty() + && !workitem.getItemValueString("invoice.positions").isEmpty()) { + String positionNumber = workitem.getItemValueString("invoice.positions"); + logger.info("├── init space for position : " + positionNumber); + // Jetzt noch das Space mapping + Map> spacePosMappings = mahnlaufService.loadSpacePosMappings(); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, positionNumber); + } + } + + /** + * Find creditor cdtr.name + * based on the field + * 'document.company' or cdtr.name + * + * Zunächst versuchen wir falls ein cdtr.name von der KI gefunden wurde dieesn + * über das Businesspartner Interface aufzulösne. + * Falls das nicht gelingt, suchen wir nach einer alten Rechnung mit der selben + * document.company + * + */ + private void initInvoiceBusinessPartner(ItemCollection workitem) { + if (workitem.getItemValueString("partner.id").isEmpty() + && !workitem.getItemValueString("document.company").isEmpty()) { + + String companyName = workitem.getItemValueString("document.company"); + String cdtrName = workitem.getItemValueString("cdtr.name"); + logger.info("├── init cdtr.name for document.company: " + companyName); + + // erster versuch über Busienss partner. + String query = "(type:workitem OR type:workitemarchive) AND ($modelversion:businesspartner*) AND (partner.name:\"" + + cdtrName + "\")"; + + try { + List result = documentService.find(query, 1, 0, "$created", true); + if (result.size() == 1) { + logger.info("│ ├── found business partner by cdtr.name"); + ItemCollection businessPartner = result.get(0); + workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number")); + workitem.setItemValue("cdtr.name", businessPartner.getItemValueString("cdtr.name")); + workitem.setItemValue("partner.id", businessPartner.getItemValueString("partner.id")); + workitem.setItemValue("partner.name", businessPartner.getItemValueString("cdtr.name")); + return; + } + } catch (QueryException e) { + // not found! + logger.warning("Failed to lookup company name '" + companyName + "' : " + e.getMessage()); + } + + // Eine Suche über den exakten Namen ist sinnlos gewesen, daher versuchen wir + // nun über den letzten Treffer + query = "(type:workitem OR type:workitemarchive) AND ($modelversion:rechnungseingang*) AND (document.company:\"" + + companyName + "\") AND NOT (partner.id=\"\") AND ($taskid:[5010 TO 5900])"; + + try { + List result = documentService.find(query, 1, 0, "$created", true); + if (result.size() == 1) { + logger.info("│ ├── found business partner by last invoice"); + ItemCollection invoice = result.get(0); + workitem.setItemValue("cdtr.number", invoice.getItemValueString("cdtr.number")); + workitem.setItemValue("cdtr.name", invoice.getItemValueString("cdtr.name")); + workitem.setItemValue("partner.id", invoice.getItemValueString("partner.id")); + workitem.setItemValue("partner.name", invoice.getItemValueString("cdtr.name")); + } + } catch (QueryException e) { + // not found! + logger.warning("Failed to lookup company name '" + companyName + "' : " + e.getMessage()); + } + + } + + } +} \ No newline at end of file diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java similarity index 90% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java rename to src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java index ae2d4f5..449ac2b 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java +++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java @@ -120,55 +120,57 @@ public class AGLAnalyticControllerDebitor implements Serializable { link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr(); } if ("analytic.invoices.count.all".equals(event.getKey())) { - event.setValue("" + countAll); - event.setLabel(formatTotals(totalAllCurrency1, totalAllCurrency2)); - event.setDescription("Total invoices"); - event.getWorkitem().setItemValue("invoices.total", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", countAll); + event.getData().setItemValue("label", formatTotals(totalAllCurrency1, totalAllCurrency2)); + event.getData().setItemValue("description", "Total invoices"); + event.getWorkitem().setItemValue("invoices.total", countAll); + event.getWorkitem().setItemValue("link", link); } if ("analytic.invoices.count.open".equals(event.getKey())) { - event.setValue("" + countOpen); - event.setLabel(formatTotals(totalOpenCurrency1, totalOpenCurrency2)); - event.setDescription("Total invoices not yet in due"); - event.getWorkitem().setItemValue("invoices.total.open", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countOpen); + event.getData().setItemValue("label", formatTotals(totalOpenCurrency1, totalOpenCurrency2)); + event.getData().setItemValue("description", "Total invoices not yet in due"); + event.getWorkitem().setItemValue("invoices.total.open", countOpen); + event.getWorkitem().setItemValue("link", link); } if ("analytic.invoices.count.due".equals(event.getKey())) { - event.setValue("" + countDue); - event.setLabel(formatTotals(totalDueCurrency1, totalDueCurrency2)); - event.setDescription("Total invoices in due"); - event.getWorkitem().setItemValue("invoices.total.due", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countDue); + event.getData().setItemValue("label", formatTotals(totalDueCurrency1, totalDueCurrency2)); + event.getData().setItemValue("description", "Total invoices in due"); + event.getWorkitem().setItemValue("invoices.total.due", countDue); + event.getWorkitem().setItemValue("link", link); } + if ("analytic.invoices.count.dunning".equals(event.getKey())) { - event.setValue("" + countDunning); - event.setLabel(formatTotals(totalDunningCurrency1, totalDunningCurrency2)); - event.setDescription("Total invoices in dunning"); - event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countDunning); + event.getData().setItemValue("label", formatTotals(totalDunningCurrency1, totalDunningCurrency2)); + event.getData().setItemValue("description", "Total invoices in dunning"); + event.getWorkitem().setItemValue("invoices.total.dunning", countDunning); + event.getWorkitem().setItemValue("link", link); } if ("analytic.payment.avg.due".equals(event.getKey())) { - event.setValue("" + averagePaymentDue); - event.setLabel("days"); - event.setDescription("Average terms of credit in the last 12 months."); - event.getWorkitem().setItemValue("payment.avg.due", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + averagePaymentDue); + event.getData().setItemValue("label", "days"); + event.getData().setItemValue("description", "Average terms of credit in the last 12 months."); + event.getWorkitem().setItemValue("payment.avg.due", averagePaymentDue); + event.getWorkitem().setItemValue("link", link); } + if ("analytic.payment.avg.days".equals(event.getKey())) { - event.setValue("" + averagePaymentDays); - event.setLabel("days"); - event.setDescription("Average duration for payment during the last 12 months."); - event.getWorkitem().setItemValue("payment.avg.days", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + averagePaymentDays); + event.getData().setItemValue("label", "days"); + event.getData().setItemValue("description", "Average duration for payment during the last 12 months."); + event.getWorkitem().setItemValue("payment.avg.days", averagePaymentDays); + event.getWorkitem().setItemValue("link", link); } if ("analytic.invoices.trend".equals(event.getKey())) { - event.setValue(chartData); - event.setLabel("Payment duration in days"); - event.setDescription("Payment practice by week"); + event.getData().setItemValue("value", chartData); + event.getData().setItemValue("label", "Payment duration in days"); + event.getData().setItemValue("description", "Payment practice by week"); } } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java similarity index 80% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java rename to src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java index d20f511..76d3f7b 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java +++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java @@ -100,34 +100,39 @@ public class AGLAnalyticControllerOPListe implements Serializable { + "&spaceref=" + departmentID; } if ("analytic.invoices.count.all".equals(event.getKey())) { - event.setValue("" + countAll); - event.setLabel(resourceBundleHandler.findMessage("oplist.invoices")); - event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.all")); - event.getWorkitem().setItemValue("invoices.total", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countAll); + event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); + event.getData().setItemValue("description", + resourceBundleHandler.findMessage("oplist.invoices.description.all")); + event.getWorkitem().setItemValue("invoices.total", countAll); + event.getWorkitem().setItemValue("link", link); } if ("analytic.invoices.count.open".equals(event.getKey())) { - event.setValue("" + (countOpen)); - event.setLabel(resourceBundleHandler.findMessage("oplist.invoices")); - event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.open")); - event.getWorkitem().setItemValue("invoices.total.open", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + (countOpen)); + event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); + event.getData().setItemValue("description", + resourceBundleHandler.findMessage("oplist.invoices.description.open")); + event.getWorkitem().setItemValue("invoices.total.open", countOpen); + event.getWorkitem().setItemValue("link", link); } if ("analytic.invoices.count.due".equals(event.getKey())) { - event.setValue("" + countDue); - event.setLabel(resourceBundleHandler.findMessage("oplist.invoices")); - event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.due")); - event.getWorkitem().setItemValue("invoices.total.due", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countDue); + event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); + event.getData().setItemValue("description", + resourceBundleHandler.findMessage("oplist.invoices.description.due")); + event.getWorkitem().setItemValue("invoices.total.due", countDue); + event.getWorkitem().setItemValue("link", link); } + if ("analytic.invoices.count.dunning".equals(event.getKey())) { - event.setValue("" + countDunning); - event.setLabel(resourceBundleHandler.findMessage("oplist.invoices")); - event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.dunning")); - event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue()); - event.setLink(link); + event.getData().setItemValue("value", "" + countDunning); + event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); + event.getData().setItemValue("description", + resourceBundleHandler.findMessage("oplist.invoices.description.dunning")); + event.getWorkitem().setItemValue("invoices.total.dunning", countDunning); + event.getWorkitem().setItemValue("link", link); } } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java similarity index 88% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java rename to src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java index 2f3682a..942cadf 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java +++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java @@ -69,53 +69,57 @@ public class AGLAnalyticControllerSteuer implements Serializable { link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid"; } if ("analytic.steuer.eust".equals(event.getKey())) { - event.setValue(computeSteuerbescheideEUST()); - event.setLabel("EUR"); - event.setDescription("Gesamt Einfuhrumsatzsteuer (EUSt)"); - event.getWorkitem().setItemValue("eust.total", event.getValue()); - event.setLink(link); + Object eustTotal = computeSteuerbescheideEUST(); + event.getData().setItemValue("value", eustTotal); + event.getData().setItemValue("label", "EUR"); + event.getData().setItemValue("description", "Gesamt Einfuhrumsatzsteuer (EUSt)"); + event.getWorkitem().setItemValue("eust.total", eustTotal); + event.getWorkitem().setItemValue("link", link); } + if ("analytic.steuer.zoll".equals(event.getKey())) { - event.setValue(computeSteuerbescheideZoll()); - event.setLabel("EUR"); - event.setDescription("Gesamt Zölle (ZOLLEU)"); - event.setLink(link); + event.getData().setItemValue("value", computeSteuerbescheideZoll()); + event.getData().setItemValue("label", "EUR"); + event.getData().setItemValue("description", "Gesamt Zölle (ZOLLEU)"); + event.getWorkitem().setItemValue("link", link); } if ("analytic.steuer.total".equals(event.getKey())) { - event.setValue(computeSteuerbescheideTotal()); - event.setLabel("EUR"); - event.setDescription("Alle Steuerbescheide die noch nicht abgerechnet wurden."); - event.setLink(link); + event.getData().setItemValue("value", computeSteuerbescheideTotal()); + event.getData().setItemValue("label", "EUR"); + event.getData().setItemValue("description", "Alle Steuerbescheide die noch nicht abgerechnet wurden."); + event.getWorkitem().setItemValue("link", link); } if ("analytic.steuer.saldo".equals(event.getKey())) { - event.setValue(computeSteuerbescheideSaldo()); - event.setLabel("EUR"); - event.setDescription("Saldo aller Steuerbescheide die noch nicht abgerechnet wurden."); - event.setLink(link); + event.getData().setItemValue("value", computeSteuerbescheideSaldo()); + event.getData().setItemValue("label", "EUR"); + event.getData().setItemValue("description", + "Saldo aller Steuerbescheide die noch nicht abgerechnet wurden."); + event.getWorkitem().setItemValue("link", link); } if ("analytic.steuer.due".equals(event.getKey())) { - event.setValue(computeSteuerbescheideSaldoDue()); - event.setLabel("EUR"); - event.setDescription("Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden."); - // event.setLink(link + "&task=Überfällig"); - event.setLink(link + "&task=1200"); + event.getData().setItemValue("value", computeSteuerbescheideSaldoDue()); + event.getData().setItemValue("label", "EUR"); + event.getData().setItemValue("description", + "Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden."); + // event.getWorkitem().setItemValue("link", link + "&task=Überfällig"); + event.getWorkitem().setItemValue("link", link + "&task=1200"); } // Charts if ("analytic.steuer.trend".equals(event.getKey())) { - event.setValue(accumulateSteuerbescheideByWeek()); - event.setLabel("Zoll & EUST"); - event.setDescription("Fälligkeiten nach KW"); + event.getData().setItemValue("value", accumulateSteuerbescheideByWeek()); + event.getData().setItemValue("label", "Zoll & EUST"); + event.getData().setItemValue("description", "Fälligkeiten nach KW"); } if ("analytic.steuer.trend.abteilung".equals(event.getKey())) { - event.setValue(accumulateSteuerbescheideAbteilungByWeek()); - event.setLabel("Nach Abteilungen"); - event.setDescription("Offene Salden nach KW pro Abteilung"); + event.getData().setItemValue("value", accumulateSteuerbescheideAbteilungByWeek()); + event.getData().setItemValue("label", "Nach Abteilungen"); + event.getData().setItemValue("description", "Offene Salden nach KW pro Abteilung"); } } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapter.java b/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapter.java rename to src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java b/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java similarity index 97% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java rename to src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java index b3e8e93..2e5caeb 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java +++ b/src/main/java/com/alexanderlogistics/AGLAnalyticExcelAdapterDebitor.java @@ -25,7 +25,7 @@ import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.poi.POIFindReplaceAdapter; -import org.imixs.workflow.poi.POIUtil; +import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.util.XMLParser; import jakarta.inject.Inject; @@ -174,7 +174,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter { int newColumns = (currencyList.size() - 1) * 2; for (int i = 0; i < newColumns; i++) { logger.info(".. add currency column..."); - POIUtil.insertColumn(sheet, 6, 8 + i); + XSSFUtil.insertColumn(sheet, 6, 8 + i); } // Beschriftungen eintragen @@ -247,7 +247,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter { // jetzt füge alle Rechnungen an. int totalRowCount = invoices.size(); - POIUtil.insertRows(sheet, "A11", totalRowCount - 0); + XSSFUtil.insertRows(sheet, "A11", totalRowCount - 0); for (ItemCollection invoice : invoices) { logger.fine("......add invoice " + invoice.getUniqueID()); @@ -285,8 +285,8 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter { // setze Summen Formeln for (int column = 6; column < currencyList.size() * 2 + 6; column++) { XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11 - String cellRefFrom = POIUtil.getCellReference(column, 10); - String cellRefTo = POIUtil.getCellReference(column, totalRowCount + 10); + String cellRefFrom = XSSFUtil.getCellReference(column, 10); + String cellRefTo = XSSFUtil.getCellReference(column, totalRowCount + 10); String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")"; cell.setCellFormula(formula); } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLConfigController.java b/src/main/java/com/alexanderlogistics/AGLConfigController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLConfigController.java rename to src/main/java/com/alexanderlogistics/AGLConfigController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java b/src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java rename to src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java b/src/main/java/com/alexanderlogistics/BusinessPartnerController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java rename to src/main/java/com/alexanderlogistics/BusinessPartnerController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerSearchEntry.java b/src/main/java/com/alexanderlogistics/BusinessPartnerSearchEntry.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerSearchEntry.java rename to src/main/java/com/alexanderlogistics/BusinessPartnerSearchEntry.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java b/src/main/java/com/alexanderlogistics/BusinessPartnerService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java rename to src/main/java/com/alexanderlogistics/BusinessPartnerService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java b/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java rename to src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java b/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java rename to src/main/java/com/alexanderlogistics/CargosoftSplitAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CustomSearchController.java b/src/main/java/com/alexanderlogistics/CustomSearchController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CustomSearchController.java rename to src/main/java/com/alexanderlogistics/CustomSearchController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java b/src/main/java/com/alexanderlogistics/DebitorStatistikController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java rename to src/main/java/com/alexanderlogistics/DebitorStatistikController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikData.java b/src/main/java/com/alexanderlogistics/DebitorStatistikData.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikData.java rename to src/main/java/com/alexanderlogistics/DebitorStatistikData.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java b/src/main/java/com/alexanderlogistics/FTPConnector.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java rename to src/main/java/com/alexanderlogistics/FTPConnector.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceAnalyseController.java b/src/main/java/com/alexanderlogistics/InvoiceAnalyseController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceAnalyseController.java rename to src/main/java/com/alexanderlogistics/InvoiceAnalyseController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceDispatchAdapter.java b/src/main/java/com/alexanderlogistics/InvoiceDispatchAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceDispatchAdapter.java rename to src/main/java/com/alexanderlogistics/InvoiceDispatchAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceDispatchController.java b/src/main/java/com/alexanderlogistics/InvoiceDispatchController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceDispatchController.java rename to src/main/java/com/alexanderlogistics/InvoiceDispatchController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java b/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java rename to src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java b/src/main/java/com/alexanderlogistics/InvoicePlugin.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java rename to src/main/java/com/alexanderlogistics/InvoicePlugin.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceService.java b/src/main/java/com/alexanderlogistics/InvoiceService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceService.java rename to src/main/java/com/alexanderlogistics/InvoiceService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java b/src/main/java/com/alexanderlogistics/InvoiceUtil.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java rename to src/main/java/com/alexanderlogistics/InvoiceUtil.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java b/src/main/java/com/alexanderlogistics/OPListController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java rename to src/main/java/com/alexanderlogistics/OPListController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java b/src/main/java/com/alexanderlogistics/OPListExportAdapter.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java rename to src/main/java/com/alexanderlogistics/OPListExportAdapter.java index 68a4a05..e28b938 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapter.java +++ b/src/main/java/com/alexanderlogistics/OPListExportAdapter.java @@ -26,7 +26,7 @@ import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.poi.POIFindReplaceAdapter; -import org.imixs.workflow.poi.POIUtil; +import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.util.XMLParser; import jakarta.inject.Inject; @@ -179,7 +179,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter { int newColumns = (currencyList.size() - 1) * 1; for (int i = 0; i < newColumns; i++) { logger.fine(".. add currency column..."); - POIUtil.insertColumn(sheet, 5, 6 + i); + XSSFUtil.insertColumn(sheet, 5, 6 + i); } // Beschriftungen eintragen diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java b/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java rename to src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java index b110389..90a3093 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java +++ b/src/main/java/com/alexanderlogistics/OPListExportAdapterByWeek.java @@ -37,7 +37,7 @@ import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.poi.POIFindReplaceAdapter; -import org.imixs.workflow.poi.POIUtil; +import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.util.XMLParser; import jakarta.inject.Inject; @@ -199,13 +199,13 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter { int newColumns = (currencyList.size() * (spaces.size())) - 1; for (int i = 0; i < newColumns; i++) { logger.fine(".. add currency column..."); - POIUtil.insertColumn(sheet, 1, 2 + i); + XSSFUtil.insertColumn(sheet, 1, 2 + i); } // Total spalten einfuegen for (int i = 0; i < currencyList.size() - 1; i++) { logger.fine(".. add total column..."); - POIUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i); + XSSFUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i); } newColumns = newColumns + currencyList.size(); diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java b/src/main/java/com/alexanderlogistics/OPListExportController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportController.java rename to src/main/java/com/alexanderlogistics/OPListExportController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java b/src/main/java/com/alexanderlogistics/OPListExportScheduler.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListExportScheduler.java rename to src/main/java/com/alexanderlogistics/OPListExportScheduler.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/RenameFilenamesAdapter.java b/src/main/java/com/alexanderlogistics/RenameFilenamesAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/RenameFilenamesAdapter.java rename to src/main/java/com/alexanderlogistics/RenameFilenamesAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SEPAExportControllerAGL.java b/src/main/java/com/alexanderlogistics/SEPAExportControllerAGL.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SEPAExportControllerAGL.java rename to src/main/java/com/alexanderlogistics/SEPAExportControllerAGL.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerListController.java b/src/main/java/com/alexanderlogistics/SteuerListController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerListController.java rename to src/main/java/com/alexanderlogistics/SteuerListController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java b/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java rename to src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisAppendAdapter.java b/src/main/java/com/alexanderlogistics/ZahlungsavisAppendAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisAppendAdapter.java rename to src/main/java/com/alexanderlogistics/ZahlungsavisAppendAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisController.java b/src/main/java/com/alexanderlogistics/ZahlungsavisController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisController.java rename to src/main/java/com/alexanderlogistics/ZahlungsavisController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java b/src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java rename to src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java index 2eaeebb..3b8f6e8 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java +++ b/src/main/java/com/alexanderlogistics/ZahlungsavisExportAdapter.java @@ -22,6 +22,7 @@ import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.poi.POIFindReplaceAdapter; +import org.imixs.workflow.poi.XSSFUtil; import jakarta.inject.Inject; @@ -171,7 +172,7 @@ public class ZahlungsavisExportAdapter extends POIFindReplaceAdapter { sheet.shiftRows(referenceRowPos, lastRow + invoiceIDs.size(), -1, true, true); // finally update the total formula... - evalXSSFSheet(doc, sheet, "TOTAL"); + XSSFUtil.evalXSSFSheet(doc, sheet, "TOTAL"); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // write back the file diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungseingangSaldoAdapter.java b/src/main/java/com/alexanderlogistics/ZahlungseingangSaldoAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungseingangSaldoAdapter.java rename to src/main/java/com/alexanderlogistics/ZahlungseingangSaldoAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungseingangService.java b/src/main/java/com/alexanderlogistics/ZahlungseingangService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ZahlungseingangService.java rename to src/main/java/com/alexanderlogistics/ZahlungseingangService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ai/PromptExampleAdapterXML.java b/src/main/java/com/alexanderlogistics/ai/PromptExampleAdapterXML.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ai/PromptExampleAdapterXML.java rename to src/main/java/com/alexanderlogistics/ai/PromptExampleAdapterXML.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/api/CargosoftMigrationRestService.java b/src/main/java/com/alexanderlogistics/api/CargosoftMigrationRestService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/api/CargosoftMigrationRestService.java rename to src/main/java/com/alexanderlogistics/api/CargosoftMigrationRestService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/api/DataRestService.java b/src/main/java/com/alexanderlogistics/api/DataRestService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/api/DataRestService.java rename to src/main/java/com/alexanderlogistics/api/DataRestService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java b/src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java similarity index 97% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java rename to src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java index 439b87f..eb1bc89 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java +++ b/src/main/java/com/alexanderlogistics/dataview/AGLDataViewDebitorAdapter.java @@ -19,7 +19,7 @@ import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.poi.POIFindReplaceAdapter; -import org.imixs.workflow.poi.POIUtil; +import org.imixs.workflow.poi.XSSFUtil; import com.alexanderlogistics.InvoiceService; @@ -189,7 +189,7 @@ public class AGLDataViewDebitorAdapter extends POIFindReplaceAdapter { int newColumns = (currencyList.size() - 1) * 2; for (int i = 0; i < newColumns; i++) { logger.info(".. add currency column..."); - POIUtil.insertColumn(sheet, 6, 8 + i); + XSSFUtil.insertColumn(sheet, 6, 8 + i); } // Beschriftungen eintragen @@ -259,7 +259,7 @@ public class AGLDataViewDebitorAdapter extends POIFindReplaceAdapter { // jetzt füge alle Rechnungen an. int totalRowCount = invoices.size(); - POIUtil.insertRows(sheet, "A11", totalRowCount - 0); + XSSFUtil.insertRows(sheet, "A11", totalRowCount - 0); for (ItemCollection invoice : invoices) { logger.fine("......add invoice " + invoice.getUniqueID()); @@ -297,8 +297,8 @@ public class AGLDataViewDebitorAdapter extends POIFindReplaceAdapter { // setze Summen Formeln for (int column = 6; column < currencyList.size() * 2 + 6; column++) { XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11 - String cellRefFrom = POIUtil.getCellReference(column, 10); - String cellRefTo = POIUtil.getCellReference(column, totalRowCount + 10); + String cellRefFrom = XSSFUtil.getCellReference(column, 10); + String cellRefTo = XSSFUtil.getCellReference(column, totalRowCount + 10); String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")"; cell.setCellFormula(formula); } diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/datev/CargosoftExportController.java b/src/main/java/com/alexanderlogistics/datev/CargosoftExportController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/datev/CargosoftExportController.java rename to src/main/java/com/alexanderlogistics/datev/CargosoftExportController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/datev/CargosoftExportScheduler.java b/src/main/java/com/alexanderlogistics/datev/CargosoftExportScheduler.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/datev/CargosoftExportScheduler.java rename to src/main/java/com/alexanderlogistics/datev/CargosoftExportScheduler.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/EInvoiceAdapter.java b/src/main/java/com/alexanderlogistics/einvoice/EInvoiceAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/EInvoiceAdapter.java rename to src/main/java/com/alexanderlogistics/einvoice/EInvoiceAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAPIAdapter.java b/src/main/java/com/alexanderlogistics/einvoice/KSeFAPIAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAPIAdapter.java rename to src/main/java/com/alexanderlogistics/einvoice/KSeFAPIAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java b/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java rename to src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFInvoiceLineBuilder.java b/src/main/java/com/alexanderlogistics/einvoice/KSeFInvoiceLineBuilder.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFInvoiceLineBuilder.java rename to src/main/java/com/alexanderlogistics/einvoice/KSeFInvoiceLineBuilder.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/QRTest.java b/src/main/java/com/alexanderlogistics/einvoice/QRTest.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/QRTest.java rename to src/main/java/com/alexanderlogistics/einvoice/QRTest.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/TaxCode.java b/src/main/java/com/alexanderlogistics/einvoice/TaxCode.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/TaxCode.java rename to src/main/java/com/alexanderlogistics/einvoice/TaxCode.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAPIService.java b/src/main/java/com/alexanderlogistics/ksef/api/KSeFAPIService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAPIService.java rename to src/main/java/com/alexanderlogistics/ksef/api/KSeFAPIService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java b/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java rename to src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFEncryptionHelper.java b/src/main/java/com/alexanderlogistics/ksef/api/KSeFEncryptionHelper.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFEncryptionHelper.java rename to src/main/java/com/alexanderlogistics/ksef/api/KSeFEncryptionHelper.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/SessionEncryption.java b/src/main/java/com/alexanderlogistics/ksef/api/SessionEncryption.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/SessionEncryption.java rename to src/main/java/com/alexanderlogistics/ksef/api/SessionEncryption.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java b/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java rename to src/main/java/com/alexanderlogistics/mahnlauf/ExcelExportController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoAppendAdapter.java b/src/main/java/com/alexanderlogistics/mahnlauf/InkassoAppendAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoAppendAdapter.java rename to src/main/java/com/alexanderlogistics/mahnlauf/InkassoAppendAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoController.java b/src/main/java/com/alexanderlogistics/mahnlauf/InkassoController.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoController.java rename to src/main/java/com/alexanderlogistics/mahnlauf/InkassoController.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java b/src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java rename to src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java index 4016091..8e5c10e 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java +++ b/src/main/java/com/alexanderlogistics/mahnlauf/InkassoExportAdapter.java @@ -22,6 +22,7 @@ import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.poi.POIFindReplaceAdapter; +import org.imixs.workflow.poi.XSSFUtil; import jakarta.inject.Inject; @@ -164,7 +165,7 @@ public class InkassoExportAdapter extends POIFindReplaceAdapter { sheet.shiftRows(referenceRowPos, lastRow + invoiceIDs.size(), -1, true, true); // finally update the total formula... - evalXSSFSheet(doc, sheet, "TOTAL"); + XSSFUtil.evalXSSFSheet(doc, sheet, "TOTAL"); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // write back the file diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java similarity index 78% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java rename to src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java index ed5a2c2..7c73c41 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java +++ b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufExecuteAdapter.java @@ -9,13 +9,14 @@ import java.util.Map; import java.util.logging.Logger; import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.Model; import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.engine.ModelService; import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.ModelException; import org.imixs.workflow.exceptions.PluginException; +import org.imixs.workflow.office.model.SharedModelManager; +import org.openbpmn.bpmn.BPMNModel; import com.alexanderlogistics.InvoiceUtil; @@ -50,6 +51,9 @@ public class MahnlaufExecuteAdapter implements SignalAdapter { @Inject MahnlaufService mahnlaufService; + @Inject + SharedModelManager sharedModelManager; + /** * This method finds all invices ($workitemref) and tirgges event 300 * @@ -96,10 +100,15 @@ public class MahnlaufExecuteAdapter implements SignalAdapter { if (isInDue(invoice)) { try { // first fetch the event of the invoice to be processed - Model invoiceModel; - invoiceModel = this.modelService.getModel(invoice.getModelVersion()); - ItemCollection invoiceEvent = invoiceModel.getEvent(invoice.getTaskID(), - MahnlaufService.EVENT_MAHNLAUF_EXECUTE); + + BPMNModel bpmnModel = modelService.getBPMNModel(invoice.getModelVersion()); + ItemCollection invoiceEvent = sharedModelManager.getModelManager().findEventByID(bpmnModel, + invoice.getTaskID(), MahnlaufService.EVENT_MAHNLAUF_EXECUTE); + + // Model invoiceModel; + // invoiceModel = this.modelService.getModel(invoice.getModelVersion()); + // ItemCollection invoiceEvent = invoiceModel.getEvent(invoice.getTaskID(), + // MahnlaufService.EVENT_MAHNLAUF_EXECUTE); if (invoiceEvent != null) { ItemCollection eventDunningConfig = this.workflowService.evalWorkflowResult(invoiceEvent, "dunning", invoice); @@ -125,24 +134,24 @@ public class MahnlaufExecuteAdapter implements SignalAdapter { } switch (invoice.getTaskID()) { - case 5200: - case 5201: - if (dunningLevel < 1) - dunningLevel = 1; - break; - case 5210: - case 5211: - if (dunningLevel < 2) - dunningLevel = 2; - break; - case 5220: - if (dunningLevel < 3) - dunningLevel = 3; - break; - default: - if (dunningLevel < 1) - dunningLevel = 1; - break; + case 5200: + case 5201: + if (dunningLevel < 1) + dunningLevel = 1; + break; + case 5210: + case 5211: + if (dunningLevel < 2) + dunningLevel = 2; + break; + case 5220: + if (dunningLevel < 3) + dunningLevel = 3; + break; + default: + if (dunningLevel < 1) + dunningLevel = 1; + break; } // create a workitem stub for the mail message @@ -179,18 +188,18 @@ public class MahnlaufExecuteAdapter implements SignalAdapter { // compute subject switch (dunningLevel) { - case 2: - mahnLaufWorkitem.setItemValue("mail.subject_de", "2. MAHNUNG"); - mahnLaufWorkitem.setItemValue("mail.subject_en", "2. REMINDER"); - break; - case 3: - mahnLaufWorkitem.setItemValue("mail.subject_de", "LETZTE AUSSERGERICHTLICHE MAHNUNG"); - mahnLaufWorkitem.setItemValue("mail.subject_en", "LAST REMINDER"); - break; - default: - mahnLaufWorkitem.setItemValue("mail.subject_de", "1. MAHNUNG"); - mahnLaufWorkitem.setItemValue("mail.subject_en", "1. REMINDER"); - break; + case 2: + mahnLaufWorkitem.setItemValue("mail.subject_de", "2. MAHNUNG"); + mahnLaufWorkitem.setItemValue("mail.subject_en", "2. REMINDER"); + break; + case 3: + mahnLaufWorkitem.setItemValue("mail.subject_de", "LETZTE AUSSERGERICHTLICHE MAHNUNG"); + mahnLaufWorkitem.setItemValue("mail.subject_en", "LAST REMINDER"); + break; + default: + mahnLaufWorkitem.setItemValue("mail.subject_de", "1. MAHNUNG"); + mahnLaufWorkitem.setItemValue("mail.subject_en", "1. REMINDER"); + break; } // Verify the dbtr.mail item (split into multi value) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java similarity index 94% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java rename to src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java index c95b3a4..3463879 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java +++ b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.logging.Logger; import org.imixs.workflow.ItemCollection; -import org.imixs.workflow.Model; import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.WorkflowKernel; import org.imixs.workflow.engine.ModelService; @@ -14,7 +13,9 @@ import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.ModelException; import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; +import org.imixs.workflow.office.model.SharedModelManager; import org.imixs.workflow.sepa.services.SepaWorkflowService; +import org.openbpmn.bpmn.BPMNModel; import com.alexanderlogistics.BusinessPartnerService; import com.alexanderlogistics.InvoiceUtil; @@ -50,6 +51,9 @@ public class MahnlaufRefAddAdapter implements SignalAdapter { @Inject BusinessPartnerService businessPartnerService; + @Inject + SharedModelManager sharedModelManager; + /** * This method finds or create the Mahnlauf and adds a reference ($workitemref) * to the current invoice. @@ -167,8 +171,11 @@ public class MahnlaufRefAddAdapter implements SignalAdapter { mahnlaufWorkitem.setItemValue("invoice.language", invoice.getItemValue("invoice.language")); // set workflow group name from the Task Element to identify document in xslt - Model model = modelService.getModel(modelVersion); - ItemCollection task = model.getTask(taskID); + BPMNModel bpmnModel = modelService.getBPMNModel(modelVersion); + ItemCollection task = sharedModelManager.getModelManager().findTaskByID(bpmnModel, taskID); + + // Model model = modelService.getModel(modelVersion); + // ItemCollection task = model.getTask(taskID); String modelTaskGroupName = task.getItemValueString("txtworkflowgroup"); // DO NOT CHANGE! mahnlaufWorkitem.setItemValue(WorkflowKernel.WORKFLOWGROUP, modelTaskGroupName); diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java similarity index 97% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java rename to src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java index 2516dda..004180a 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java +++ b/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufService.java @@ -129,10 +129,11 @@ public class MahnlaufService { * @param workitem * @param spacePosMappings */ - public void mapInvoiceTextToSpace(ItemCollection workitem, Map> spacePosMappings) { + public void mapInvoiceTextToSpace(ItemCollection workitem, Map> spacePosMappings, + String positionNumber) { // Jezt noch das Space mapping // dazu kucken wir in alle spaces den config wert 'pos.mapping' - String text = workitem.getItemValueString("invoice.text"); + String text = positionNumber; // workitem.getItemValueString("invoice.text"); if (!text.isEmpty()) { boolean found = false; for (Map.Entry> entry : spacePosMappings.entrySet()) { diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mail/MailPlugin.java b/src/main/java/com/alexanderlogistics/mail/MailPlugin.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mail/MailPlugin.java rename to src/main/java/com/alexanderlogistics/mail/MailPlugin.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/sepa/SEPAExportAdapterExcel.java b/src/main/java/com/alexanderlogistics/sepa/SEPAExportAdapterExcel.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/sepa/SEPAExportAdapterExcel.java rename to src/main/java/com/alexanderlogistics/sepa/SEPAExportAdapterExcel.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java b/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java rename to src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java rename to src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java index c338a3f..ef8821e 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java +++ b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java @@ -428,7 +428,8 @@ public class CargosoftXMLEAkteImportService { readXMLRows(doc, workitem); // Jetzt noch das Space mapping workitem.setItemValue("invoice.text", workitem.getItemValueString("invoice.positions")); - mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, + workitem.getItemValueString("invoice.positions")); // Finally we attache the pdf file and the XML content to the workitem. attacheFiles(doc, workitem); diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java rename to src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java index 6ae1d73..69ef91f 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java +++ b/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java @@ -482,7 +482,8 @@ public class CargosoftXMLInvoiceImportService { resolveATCNumbers(doc, workitem); // Jetzt noch das Space mapping - mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings); + mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings, + workitem.getItemValueString("invoice.text")); // Rückstellungen ignorieren if (isRueckStellung(workitem)) { diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/TokenResponse.java b/src/main/java/com/alexanderlogistics/zoho/TokenResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/TokenResponse.java rename to src/main/java/com/alexanderlogistics/zoho/TokenResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoAPIService.java b/src/main/java/com/alexanderlogistics/zoho/ZohoAPIService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoAPIService.java rename to src/main/java/com/alexanderlogistics/zoho/ZohoAPIService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoController.java b/src/main/java/com/alexanderlogistics/zoho/ZohoController.java similarity index 99% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoController.java rename to src/main/java/com/alexanderlogistics/zoho/ZohoController.java index fa0660a..a83dc16 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoController.java +++ b/src/main/java/com/alexanderlogistics/zoho/ZohoController.java @@ -36,7 +36,7 @@ import jakarta.inject.Named; /** * Der ZohoController ist für das Admin Interface um Access Tokens zu erzeugen. * - * @see admin/zoho.xhml + * @see zoho.xhml * * @author rsoika * diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoExportAdapter.java b/src/main/java/com/alexanderlogistics/zoho/ZohoExportAdapter.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoExportAdapter.java rename to src/main/java/com/alexanderlogistics/zoho/ZohoExportAdapter.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthCallbackService.java b/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthCallbackService.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthCallbackService.java rename to src/main/java/com/alexanderlogistics/zoho/ZohoOAuthCallbackService.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthManager.java b/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthManager.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/ZohoOAuthManager.java rename to src/main/java/com/alexanderlogistics/zoho/ZohoOAuthManager.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBill.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBill.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBill.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoBill.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillCreateResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillCreateResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillCreateResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillCreateResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillItem.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillItem.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillItem.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoBillItem.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContact.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContact.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContact.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoContact.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactCreateResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactCreateResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactCreateResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactCreateResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactFindResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactFindResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactFindResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoContactFindResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnote.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnote.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnote.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnote.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteCreateResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteCreateResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteCreateResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteCreateResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteInvoiceItem.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteInvoiceItem.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteInvoiceItem.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoCreditnoteInvoiceItem.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoice.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoice.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoice.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoice.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceCreateResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceCreateResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceCreateResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceCreateResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceFindResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceFindResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceFindResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceFindResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceItem.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceItem.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceItem.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoInvoiceItem.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTax.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTax.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTax.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoTax.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTaxListResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTaxListResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoTaxListResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoTaxListResponse.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCredit.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCredit.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCredit.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCredit.java diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCreditCreateResponse.java b/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCreditCreateResponse.java similarity index 100% rename from office-alexander-logistics-app/src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCreditCreateResponse.java rename to src/main/java/com/alexanderlogistics/zoho/dto/ZohoVendorCreditCreateResponse.java diff --git a/office-alexander-logistics-app/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF similarity index 100% rename from office-alexander-logistics-app/src/main/resources/META-INF/MANIFEST.MF rename to src/main/resources/META-INF/MANIFEST.MF diff --git a/office-alexander-logistics-app/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml similarity index 100% rename from office-alexander-logistics-app/src/main/resources/META-INF/persistence.xml rename to src/main/resources/META-INF/persistence.xml diff --git a/office-alexander-logistics-app/src/main/resources/agl_wandlung_20250822.csv b/src/main/resources/agl_wandlung_20250822.csv similarity index 100% rename from office-alexander-logistics-app/src/main/resources/agl_wandlung_20250822.csv rename to src/main/resources/agl_wandlung_20250822.csv diff --git a/src/main/resources/build.properties b/src/main/resources/build.properties new file mode 100644 index 0000000..a9842bc --- /dev/null +++ b/src/main/resources/build.properties @@ -0,0 +1,7 @@ +# Build Information +build.version=${project.version} +build.timestamp=${org.imixs.build.timestamp} +build.office.version=${org.imixs.office.version} +build.marty.version=${org.imixs.marty.version} +build.workflow.version=${org.imixs.workflow.version} +build.name=${imixs-office.applicationname} \ No newline at end of file diff --git a/office-alexander-logistics-app/src/main/resources/bundle/custom_de.properties b/src/main/resources/bundle/custom_de.properties similarity index 100% rename from office-alexander-logistics-app/src/main/resources/bundle/custom_de.properties rename to src/main/resources/bundle/custom_de.properties diff --git a/office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties b/src/main/resources/bundle/custom_en.properties similarity index 100% rename from office-alexander-logistics-app/src/main/resources/bundle/custom_en.properties rename to src/main/resources/bundle/custom_en.properties diff --git a/office-alexander-logistics-app/src/main/resources/customform.expressions b/src/main/resources/customform.expressions similarity index 100% rename from office-alexander-logistics-app/src/main/resources/customform.expressions rename to src/main/resources/customform.expressions diff --git a/office-alexander-logistics-app/src/main/resources/imixs.properties b/src/main/resources/imixs.properties similarity index 100% rename from office-alexander-logistics-app/src/main/resources/imixs.properties rename to src/main/resources/imixs.properties diff --git a/office-alexander-logistics-app/src/main/resources/system-de-1.1.0.bpmn b/src/main/resources/system-de-1.1.0.bpmn similarity index 100% rename from office-alexander-logistics-app/src/main/resources/system-de-1.1.0.bpmn rename to src/main/resources/system-de-1.1.0.bpmn diff --git a/office-alexander-logistics-app/src/main/resources/system-en-1.0.0.bpmn b/src/main/resources/system-en-1.0.0.bpmn similarity index 100% rename from office-alexander-logistics-app/src/main/resources/system-en-1.0.0.bpmn rename to src/main/resources/system-en-1.0.0.bpmn diff --git a/office-alexander-logistics-app/src/main/webapp/WEB-INF/beans.xml b/src/main/webapp/WEB-INF/beans.xml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/WEB-INF/beans.xml rename to src/main/webapp/WEB-INF/beans.xml diff --git a/office-alexander-logistics-app/src/main/webapp/WEB-INF/faces-config-custom.xml b/src/main/webapp/WEB-INF/faces-config-custom.xml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/WEB-INF/faces-config-custom.xml rename to src/main/webapp/WEB-INF/faces-config-custom.xml diff --git a/office-alexander-logistics-app/src/main/webapp/js/chartjs-plugin-trendline.min.js b/src/main/webapp/js/chartjs-plugin-trendline.min.js similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/js/chartjs-plugin-trendline.min.js rename to src/main/webapp/js/chartjs-plugin-trendline.min.js diff --git a/office-alexander-logistics-app/src/main/webapp/js/imixs-office.workitem.custom.js b/src/main/webapp/js/imixs-office.workitem.custom.js similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/js/imixs-office.workitem.custom.js rename to src/main/webapp/js/imixs-office.workitem.custom.js diff --git a/office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml b/src/main/webapp/layout/commandbox_admin_custom.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/layout/commandbox_admin_custom.xhtml rename to src/main/webapp/layout/commandbox_admin_custom.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/layout/css/custom.css b/src/main/webapp/layout/css/custom.css similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/layout/css/custom.css rename to src/main/webapp/layout/css/custom.css diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/agl_params.xhtml b/src/main/webapp/pages/admin/agl_params.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/agl_params.xhtml rename to src/main/webapp/pages/admin/agl_params.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_invoicing.xhtml b/src/main/webapp/pages/admin/analyse_invoicing.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_invoicing.xhtml rename to src/main/webapp/pages/admin/analyse_invoicing.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/cargosoft_export.xhtml b/src/main/webapp/pages/admin/cargosoft_export.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/cargosoft_export.xhtml rename to src/main/webapp/pages/admin/cargosoft_export.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/dataViewDefinition.xhtml b/src/main/webapp/pages/admin/dataViewDefinition.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/dataViewDefinition.xhtml rename to src/main/webapp/pages/admin/dataViewDefinition.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/datev_log.xhtml b/src/main/webapp/pages/admin/datev_log.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/datev_log.xhtml rename to src/main/webapp/pages/admin/datev_log.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml b/src/main/webapp/pages/admin/document_import.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml rename to src/main/webapp/pages/admin/document_import.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml b/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml rename to src/main/webapp/pages/admin/excel_export_rechnungsausgang.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/kreditor.xhtml b/src/main/webapp/pages/admin/kreditor.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/kreditor.xhtml rename to src/main/webapp/pages/admin/kreditor.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/oplist_export.xhtml b/src/main/webapp/pages/admin/oplist_export.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/oplist_export.xhtml rename to src/main/webapp/pages/admin/oplist_export.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/sepa_config.xhtml b/src/main/webapp/pages/admin/sepa_config.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/sepa_config.xhtml rename to src/main/webapp/pages/admin/sepa_config.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/sepa_log.xhtml b/src/main/webapp/pages/admin/sepa_log.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/sepa_log.xhtml rename to src/main/webapp/pages/admin/sepa_log.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/sub_scheduler_control.xhtml b/src/main/webapp/pages/admin/sub_scheduler_control.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/sub_scheduler_control.xhtml rename to src/main/webapp/pages/admin/sub_scheduler_control.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/sub_space_custom.xhtml b/src/main/webapp/pages/admin/sub_space_custom.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/sub_space_custom.xhtml rename to src/main/webapp/pages/admin/sub_space_custom.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/xxxdataViewDefinition.xhtml b/src/main/webapp/pages/admin/xxxdataViewDefinition.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/xxxdataViewDefinition.xhtml rename to src/main/webapp/pages/admin/xxxdataViewDefinition.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/xxxdataViewDefinitions.xhtml b/src/main/webapp/pages/admin/xxxdataViewDefinitions.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/xxxdataViewDefinitions.xhtml rename to src/main/webapp/pages/admin/xxxdataViewDefinitions.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/zoho.xhtml b/src/main/webapp/pages/admin/zoho.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/admin/zoho.xhtml rename to src/main/webapp/pages/admin/zoho.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/dbtr-stats.xhtml b/src/main/webapp/pages/dbtr-stats.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/dbtr-stats.xhtml rename to src/main/webapp/pages/dbtr-stats.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/portlet_startprocess.xhtml b/src/main/webapp/pages/portlet_startprocess.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/portlet_startprocess.xhtml rename to src/main/webapp/pages/portlet_startprocess.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/agl_archive.xhtml b/src/main/webapp/pages/workitems/agl_archive.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/agl_archive.xhtml rename to src/main/webapp/pages/workitems/agl_archive.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/agl_archive_filter.xhtml b/src/main/webapp/pages/workitems/agl_archive_filter.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/agl_archive_filter.xhtml rename to src/main/webapp/pages/workitems/agl_archive_filter.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml b/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic_read.xhtml b/src/main/webapp/pages/workitems/forms/alexander/form_basic_read.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic_read.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/form_basic_read.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_default.xhtml b/src/main/webapp/pages/workitems/forms/alexander/form_default.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_default.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/form_default.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate_read.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate_read.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate_read.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_exchange_rate_read.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_payment_type.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type_read.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type_read.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_payment_type_read.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_payment_type_read.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_process.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_process.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_process.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_process.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_responsible.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_responsible.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_responsible.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_responsible.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_responsible_delegation.xhtml b/src/main/webapp/pages/workitems/forms/alexander/sub_responsible_delegation.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_responsible_delegation.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/sub_responsible_delegation.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/xxxxsection_opliste_readonly.xhtml b/src/main/webapp/pages/workitems/forms/alexander/xxxxsection_opliste_readonly.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/xxxxsection_opliste_readonly.xhtml rename to src/main/webapp/pages/workitems/forms/alexander/xxxxsection_opliste_readonly.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/datagroup.xhtml b/src/main/webapp/pages/workitems/forms/datagroup.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/datagroup.xhtml rename to src/main/webapp/pages/workitems/forms/datagroup.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/dataview.xhtml b/src/main/webapp/pages/workitems/forms/dataview.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/dataview.xhtml rename to src/main/webapp/pages/workitems/forms/dataview.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/dataview_old.xhtml b/src/main/webapp/pages/workitems/forms/dataview_old.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/dataview_old.xhtml rename to src/main/webapp/pages/workitems/forms/dataview_old.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/import_log.xhtml b/src/main/webapp/pages/workitems/forms/import_log.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/import_log.xhtml rename to src/main/webapp/pages/workitems/forms/import_log.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/inkasso.xhtml b/src/main/webapp/pages/workitems/forms/inkasso.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/inkasso.xhtml rename to src/main/webapp/pages/workitems/forms/inkasso.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/sepa_export.xhtml b/src/main/webapp/pages/workitems/forms/sepa_export.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/sepa_export.xhtml rename to src/main/webapp/pages/workitems/forms/sepa_export.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/sepa_export_manual.xhtml b/src/main/webapp/pages/workitems/forms/sepa_export_manual.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/sepa_export_manual.xhtml rename to src/main/webapp/pages/workitems/forms/sepa_export_manual.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/zahlungsavis.xhtml b/src/main/webapp/pages/workitems/forms/zahlungsavis.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/zahlungsavis.xhtml rename to src/main/webapp/pages/workitems/forms/zahlungsavis.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml b/src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml similarity index 90% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml rename to src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml index c0857b6..a751b87 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml +++ b/src/main/webapp/pages/workitems/parts/alexander/analyze_chart.xhtml @@ -27,6 +27,7 @@ width: 100%; } +

@@ -40,7 +41,7 @@ diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_currency.xhtml b/src/main/webapp/pages/workitems/parts/alexander/analyze_currency.xhtml similarity index 100% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_currency.xhtml rename to src/main/webapp/pages/workitems/parts/alexander/analyze_currency.xhtml diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml b/src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml similarity index 77% rename from office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml rename to src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml index 7b100f9..31b93cd 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml +++ b/src/main/webapp/pages/workitems/parts/alexander/analyze_plain.xhtml @@ -41,23 +41,24 @@ margin-left: 20px; } +
- +
- +