Compare commits
128 commits
office-ale
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 97a6e86a11 | |||
| f2bd7210e6 | |||
| 3c5e5b0546 | |||
| f06adc290c | |||
| 6721c2de9b | |||
| 2d3f98c15c | |||
| cfe1edb294 | |||
| f96d1af5e7 | |||
| 8309be5b39 | |||
| e85840695c | |||
| b6782448f9 | |||
| f942231066 | |||
| 99e138e685 | |||
| 44df91da9d | |||
| 8afb45271f | |||
| 7bca17dcca | |||
| fe4ca105df | |||
| 202fe2f3a0 | |||
| 3d322152e5 | |||
| 01e0e89e14 | |||
| e14af8449f | |||
| b8d0660526 | |||
| aeba05cc19 | |||
| 020498eee7 | |||
| 6a66fd1852 | |||
| 0a459e4b48 | |||
| 49c8ea0db9 | |||
| bd0500beef | |||
| b6e56958ec | |||
| 3f15b3a11b | |||
| f758c4a6ac | |||
| 0d9c9d8615 | |||
| 2b997da394 | |||
| 092aa40ceb | |||
| 8d9de4a16a | |||
| 1086466822 | |||
| a3df1a0a77 | |||
| 68acd25778 | |||
| 4e24e6e7b4 | |||
| 53703cdf9b | |||
| 394297b31c | |||
| 6a22dc29af | |||
| 38b60d7621 | |||
| 944d72b2cf | |||
| f6fb26dcf0 | |||
| 4203572a8f | |||
| 049bf8fea9 | |||
| 69456a28a0 | |||
| 111527b407 | |||
| ba40d05c9d | |||
| 190aa023c0 | |||
| 907455fe9b | |||
| 99dd910520 | |||
| be2f8c08ac | |||
| 26114ae35c | |||
| 97935680bf | |||
| 5491c04da4 | |||
| a272c8bdb4 | |||
| f72ef5cce6 | |||
| 5b4401bb82 | |||
| 6afd6856c2 | |||
| c15efc106c | |||
| a65ae59950 | |||
| 1d91e7f809 | |||
| 0e86783324 | |||
| 7d426a0dab | |||
| 6f76b367e7 | |||
| edacbbdd6d | |||
| 04acdb4ff3 | |||
| f8c13c5b2b | |||
| 47fc7e151e | |||
| ae11393c8c | |||
| 9884a3cd00 | |||
| d11099e8a3 | |||
| 6bee49b917 | |||
| 3ebd619df4 | |||
| d7619a7c21 | |||
| 4894d11f83 | |||
| 9a3e6146ea | |||
| 28b17e957f | |||
| 2bfa7cd7e1 | |||
| d7c9682bfd | |||
| 676310ae38 | |||
| 1d7fb83710 | |||
| 1a614564a8 | |||
| fc69af8bd5 | |||
| 38b755d5c1 | |||
| d59f9f3718 | |||
| dd96aa84d0 | |||
| e2c1d9a47e | |||
| cdf6d36f8b | |||
| f90afb959a | |||
| 851519dbbd | |||
| 5f4de3e432 | |||
| 82b3771fc8 | |||
| 5b445adee0 | |||
| b3c935132b | |||
| 600f6980bd | |||
| 15b8a54360 | |||
| 5f20bc458b | |||
| e09e25766a | |||
| 78739d3517 | |||
| fecb9e8813 | |||
| 96477feb74 | |||
| a1621420e2 | |||
| e4347046b4 | |||
| 3e1e7ccef0 | |||
| 459f7808cf | |||
| 9024ee2e38 | |||
| 082f0f609d | |||
| 1ee7c82805 | |||
| 909c3f195d | |||
| dd70091057 | |||
| 6b6957e1ab | |||
| 6e65ed4468 | |||
| cca28e9414 | |||
| 616765aa0a | |||
| 53b5f69329 | |||
| c232841ed3 | |||
| f61c7feca5 | |||
| fb3f086192 | |||
| b986f8615a | |||
| 7b421e0a37 | |||
| 1897377eb3 | |||
| 1f2d3b4cd5 | |||
| 6c4e72fe82 | |||
| 1bce7db64e | |||
| cfd974ecd2 |
577 changed files with 260153 additions and 406249 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -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*
|
||||
|
|
|
|||
12
Dockerfile
12
Dockerfile
|
|
@ -1,11 +1,7 @@
|
|||
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
|
||||
#FROM imixs/imixs-office-workflow:5.1.0
|
||||
|
||||
# Setup debug configuration
|
||||
# COPY ./docker/configuration/standalone-debug.xml /opt/jboss/wildfly/standalone/configuration/
|
||||
|
||||
COPY ./docker/lucene-core-7.7.3.jar /opt/jboss/
|
||||
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
|
||||
|
||||
# Deploy artefact
|
||||
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
||||
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||
# Deploy artefact
|
||||
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
|
||||
#FROM imixs/imixs-office-workflow:5.1.0
|
||||
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
|
||||
|
||||
# Deploy artefact
|
||||
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
|
||||
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
|
||||
|
||||
# Run in Debug Mode
|
||||
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,48 @@
|
|||
# Versionen
|
||||
|
||||
## 1.3.4 (Development)
|
||||
## 1.4.0 (Development)
|
||||
|
||||
- neuer AGLAIInvoiceAdapter
|
||||
der Adapter `com.alexanderlogistics.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.**
|
||||
|
||||
Neues ksef.xml als Template einspielen
|
||||
Neue version deployen.
|
||||
|
||||
**KSeF Produktiname I.**
|
||||
|
||||
Wir bekommen von Majcie einen neuen Prod - Token für KSeF. Dieser muss in das Kubernetes Deployment file eintegragen werden. Auch der Enpunkt muss geändert werden!
|
||||
|
||||
- name: KSEF_API_NIP
|
||||
value: "9552521552"
|
||||
- name: KSEF_API_TOKEN
|
||||
value: "2025??????????????????2|nip-9552521552|f?????????????????????????????????????????"
|
||||
- name: KSEF_API_ENDPOINT
|
||||
value: "https://api.ksef.mf.gov.pl/v2"
|
||||
|
||||
Im Worklfow Modell 'rechnungsausgang' muss das das Partner Mail im Schritt 4200.10 aktiviert werden.
|
||||
jhendzel@alexander-logistics.com in CC
|
||||
ralph.soika@imixs.com in BCC
|
||||
Derzeit fehlen meistens die Mailadressen so dass vermutlich häufig keine Mails rausgehen.
|
||||
Im Dokument Import 'CARGOSOFT_INVOCIE_XML' muss die Task ID von 5001 auf 4000 geändert werden!!
|
||||
|
||||
## 1.3.5
|
||||
|
||||
- Verbesserter Cargosoft Export (Eingangsrechnungen)
|
||||
- Polen KSeF Schnittstelle
|
||||
- E-Rechnungs Adapter
|
||||
|
||||
## 1.3.4
|
||||
|
||||
- Finalisierung Business Partner Interface
|
||||
|- Neue Plugin Logik (Aktualisierung der BP Nummer und Aktivierung von BP Objekten falls diese archiviert waren)
|
||||
|
|
@ -16,7 +58,6 @@
|
|||
#### Daten Synchronisation BUsiness Parnter
|
||||
|
||||
- Erstmal nach Dubletten suchen:
|
||||
|
||||
- https://alexander-logistics-xxx.office-workflow.de/api/cargosoft/remove-dubletten?maxcount=5000
|
||||
ACHTUNG kann sehr lange laufen (1 Stunde)
|
||||
|
||||
|
|
@ -81,7 +122,6 @@ set ARCHIVE_SNAPSHOT_COMPACTOR= enabled
|
|||
|
||||
1. Parameter Pflegen
|
||||
a) Währungen pflegen
|
||||
|
||||
- DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
- PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
- DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
|
|
@ -100,7 +140,6 @@ set ARCHIVE_SNAPSHOT_COMPACTOR= enabled
|
|||
|
||||
1. Paramter Pflegen
|
||||
a) Währungen pflegen
|
||||
|
||||
- DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
- PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
- DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
|
||||
|
|
|
|||
204
backup/README.md
Normal file
204
backup/README.md
Normal file
|
|
@ -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://<ihre-instanz>.office-workflow.de/api/"
|
||||
WORKFLOW_SERVICE_USER: "<ihr-backup-nutzer>"
|
||||
WORKFLOW_SERVICE_PASSWORD: "<ihr-passwort>"
|
||||
WORKFLOW_SERVICE_AUTHMETHOD: "form"
|
||||
BACKUP_FTP_HOST: "<ihr-storage-host>"
|
||||
BACKUP_FTP_PATH: "<ihr-zielverzeichnis>"
|
||||
BACKUP_FTP_PORT: "21"
|
||||
BACKUP_FTP_USER: "<ihr-ftp-nutzer>"
|
||||
BACKUP_FTP_PASSWORD: "<ihr-ftp-passwort>"
|
||||
BACKUP_MIRROR_ID: "<ihre-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.
|
||||
22
backup/docker-compose.yaml
Normal file
22
backup/docker-compose.yaml
Normal file
|
|
@ -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"
|
||||
Binary file not shown.
4
devi
4
devi
|
|
@ -53,15 +53,13 @@ fi
|
|||
|
||||
if [[ "$(strip_dash $1)" == "hot" ]]; then
|
||||
echo "* Hotdeploy..."
|
||||
cd *-app
|
||||
mvn manik-hotdeploy:hotdeploy
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [[ "$(strip_dash $1)" == "deploy" ]]; then
|
||||
echo " Deploy to Imixs-Cloud..."
|
||||
|
||||
mvn clean install -Pkubernetes -DskipTests
|
||||
mvn clean install -Pimixs-cloud -DskipTests
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
|||
96
doc/FTP.md
96
doc/FTP.md
|
|
@ -1,96 +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
|
||||
|
||||
## 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
|
||||
|
||||
# Dubai
|
||||
|
||||
**ACHTUNG** Wird nicht merh genutzt - jetzt Zoho
|
||||
|
||||
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.
|
||||
|
|
@ -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
|
||||
BIN
doc/KSeF/Feld-Mapping Cargo Soft zu KSeF (DE).pdf
Normal file
BIN
doc/KSeF/Feld-Mapping Cargo Soft zu KSeF (DE).pdf
Normal file
Binary file not shown.
|
|
@ -1,76 +0,0 @@
|
|||
# ksef-client
|
||||
|
||||
Um die ksef-client Library nutzen zu können muss man eine relativ komplexe prozedur durchlaufen um Zugrifff darauf zu erhalen:
|
||||
|
||||
## 1. Personal Access Token (PAT) erstellen
|
||||
|
||||
Du brauchst einen GitHub-Token, damit dein Projekt das Paket aus GitHub Packages herunterladen darf.
|
||||
|
||||
So machst du das:
|
||||
|
||||
1. Klicke oben rechts auf GitHub auf dein Profil.
|
||||
2. Gehe zu Settings.
|
||||
3. Links unten: Developer settings.
|
||||
4. Dann: Personal access tokens.
|
||||
5. Dann: Tokens (classic).
|
||||
6. Klicke: Generate new token (classic).
|
||||
|
||||
**Beim Erstellen:**
|
||||
|
||||
- Vergib irgendeinen Namen (z. B. „ksef-client access“).
|
||||
- Wähle nur ein einziges Häkchen:
|
||||
|
||||
👉 read:packages
|
||||
|
||||
- Token generieren → Token kopieren! Du siehst ihn nur einmal.
|
||||
|
||||
## 2. Maven für GitHub Packages konfigurieren
|
||||
|
||||
Damit Maven die Pakete laden kann, musst du GitHub Packages in der Datei `~/.m2/settings.xml` eintragen.
|
||||
|
||||
👉 Inhalt, den du einfügen musst:
|
||||
|
||||
```xml
|
||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
||||
https://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||
<servers>
|
||||
<server>
|
||||
<id>github-cirfmf</id>
|
||||
<username>rsoika</username>
|
||||
<password>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</password>
|
||||
</server>
|
||||
|
||||
</servers>
|
||||
</settings>
|
||||
|
||||
```
|
||||
|
||||
## 3. Repository in deiner pom.xml eintragen
|
||||
|
||||
Füge das in deine pom.xml ein:
|
||||
|
||||
```
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>github-cirfmf</id>
|
||||
<url>https://maven.pkg.github.com/CIRFMF/ksef-client-java</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
```
|
||||
|
||||
## 4. Abhängigkeit hinzufügen
|
||||
|
||||
Auch in die pom.xml:
|
||||
|
||||
```xml
|
||||
..
|
||||
<dependency>
|
||||
<groupId>pl.akmf.ksef-sdk</groupId>
|
||||
<artifactId>ksef-client</artifactId>
|
||||
<version>3.0.4</version>
|
||||
</dependency>
|
||||
...
|
||||
```
|
||||
|
|
@ -6,6 +6,29 @@ Java integration for the Polish **Krajowy System e-Faktur (KSeF)** - the nationa
|
|||
|
||||
This integration provides secure communication with the KSeF API to upload electronic invoices. It handles the complex multi-step authentication flow and encryption requirements mandated by the Polish tax authorities.
|
||||
|
||||
- [Environment Endpoints](https://github.com/CIRFMF/ksef-docs/blob/main/srodowiska.md)
|
||||
- [KSeF Official Documentation](https://www.gov.pl/web/kas/ksef)
|
||||
- [KSeF API Specification](https://api-test.ksef.mf.gov.pl/docs/v2/index.html)
|
||||
- [Upload Invoice](https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Wysylka-interaktywna/paths/~1api~1v2~1sessions~1online~1%7BreferenceNumber%7D~1invoices/post)
|
||||
- [Facture Details](https://github.com/CIRFMF/ksef-docs/blob/main/sesja-interaktywna.md#2-wys%C5%82anie-faktury)
|
||||
- [XML Invoice Example](https://github.com/CIRFMF/ksef-docs/blob/main/faktury/weryfikacja-faktury.md)
|
||||
- [QR Code](https://github.com/CIRFMF/ksef-docs/blob/main/kody-qr.md)
|
||||
|
||||
- [Github Discussions](https://github.com/CIRFMF/ksef-docs/issues/351#issuecomment-3538013805)
|
||||
- [Github Discussions](https://github.com/CIRFMF/ksef-docs/issues/399)
|
||||
|
||||
Test environment endpoint:
|
||||
|
||||
```
|
||||
https://api-test.ksef.mf.gov.pl/api/v2
|
||||
```
|
||||
|
||||
Production endpoint:
|
||||
|
||||
```
|
||||
https://api.ksef.mf.gov.pl/api/v2
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
### 1. KSeFAuthManager
|
||||
|
|
@ -165,10 +188,127 @@ The implementation uses `PluginException` for error handling with two error type
|
|||
- Java 11+ (HttpClient, Crypto APIs)
|
||||
- Imixs Workflow (for document management)
|
||||
|
||||
## References
|
||||
# Validate XML
|
||||
|
||||
- [KSeF Official Documentation](https://www.gov.pl/web/kas/ksef)
|
||||
- [KSeF API Specification](https://ksef-test.mf.gov.pl/docs/v2/index.html)
|
||||
- [Upload Invoice](https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Wysylka-interaktywna/paths/~1api~1v2~1sessions~1online~1%7BreferenceNumber%7D~1invoices/post)
|
||||
- [Facture Details](https://github.com/CIRFMF/ksef-docs/blob/main/sesja-interaktywna.md#2-wys%C5%82anie-faktury)
|
||||
- [XML Invoice Example](https://github.com/CIRFMF/ksef-docs/blob/main/faktury/weryfikacja-faktury.md)
|
||||
To validate XML results use xmllint. To install run:
|
||||
|
||||
```bash
|
||||
$ sudo apt install libxml2-utils
|
||||
```
|
||||
|
||||
With the bash script `src/test/resources/ksef/validate_xml.sh` you can test a xml file:
|
||||
|
||||
```bash
|
||||
$ ./validate_xml.sh example-invoice-01.xml
|
||||
```
|
||||
|
||||
or to manual test a xml run:
|
||||
|
||||
```bash
|
||||
$ xmllint --noout --schema 'schemat-FA(3)-v1-0E.xsd' example-invoice-01.xml
|
||||
example-invoice-01.xml validates
|
||||
```
|
||||
|
||||
# KSeF FA(3) Invoice Types: VAT vs. KOR
|
||||
|
||||
This section explains the key differences between regular invoices (VAT) and correction invoices (KOR) in the Polish KSeF system using FA(3) structure.
|
||||
|
||||
## Invoice Types
|
||||
|
||||
### VAT - Regular Invoice
|
||||
|
||||
Standard invoice documenting a sale or service delivery.
|
||||
|
||||
### KOR - Correction Invoice
|
||||
|
||||
Invoice that corrects a previously issued invoice (VAT, ZAL, or ROZ).
|
||||
|
||||
---
|
||||
|
||||
## Key Differences
|
||||
|
||||
| Element | VAT Invoice | KOR Invoice |
|
||||
| ------------------------- | -------------------------- | --------------------------------------------- |
|
||||
| **RodzajFaktury** | `VAT` | `KOR` |
|
||||
| **P_2 (Invoice Number)** | `216525` | `216525-KOR` (with suffix) |
|
||||
| **P_1 (Invoice Date)** | Original date (2024-04-03) | Correction date (2024-04-15) |
|
||||
| **Amount Fields** | Absolute values | **Difference values** (negative or positive) |
|
||||
| **DaneFaKorygowanej** | ❌ Not present | ✅ **Required** - references original invoice |
|
||||
| **FaWiersz (Line Items)** | Original values | **New/corrected values** |
|
||||
|
||||
---
|
||||
|
||||
## Critical: Amount Fields in KOR
|
||||
|
||||
**KOR invoices show DIFFERENCES, not absolute amounts!**
|
||||
|
||||
### Example: Correction from 4128.00 → 3500.00 EUR
|
||||
|
||||
```xml
|
||||
<!-- VAT Invoice -->
|
||||
<P_13_1>4128.00</P_13_1> <!-- Total Net -->
|
||||
<P_14_1>0.00</P_14_1> <!-- Total VAT -->
|
||||
<P_15>4128.00</P_15> <!-- Total Gross -->
|
||||
```
|
||||
|
||||
```xml
|
||||
<!-- KOR Invoice -->
|
||||
<P_13_6_1>-628.00</P_13_6_1> <!-- Difference: 3500 - 4128 = -628 -->
|
||||
<P_15>-628.00</P_15> <!-- Difference in Total -->
|
||||
```
|
||||
|
||||
## DaneFaKorygowanej Element
|
||||
|
||||
**Required in KOR invoices** - Must appear AFTER `<RodzajFaktury>KOR</RodzajFaktury>`
|
||||
|
||||
```xml
|
||||
<DaneFaKorygowanej>
|
||||
<DataWystFaKorygowanej>2024-04-03</DataWystFaKorygowanej>
|
||||
<NrFaKorygowanej>216525</NrFaKorygowanej>
|
||||
<NrKSeF>1</NrKSeF>
|
||||
<NrKSeFFaKorygowanej>9552521552-20240403-ABCDEF-123456-AB</NrKSeFFaKorygowanej>
|
||||
</DaneFaKorygowanej>
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
| ----------------------- | --------------------------------------------------------- |
|
||||
| `DataWystFaKorygowanej` | Date of **original** invoice |
|
||||
| `NrFaKorygowanej` | Number of **original** invoice |
|
||||
| `NrKSeF` | Flag: `1` = original was in KSeF |
|
||||
| `NrKSeFFaKorygowanej` | KSeF number of original invoice (mandatory if `NrKSeF=1`) |
|
||||
|
||||
⚠️ **Critical:** The KSeF number must be saved when uploading the original VAT invoice!
|
||||
|
||||
---
|
||||
|
||||
## FaWiersz in KOR
|
||||
|
||||
**Line items show the NEW/CORRECTED values**, not differences:
|
||||
|
||||
```xml
|
||||
<!-- VAT Invoice -->
|
||||
<FaWiersz>
|
||||
<P_9A>4128.00</P_9A> <!-- Unit price -->
|
||||
<P_11>4128.00</P_11> <!-- Net value -->
|
||||
</FaWiersz>
|
||||
```
|
||||
|
||||
```xml
|
||||
<!-- KOR Invoice -->
|
||||
<FaWiersz>
|
||||
<P_9A>3500.00</P_9A> <!-- NEW unit price -->
|
||||
<P_11>3500.00</P_11> <!-- NEW net value -->
|
||||
<P_12>0 KR</P_12> <!-- Tax rate (0% for exempted) -->
|
||||
</FaWiersz>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Testdaten
|
||||
|
||||
Um Testdaten in die lokale Dev Umgebung zu importieren:
|
||||
|
||||
1. aus dem Produktiv Archiv System das XML eines Rechnungs-Snapshots unter /docker/transfer speichern
|
||||
2. per api Call importieren:
|
||||
|
||||
http://localhost:8080/api/cargosoft/import?file=/opt/jboss/wildfly/transfer/f28bf914-04de-4843-9809-54c724bdc9bf-1764111735524.xml
|
||||
|
|
|
|||
26
doc/KSeF/TEST.md
Normal file
26
doc/KSeF/TEST.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Test Cases
|
||||
|
||||
Invoice
|
||||
|
||||
| No | currency | Tax % | Netto | Brutto | Imixs | TAXMAN |
|
||||
| ---- | -------- | ----- | ---------- | ---------- | --------- | ------ |
|
||||
| 6562 | EUR | 0 | 964,16 | 964,16 | OK |
|
||||
| 6555 | PLN | 23 | 31820,10 | 40894,7 | OK |
|
||||
| 6586 | PLN | 23 | 110.146,50 | 141.820,90 | OK |
|
||||
| 6467 | USD | 0 | 1540,00 | 1540,00 | OK |
|
||||
| 6567 | EUR | 0 | 9940,96 | 9940,96 | NIP Fehlt |
|
||||
|
||||
# Neuer Testlauf
|
||||
|
||||
6602 – correction invoice where just description was changed, without changing of amounts (price, VAT..)
|
||||
6816 - correction invoice where amounts where changed (before correction 180 USD, after correction 0 USD)
|
||||
6811 – invoice with more positions, incl. positions with different VAT rate
|
||||
|
||||
| No | currency | Tax % | Netto | Brutto | Imixs | TAXMAN |
|
||||
| ---- | -------- | ----- | ----- | ------ | ----- | ------ |
|
||||
| 6602 | | 0 | | | | OK |
|
||||
| 6816 | | 0 | | | | OK |
|
||||
| 6811 | | 0 | | | | OK |
|
||||
| | | 0 | | | | |
|
||||
| | | 0 | | | | |
|
||||
| | | 0 | | | | |
|
||||
BIN
doc/KSeF/information-sheet-on-the-fa-3-logical-structure.pdf
Normal file
BIN
doc/KSeF/information-sheet-on-the-fa-3-logical-structure.pdf
Normal file
Binary file not shown.
11183
doc/KSeF/openapi.json
Normal file
11183
doc/KSeF/openapi.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/" xmlns:tns="http://crd.gov.pl/wzor/2023/06/29/12648/" targetNamespace="http://crd.gov.pl/wzor/2023/06/29/12648/" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="pl">
|
||||
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/" xmlns:tns="http://crd.gov.pl/wzor/2025/06/25/13775/" targetNamespace="http://crd.gov.pl/wzor/2025/06/25/13775/" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="pl">
|
||||
<xsd:import namespace="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/" schemaLocation="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/StrukturyDanych_v10-0E.xsd"/>
|
||||
<xsd:simpleType name="TKodyKrajowUE">
|
||||
<xsd:annotation>
|
||||
|
|
@ -997,6 +997,11 @@
|
|||
<xsd:documentation>DOLAR WSCHODNIOKARAIBSKI</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="XCG">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>GULDEN KARAIBSKI</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="XDR">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>SDR MIĘDZYNARODOWY FUNDUSZ WALUTOWY</xsd:documentation>
|
||||
|
|
@ -1076,7 +1081,7 @@
|
|||
<xsd:complexType>
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="tns:TKodFormularza">
|
||||
<xsd:attribute name="kodSystemowy" type="xsd:string" use="required" fixed="FA (2)"/>
|
||||
<xsd:attribute name="kodSystemowy" type="xsd:string" use="required" fixed="FA (3)"/>
|
||||
<xsd:attribute name="wersjaSchemy" type="xsd:string" use="required" fixed="1-0E"/>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
|
|
@ -1085,7 +1090,7 @@
|
|||
<xsd:element name="WariantFormularza">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:byte">
|
||||
<xsd:enumeration value="2"/>
|
||||
<xsd:enumeration value="3"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
|
|
@ -1095,7 +1100,7 @@
|
|||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="etd:TDataCzas">
|
||||
<xsd:minInclusive value="2022-01-01T00:00:00Z"/>
|
||||
<xsd:minInclusive value="2025-09-01T00:00:00Z"/>
|
||||
<xsd:maxInclusive value="2050-01-01T23:59:59Z"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
|
|
@ -1171,6 +1176,15 @@
|
|||
<xsd:maxLength value="256"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="TZnakowy2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Typ znakowy ograniczony do 256 znaków</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:restriction base="xsd:token">
|
||||
<xsd:minLength value="0"/>
|
||||
<xsd:maxLength value="256"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="TZnakowy20">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Typ znakowy ograniczony do 20 znaków</xsd:documentation>
|
||||
|
|
@ -1256,6 +1270,15 @@
|
|||
<xsd:maxInclusive value="2050-01-01"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="TDataU">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Data zdarzenia w okresie od 1990-01-01 do 2050-01-01</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:restriction base="etd:TData">
|
||||
<xsd:minInclusive value="1990-01-01"/>
|
||||
<xsd:maxInclusive value="2050-01-01"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="TDataCzas">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Data i czas zdarzenia w okresie od 01.10.2021T00:00:00Z do 01.01.2050T23:59:59Z</xsd:documentation>
|
||||
|
|
@ -1286,7 +1309,8 @@
|
|||
<xsd:documentation>Numer rachunku</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:pattern value="[0-9A-Z]{10,32}"/>
|
||||
<xsd:minLength value="10"/>
|
||||
<xsd:maxLength value="34"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="SWIFT_Type">
|
||||
|
|
@ -1470,7 +1494,7 @@
|
|||
</xsd:enumeration>
|
||||
<xsd:enumeration value="2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Rachunek banku lub rachunek spółdzielczej kasy oszczędnościowo-kredytowej wykorzystywany przez ten bank lub tę kasę do pobrania należności od nabywcy towarów lub usługobiorcy za dostawę towarów lub świadczenie usług, potwierdzone fakturą, i przekazania jej w całości albo części dostawcy towarów lub usługodawcy</xsd:documentation>
|
||||
<xsd:documentation>Rachunek banku lub rachunek spółdzielczej kasy oszczędnościowo-kredytowej wykorzystywany przez ten bank lub tę kasę do pobrania należności od nabywcy towarów lub usług za dostawę towarów lub świadczenie usług, potwierdzone fakturą, i przekazania jej w całości albo części dostawcy towarów lub usługodawcy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="3">
|
||||
|
|
@ -1538,7 +1562,7 @@
|
|||
<xsd:sequence>
|
||||
<xsd:choice>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Numer, za pomocą którego nabywca towarów lub usług jest identyfikowany dla podatku lub podatku od wartości dodanej, pod którym otrzymał on towary lub usługi, z zastrzeżeniem art. 106e ust. 1 pkt 24 lit. b ustawy. Pole opcjonalne dla przypadku określonego w art. 106e ust. 5 pkt 2 ustawy. W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2 ustawy, numer, o którym mowa w art. 136 ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Numer, za pomocą którego nabywca towarów lub usług jest zidentyfikowany na potrzeby podatku lub podatku od wartości dodanej, pod którym otrzymał on towary lub usługi, z zastrzeżeniem art. 106e ust. 1 pkt 24 lit. b ustawy. Pole opcjonalne dla przypadku określonego w art. 106e ust. 5 pkt 2 ustawy. W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2 ustawy - numer, o którym mowa w art. 136 ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:element name="NIP" type="etd:TNrNIP">
|
||||
<xsd:annotation>
|
||||
|
|
@ -1568,9 +1592,7 @@
|
|||
<xsd:documentation>Identyfikator podatkowy inny</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej">
|
||||
<xsd:pattern value="[a-zA-Z0-9]{1,50}"/>
|
||||
</xsd:restriction>
|
||||
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej"/>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -1599,7 +1621,7 @@
|
|||
<xsd:sequence>
|
||||
<xsd:choice>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Numer, za pomocą którego nabywca towarów lub usług jest identyfikowany dla podatku lub podatku od wartości dodanej, pod którym otrzymał on towary lub usługi, z zastrzeżeniem art. 106e ust. 1 pkt 24 lit. b ustawy. Pole opcjonalne dla przypadku określonego w art. 106e ust. 5 pkt 2 ustawy. W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2 ustawy, numer, o którym mowa w art. 136 ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Numer, za pomocą którego nabywca towarów lub usług jest zidentyfikowany na potrzeby podatku lub podatku od wartości dodanej, pod którym otrzymał on towary lub usługi, z zastrzeżeniem art. 106e ust. 1 pkt 24 lit. b ustawy. Pole opcjonalne dla przypadku określonego w art. 106e ust. 5 pkt 2 ustawy. W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2 ustawy - numer, o którym mowa w art. 136 ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:element name="NIP" type="etd:TNrNIP">
|
||||
<xsd:annotation>
|
||||
|
|
@ -1634,9 +1656,7 @@
|
|||
<xsd:documentation>Identyfikator podatkowy inny</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej">
|
||||
<xsd:pattern value="[a-zA-Z0-9]{1,50}"/>
|
||||
</xsd:restriction>
|
||||
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej"/>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -1702,7 +1722,7 @@
|
|||
</xsd:enumeration>
|
||||
<xsd:enumeration value="3">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Przedstawiciel podatkowy - w przypadku, gdy na fakturze występują dane przedstawiciela podatkowego, o którym mowa w przepisach art. 18a - 18d ustawy</xsd:documentation>
|
||||
<xsd:documentation>Przedstawiciel podatkowy - w przypadku gdy na fakturze występują dane przedstawiciela podatkowego, o którym mowa w art. 18a - 18d ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
|
|
@ -1714,32 +1734,32 @@
|
|||
<xsd:restriction base="xsd:integer">
|
||||
<xsd:enumeration value="1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Faktor - w przypadku, gdy na fakturze występują dane faktora</xsd:documentation>
|
||||
<xsd:documentation>Faktor - w przypadku gdy na fakturze występują dane faktora</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Odbiorca - w przypadku, gdy na fakturze występują dane jednostek wewnętrznych, oddziałów, wyodrębnionych w ramach nabywcy, które same nie stanowią nabywcy w rozumieniu ustawy</xsd:documentation>
|
||||
<xsd:documentation>Odbiorca - w przypadku gdy na fakturze występują dane jednostek wewnętrznych, oddziałów, wyodrębnionych w ramach nabywcy, które same nie stanowią nabywcy w rozumieniu ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="3">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Podmiot pierwotny - w przypadku, gdy na fakturze występują dane podmiotu będącego w stosunku do podatnika podmiotem przejętym lub przekształconym, który świadczył usługę lub dokonywał dostawy. Z wyłączeniem przypadków, o których mowa w art. 106j ust.2 pkt 3 ustawy, gdy dane te wykazywane są w części Podmiot1K</xsd:documentation>
|
||||
<xsd:documentation>Podmiot pierwotny - w przypadku gdy na fakturze występują dane podmiotu będącego w stosunku do podatnika podmiotem przejętym lub przekształconym, który dokonywał dostawy lub świadczył usługę. Z wyłączeniem przypadków, o których mowa w art. 106j ust.2 pkt 3 ustawy, gdy dane te wykazywane są w części Podmiot1K</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="4">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Dodatkowy nabywca - w przypadku, gdy na fakturze występują dane kolejnych (innych niż wymieniony w części Podmiot2) nabywców</xsd:documentation>
|
||||
<xsd:documentation>Dodatkowy nabywca - w przypadku gdy na fakturze występują dane kolejnych (innych niż wymieniony w części Podmiot2) nabywców</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="5">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Wystawca faktury - w przypadku, gdy na fakturze występują dane podmiotu wystawiającego fakturę w imieniu podatnika. Nie dotyczy przypadku, gdy wystawcą faktury jest nabywca</xsd:documentation>
|
||||
<xsd:documentation>Wystawca faktury - w przypadku gdy na fakturze występują dane podmiotu wystawiającego fakturę w imieniu podatnika. Nie dotyczy przypadku, gdy wystawcą faktury jest nabywca</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="6">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Dokonujący płatności - w przypadku, gdy na fakturze występują dane podmiotu regulującego zobowiązanie w miejsce nabywcy</xsd:documentation>
|
||||
<xsd:documentation>Dokonujący płatności - w przypadku gdy na fakturze występują dane podmiotu regulującego zobowiązanie w miejsce nabywcy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="7">
|
||||
|
|
@ -1762,6 +1782,11 @@
|
|||
<xsd:documentation>Członek grupy VAT - odbiorca</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="11">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Pracownik</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
<xsd:simpleType name="TNumerTelefonu">
|
||||
|
|
@ -1789,7 +1814,7 @@
|
|||
</xsd:enumeration>
|
||||
<xsd:enumeration value="ZAL">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Faktura dokumentująca otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz faktura wystawiona w związku z art. 106f ust. 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Faktura dokumentująca otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz faktura wystawiona w związku z art. 106f ust. 4 ustawy (faktura zaliczkowa)</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="ROZ">
|
||||
|
|
@ -1804,7 +1829,7 @@
|
|||
</xsd:enumeration>
|
||||
<xsd:enumeration value="KOR_ZAL">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Faktura korygująca fakturę dokumentującą otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz fakturę wystawioną w związku z art. 106f ust. 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Faktura korygująca fakturę dokumentującą otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz fakturę wystawioną w związku z art. 106f ust. 4 ustawy (faktura korygująca fakturę zaliczkową)</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="KOR_ROZ">
|
||||
|
|
@ -1848,7 +1873,21 @@
|
|||
<xsd:enumeration value="5"/>
|
||||
<xsd:enumeration value="4"/>
|
||||
<xsd:enumeration value="3"/>
|
||||
<xsd:enumeration value="0"/>
|
||||
<xsd:enumeration value="0 KR">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Stawka 0% w przypadku sprzedaży towarów i świadczenia usług na terytorium kraju (z wyłączeniem WDT i eksportu)</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="0 WDT">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Stawka 0% w przypadku wewnątrzwspólnotowej dostawy towarów (WDT) </xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="0 EX">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Stawka 0% w przypadku eksportu towarów </xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="zw">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>zwolnione od podatku</xsd:documentation>
|
||||
|
|
@ -1859,9 +1898,14 @@
|
|||
<xsd:documentation>odwrotne obciążenie</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="np">
|
||||
<xsd:enumeration value="np I">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>niepodlegające opodatkowaniu- dostawy towarów oraz świadczenia usług poza terytorium kraju</xsd:documentation>
|
||||
<xsd:documentation>niepodlegające opodatkowaniu- dostawy towarów oraz świadczenia usług poza terytorium kraju, z wyłączeniem transakcji, o których mowa w art. 100 ust. 1 pkt 4 ustawy oraz OSS</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="np II">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>niepodlegajace opodatkowaniu na terytorium kraju, świadczenie usług o których mowa w art. 100 ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
|
|
@ -2207,6 +2251,48 @@
|
|||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="JST">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik jednostki podrzędnej JST.
|
||||
|
||||
Wartość "1" oznacza, że faktura dotyczy jednostki podrzędnej JST. W takim przypadku, aby udostępnić fakturę jednostce podrzędnej JST, należy wypełnić sekcję Podmiot3, w szczególności podać NIP lub ID-Wew i określić rolę jako 8.
|
||||
Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:integer">
|
||||
<xsd:enumeration value="1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Tak</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nie</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="GV">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik członka grupy VAT. Wartość "1" oznacza, że faktura dotyczy członka grupy VAT. W takim przypadku, aby udostępnić fakturę członkowi grupy VAT, należy wypełnić sekcję Podmiot3, w szczególności podać NIP lub ID-Wew i określić rolę jako 10.
|
||||
Wartość "2" oznacza, że faktura nie dotyczy członka grupy VAT</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:integer">
|
||||
<xsd:enumeration value="1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Tak</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nie</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
|
@ -2236,7 +2322,7 @@
|
|||
<xsd:documentation>Dane identyfikujące podmiot trzeci</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="Adres" type="tns:TAdres">
|
||||
<xsd:element name="Adres" type="tns:TAdres" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Adres podmiotu trzeciego</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -2352,13 +2438,13 @@
|
|||
</xsd:element>
|
||||
<xsd:element name="Fa">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Na podstawie art. 106a - 106q ustawy. Pola dotyczące wartości sprzedaży i podatku wypełnia się w walucie, w której wystawiono fakturę, z wyjątkiem pól dotyczących podatku przeliczonego zgodnie z przepisami Działu VI w związku z art. 106e ust. 11 ustawy. W przypadku wystawienia faktury korygującej, wypełnia się wszystkie pola wg stanu po korekcie, a pola dotyczące podstaw opodatkowania, podatku oraz należności ogółem wypełnia się poprzez różnicę</xsd:documentation>
|
||||
<xsd:documentation>Na podstawie art. 106a - 106q ustawy. Pola dotyczące wartości sprzedaży i podatku wypełnia się w walucie, w której wystawiono fakturę, z wyjątkiem pól dotyczących podatku przeliczonego zgodnie z przepisami działu VI w związku z art. 106e ust. 11 ustawy. W przypadku wystawienia faktury korygującej wypełnia się wszystkie pola wg stanu po korekcie, a pola dotyczące podstaw opodatkowania, podatku oraz należności ogółem wypełnia się poprzez różnicę</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="KodWaluty" type="tns:TKodWaluty">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Trzyliterowy kod waluty (ISO 4217)</xsd:documentation>
|
||||
<xsd:documentation>Kod waluty (ISO 4217)</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_1" type="tns:TDataT">
|
||||
|
|
@ -2389,7 +2475,7 @@
|
|||
</xsd:element>
|
||||
<xsd:element name="OkresFa">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Okres, którego dotyczy faktura w przypadkach, o których mowa w art. 19a ust. 3 zdanie pierwsze i ust. 4 oraz ust. 5 pkt 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Okres, którego dotyczy faktura - w przypadkach, o których mowa w art. 19a ust. 3 zdanie pierwsze i ust. 4 oraz ust. 5 pkt 4 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
|
|
@ -2413,17 +2499,17 @@
|
|||
</xsd:annotation>
|
||||
<xsd:element name="P_13_1" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto ze stawką podstawową - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych, kwota zaliczki netto. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej stawką podstawową - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych - wartość zaliczki netto. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_1" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką podstawową - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką podstawową - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_1W" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej, kwota podatku od sumy wartości sprzedaży netto objętej stawką podstawową, przeliczona zgodnie z przepisami Działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej - kwota podatku od sumy wartości sprzedaży netto objętej stawką podstawową, przeliczona zgodnie z przepisami działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 23% albo 22%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2433,17 +2519,17 @@
|
|||
</xsd:annotation>
|
||||
<xsd:element name="P_13_2" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej stawką obniżoną pierwszą - aktualnie 8 % albo 7%. W przypadku faktur zaliczkowych, kwota zaliczki netto. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej stawką obniżoną pierwszą - aktualnie 8 % albo 7%. W przypadku faktur zaliczkowych - wartość zaliczki netto. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_2" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną pierwszą - aktualnie 8% albo 7%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną pierwszą - aktualnie 8% albo 7%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_2W" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej, kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną, przeliczona zgodnie z przepisami Działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 8% albo 7%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej - kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną pierwszą, przeliczona zgodnie z przepisami działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 8% albo 7%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2453,17 +2539,17 @@
|
|||
</xsd:annotation>
|
||||
<xsd:element name="P_13_3" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej stawką obniżoną drugą - aktualnie 5%. W przypadku faktur zaliczkowych, kwota zaliczki netto. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej stawką obniżoną drugą - aktualnie 5%. W przypadku faktur zaliczkowych - wartość zaliczki netto. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_3" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną drugą - aktualnie 5%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną drugą - aktualnie 5%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_3W" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej, kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną drugą, przeliczona zgodnie z przepisami Działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 5%. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej - kwota podatku od sumy wartości sprzedaży netto objętej stawką obniżoną drugą, przeliczona zgodnie z przepisami działu VI w związku z art. 106e ust. 11 ustawy - aktualnie 5%. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2473,17 +2559,17 @@
|
|||
</xsd:annotation>
|
||||
<xsd:element name="P_13_4" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej ryczałtem dla taksówek osobowych. W przypadku faktur zaliczkowych, kwota zaliczki netto. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto objętej ryczałtem dla taksówek osobowych. W przypadku faktur zaliczkowych - wartość zaliczki netto. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_4" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto w przypadku ryczałtu dla taksówek osobowych. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kwota podatku od sumy wartości sprzedaży netto w przypadku ryczałtu dla taksówek osobowych. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_4W" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej, kwota podatku ryczałtu dla taksówek osobowych, przeliczona zgodnie z przepisami Działu VI w związku z art. 106e ust. 11 ustawy. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>W przypadku gdy faktura jest wystawiona w walucie obcej - wysokość ryczałtu dla taksówek osobowych, przeliczona zgodnie z przepisami działu VI w związku z art. 106e ust. 11 ustawy. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2493,63 +2579,63 @@
|
|||
</xsd:annotation>
|
||||
<xsd:element name="P_13_5" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto w przypadku procedury szczególnej, o której mowa w dziale XII w rozdziale 6a ustawy. W przypadku faktur zaliczkowych, kwota zaliczki netto. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży netto w przypadku procedury szczególnej, o której mowa w dziale XII w rozdziale 6a ustawy. W przypadku faktur zaliczkowych - wartość zaliczki netto. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_14_5" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota podatku od wartości dodanej w przypadku procedury szczególnej, o której mowa w dziale XII w rozdziale 6a ustawy. W przypadku faktur zaliczkowych, kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kwota podatku od wartości dodanej w przypadku procedury szczególnej, o której mowa w dziale XII w rozdziale 6a ustawy. W przypadku faktur zaliczkowych - kwota podatku wyliczona według wzoru, o którym mowa w art. 106f ust. 1 pkt 3 ustawy. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
<xsd:element name="P_13_6_1" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% z wyłączeniem wewnątrzwspólnotowej dostawy towarów i eksportu. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% z wyłączeniem wewnątrzwspólnotowej dostawy towarów i eksportu. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_6_2" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% w przypadku wewnątrzwspólnotowej dostawy towarów. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% w przypadku wewnątrzwspólnotowej dostawy towarów. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_6_3" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% w przypadku eksportu. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży objętej stawką 0% w przypadku eksportu. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_7" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży zwolnionej od podatku. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży zwolnionej od podatku. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_8" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w przypadku dostawy towarów oraz świadczenia usług poza terytorium kraju, z wyłączeniem kwot wykazanych w polach P_13_5 i P_13_9. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w przypadku dostawy towarów oraz świadczenia usług poza terytorium kraju, z wyłączeniem kwot wykazanych w polach P_13_5 i P_13_9. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_9" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości świadczenia usług, o których mowa w art. 100 ust. 1 pkt 4 ustawy. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości świadczenia usług, o których mowa w art. 100 ust. 1 pkt 4 ustawy. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_10" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w procedurze odwrotnego obciążenia, dla której podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 i 8 ustawy oraz innych przypadków odwrotnego obciążenia występujących w obrocie krajowym. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w procedurze odwrotnego obciążenia, dla której podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 i 8 ustawy oraz innych przypadków odwrotnego obciążenia występujących w obrocie krajowym. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy, o której mowa w art. 106j ust. 2 pkt 5 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_13_11" type="tns:TKwotowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w procedurze marży, o której mowa w art. 119 i art. 120 ustawy. W przypadku faktur zaliczkowych, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
<xsd:documentation>Suma wartości sprzedaży w procedurze marży, o której mowa w art. 119 i art. 120 ustawy. W przypadku faktur zaliczkowych - wartość zaliczki. W przypadku faktur korygujących - kwota różnicy wartości sprzedaży</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_15" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota należności ogółem. W przypadku faktur zaliczkowych kwota zapłaty dokumentowana fakturą. W przypadku faktur, o których mowa w art. 106f ust. 3 ustawy kwota pozostała do zapłaty. W przypadku faktur korygujących korekta kwoty wynikającej z faktury korygowanej. W przypadku, o którym mowa w art. 106j ust. 3 ustawy korekta kwot wynikających z faktur korygowanych</xsd:documentation>
|
||||
<xsd:documentation>Kwota należności ogółem. W przypadku faktur zaliczkowych - kwota zapłaty dokumentowana fakturą. W przypadku faktur, o których mowa w art. 106f ust. 3 ustawy - kwota pozostała do zapłaty. W przypadku faktur korygujących - korekta kwoty wynikającej z faktury korygowanej. W przypadku, o którym mowa w art. 106j ust. 3 ustawy - korekta kwot wynikających z faktur korygowanych</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="KursWalutyZ" type="tns:TIlosci" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w przepisach Działu VI ustawy na fakturach, o których mowa w art. 106b ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w dziale VI ustawy na fakturach, o których mowa w art. 106b ust. 1 pkt 4 ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="Adnotacje">
|
||||
|
|
@ -2560,17 +2646,17 @@
|
|||
<xsd:sequence>
|
||||
<xsd:element name="P_16" type="etd:TWybor1_2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku dostawy towarów lub świadczenia usług, w odniesieniu do których obowiązek podatkowy powstaje zgodnie z art. 19a ust. 5 pkt 1 lub art. 21 ust. 1 ustawy - wyrazy "metoda kasowa", należy podać wartość "1"; w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
<xsd:documentation>W przypadku dostawy towarów lub świadczenia usług, w odniesieniu do których obowiązek podatkowy powstaje zgodnie z art. 19a ust. 5 pkt 1 lub art. 21 ust. 1 ustawy - wyrazy "metoda kasowa"; należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_17" type="etd:TWybor1_2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku faktur, o których mowa w art. 106d ust. 1 ustawy - wyraz "samofakturowanie", należy podać wartość "1"; w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
<xsd:documentation>W przypadku faktur, o których mowa w art. 106d ust. 1 ustawy - wyraz "samofakturowanie"; należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_18" type="etd:TWybor1_2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku dostawy towarów lub wykonania usługi, dla których obowiązanym do rozliczenia podatku od wartości dodanej lub podatku o podobnym charakterze jest nabywca towaru lub usługi - wyrazy "odwrotne obciążenie", należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
<xsd:documentation>W przypadku dostawy towarów lub wykonania usługi, dla których obowiązanym do rozliczenia podatku od wartości dodanej lub podatku o podobnym charakterze jest nabywca towaru lub usługi - wyrazy "odwrotne obciążenie"; należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_18A" type="etd:TWybor1_2">
|
||||
|
|
@ -2585,7 +2671,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence>
|
||||
<xsd:element name="P_19" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1 i 9 albo przepisów wydanych na podstawie art. 82 ust. 3 ustawy lub na podstawie innych przepisów</xsd:documentation>
|
||||
<xsd:documentation>Znacznik dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1 ustawy, art. 113 ust. 1 i 9 ustawy albo przepisów wydanych na podstawie art. 82 ust. 3 ustawy lub na podstawie innych przepisów</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:choice>
|
||||
|
|
@ -2608,7 +2694,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:sequence>
|
||||
<xsd:element name="P_19N" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik braku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1 i 9 ustawy albo przepisów wydanych na podstawie art. 82 ust. 3 ustawy lub na podstawie innych przepisów</xsd:documentation>
|
||||
<xsd:documentation>Znacznik braku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1 ustawy, art. 113 ust. 1 i 9 ustawy albo przepisów wydanych na podstawie art. 82 ust. 3 ustawy lub na podstawie innych przepisów</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
|
|
@ -2670,34 +2756,34 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence>
|
||||
<xsd:element name="P_22B" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - należy podać przebieg pojazdu</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, należy podać przebieg pojazdu</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:choice minOccurs="0">
|
||||
<xsd:element name="P_22B1" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - można podać numer VIN</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, można podać numer VIN</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_22B2" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - można podać numer nadwozia</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, można podać numer nadwozia</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_22B3" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - można podać numer podwozia</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, można podać numer podwozia</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_22B4" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - można podać numer ramy</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, można podać numer ramy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
<xsd:element name="P_22BT" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy - można podać typ nowego środka transportu</xsd:documentation>
|
||||
<xsd:documentation>Jeśli dostawa dotyczy pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy, można podać typ nowego środka transportu</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2740,7 +2826,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="P_23" type="etd:TWybor1_2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2, zawierającej adnotację, o której mowa w art. 136 ust. 1 pkt 1 i stwierdzenie, o którym mowa w art. 136 ust. 1 pkt 2 ustawy, należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
<xsd:documentation>W przypadku faktur wystawianych w procedurze uproszczonej przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c oraz ust. 2 ustawy, zawierającej adnotację, o której mowa w art. 136 ust. 1 pkt 1 ustawy i stwierdzenie, o którym mowa w art. 136 ust. 1 pkt 2 ustawy, należy podać wartość "1", w przeciwnym przypadku - wartość "2"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="PMarzy">
|
||||
|
|
@ -2760,12 +2846,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="P_PMarzy_3_1" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik dostawy towarów używanych dla których podstawę opodatkowania stanowi marża, zgodnie z art. 120 ustawy, a faktura dokumentująca dostawę zawiera wyrazy "procedura marży - towary używane"</xsd:documentation>
|
||||
<xsd:documentation>Znacznik dostawy towarów używanych, dla których podstawę opodatkowania stanowi marża, zgodnie z art. 120 ustawy, a faktura dokumentująca dostawę zawiera wyrazy "procedura marży - towary używane"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_PMarzy_3_2" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik dostawy dzieł sztuki dla których podstawę opodatkowania stanowi marża, zgodnie z art. 120 ustawy, a faktura dokumentująca dostawę zawiera wyrazy "procedura marży - dzieła sztuki"</xsd:documentation>
|
||||
<xsd:documentation>Znacznik dostawy dzieł sztuki, dla których podstawę opodatkowania stanowi marża, zgodnie z art. 120 ustawy, a faktura dokumentująca dostawę zawiera wyrazy "procedura marży - dzieła sztuki"</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_PMarzy_3_3" type="etd:TWybor1">
|
||||
|
|
@ -2805,7 +2891,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:documentation>Typ skutku korekty w ewidencji dla podatku od towarów i usług</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="DaneFaKorygowanej" maxOccurs="unbounded">
|
||||
<xsd:element name="DaneFaKorygowanej" maxOccurs="50000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Dane faktury korygowanej</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -2879,7 +2965,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="Podmiot2K" minOccurs="0" maxOccurs="101">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku korekty danych nabywcy występującego jako Podmiot2 lub dodatkowego nabywcy występującego jako Podmiot3 należy podać pełne dane tego podmiotu występujące na fakturze korygowanej. Korekcie nie podlegają błędne numery identyfikujące nabywcę oraz dodatkowego nabywcę. W przypadku korygowania pozostałych danych nabywcy lub dodatkowego nabywcy wskazany numer identyfikacyjny ma być tożsamy z numerem w części Podmiot2 względnie Podmiot3 faktury korygującej</xsd:documentation>
|
||||
<xsd:documentation>W przypadku korekty danych nabywcy występującego jako Podmiot2 lub dodatkowego nabywcy występującego jako Podmiot3 należy podać pełne dane tego podmiotu występujące na fakturze korygowanej. Korekcie nie podlegają błędne numery NIP identyfikujące nabywcę oraz dodatkowego nabywcę - wówczas wymagana jest korekta faktury do wartości zerowych. W przypadku korygowania pozostałych danych nabywcy lub dodatkowego nabywcy wskazany numer identyfikacyjny ma być tożsamy z numerem w części Podmiot2 względnie Podmiot3 faktury korygującej</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
|
|
@ -2909,12 +2995,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="P_15ZK" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>W przypadku korekt faktur zaliczkowych, kwota zapłaty przed korektą. W przypadku korekt faktur, o których mowa w art. 106f ust. 3 ustawy, kwota pozostała do zapłaty przed korektą</xsd:documentation>
|
||||
<xsd:documentation>W przypadku korekt faktur zaliczkowych - kwota zapłaty przed korektą. W przypadku korekt faktur, o których mowa w art. 106f ust. 3 ustawy - kwota pozostała do zapłaty przed korektą</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="KursWalutyZK" type="tns:TIlosci" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w Dziale VI ustawy przed korektą</xsd:documentation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w dziale VI ustawy przed korektą</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2932,12 +3018,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="P_15Z" type="tns:TKwotowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kwota płatności, o której mowa w art. 106b ust. 1 pkt 4 ustawy, składająca się na kwotę w polu P_15. W przypadku faktur korygujących korekta kwoty wynikającej z faktury korygowanej</xsd:documentation>
|
||||
<xsd:documentation>Kwota płatności, o której mowa w art. 106b ust. 1 pkt 4 ustawy, składająca się na kwotę w polu P_15. W przypadku faktur korygujących - korekta kwoty wynikającej z faktury korygowanej</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="KursWalutyZW" type="tns:TIlosci" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w Dziale VI ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w dziale VI ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -2991,7 +3077,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="FaWiersz" minOccurs="0" maxOccurs="10000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Szczegółowe pozycje faktury w walucie, w której wystawiono fakturę - węzeł opcjonalny dla faktury zaliczkowej, faktury korygującej fakturę zaliczkową, oraz faktur korygujących dotyczących wszystkich dostaw towarów lub usług dokonanych lub świadczonych w danym okresie, o których mowa w art. 106j ust. 3 ustawy, dla których należy podać dane dotyczące opustu lub obniżki w podziale na stawki podatku i procedury w części Fa. W przypadku faktur korygujących, o których mowa w art. 106j ust. 3 ustawy, gdy opust lub obniżka ceny odnosi się do części dostaw towarów lub usług dokonanych lub świadczonych w danym okresie w części FaWiersz należy podać nazwy (rodzaje) towarów lub usług objętych korektą. W przypadku faktur, o których mowa w art. 106f ust. 3 ustawy, należy wykazać pełne wartości zamówienia lub umowy. W przypadku faktur korygujących pozycje faktury (w tym faktur korygujących faktury, o których mowa w art. 106f ust. 3 ustawy, jeśli korekta dotyczy wartości zamówienia), należy wykazać różnice wynikające z korekty poszczególnych pozycji lub dane pozycji korygowanych w stanie przed korektą i po korekcie jako osobne wiersze. W przypadku faktur korygujących faktury, o których mowa w art. 106f ust. 3 ustawy, jeśli korekta nie dotyczy wartości zamówienia i jednocześnie zmienia wysokość podstawy opodatkowania lub podatku, należy wprowadzić zapis wg stanu przed korektą i zapis w stanie po korekcie w celu potwierdzenia braku zmiany wartości danej pozycji faktury</xsd:documentation>
|
||||
<xsd:documentation>Szczegółowe pozycje faktury w walucie, w której wystawiono fakturę - węzeł opcjonalny dla faktury zaliczkowej, faktury korygującej fakturę zaliczkową oraz faktur korygujących dotyczących wszystkich dostaw towarów lub usług dokonanych lub świadczonych w danym okresie, o których mowa w art. 106j ust. 3 ustawy, dla których należy podać dane dotyczące opustu lub obniżki w podziale na stawki podatku i procedury w części Fa. W przypadku faktur korygujących, o których mowa w art. 106j ust. 3 ustawy, gdy opust lub obniżka ceny odnosi się do części dostaw towarów lub usług dokonanych lub świadczonych w danym okresie w części FaWiersz należy podać nazwy (rodzaje) towarów lub usług objętych korektą. W przypadku faktur, o których mowa w art. 106f ust. 3 ustawy, należy wykazać pełne wartości zamówienia lub umowy. W przypadku faktur korygujących pozycje faktury (w tym faktur korygujących faktury, o których mowa w art. 106f ust. 3 ustawy, jeśli korekta dotyczy wartości zamówienia) należy wykazać różnice wynikające z korekty poszczególnych pozycji lub dane pozycji korygowanych wg stanu przed korektą i po korekcie jako osobne wiersze. W przypadku faktur korygujących faktury, o których mowa w art. 106f ust. 3 ustawy, jeśli korekta nie dotyczy wartości zamówienia i jednocześnie zmienia wysokość podstawy opodatkowania lub podatku, należy wprowadzić zapis wg stanu przed korektą i zapis wg stanu po korekcie w celu potwierdzenia braku zmiany wartości danej pozycji faktury</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
|
|
@ -3007,10 +3093,10 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="P_6A" type="tns:TDataT" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Data dokonania lub zakończenia dostawy towarów lub wykonania usługi lub data otrzymania zapłaty, o której mowa w art. 106b ust. 1 pkt 4 ustawy, o ile taka data jest określona i różni się od daty wystawienia faktury. Pole wypełnia się dla przypadku, gdy dla poszczególnych pozycji faktury występują różne daty</xsd:documentation>
|
||||
<xsd:documentation>Data dokonania lub zakończenia dostawy towarów lub wykonania usługi lub data otrzymania zapłaty, o której mowa w art. 106b ust. 1 pkt 4 ustawy, o ile taka data jest określona i różni się od daty wystawienia faktury. Pole wypełnia się w przypadku gdy dla poszczególnych pozycji faktury występują różne daty</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_7" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:element name="P_7" type="tns:TZnakowy512" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nazwa (rodzaj) towaru lub usługi. Pole opcjonalne wyłącznie dla przypadku określonego w art 106j ust. 3 pkt 2 ustawy (faktura korygująca)</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -3112,7 +3198,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="KursWaluty" type="tns:TIlosci" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w Dziale VI ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kurs waluty stosowany do wyliczenia kwoty podatku w przypadkach, o których mowa w dziale VI ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="StanPrzed" type="etd:TWybor1" minOccurs="0">
|
||||
|
|
@ -3202,7 +3288,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence>
|
||||
<xsd:element name="Zaplacono" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik informujący, że kwota należności wynikająca z faktury została zapłacona: 1 - zapłacono</xsd:documentation>
|
||||
<xsd:documentation>Znacznik informujący, że należność wynikająca z faktury została zapłacona: 1 - zapłacono</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="DataZaplaty" type="tns:TData">
|
||||
|
|
@ -3212,9 +3298,9 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="ZnacznikZaplatyCzesciowej" type="etd:TWybor1">
|
||||
<xsd:element name="ZnacznikZaplatyCzesciowej" type="etd:TWybor1_2">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik informujący, że kwota należności wynikająca z faktury została zapłacona w części: 1 - zapłacono w części</xsd:documentation>
|
||||
<xsd:documentation>Znacznik informujący, że należność wynikająca z faktury została zapłacona w części lub w całości: 1 - zapłacono w części; 2 - zapłacono w całości, jeśli należność wynikająca z faktury została zapłacona w dwóch lub więcej częściach, a ostatnia płatność jest płatnością końcową</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="ZaplataCzesciowa" maxOccurs="100">
|
||||
|
|
@ -3233,6 +3319,25 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:documentation>Data zapłaty częściowej, jeśli do wystawienia faktury płatność częściowa została dokonana</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:choice minOccurs="0">
|
||||
<xsd:element name="FormaPlatnosci" type="tns:TFormaPlatnosci">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Forma płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="PlatnoscInna" type="etd:TWybor1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik innej formy płatności: 1 - inna forma płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="OpisPlatnosci" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Uszczegółowienie innej formy płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:choice>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
|
@ -3240,16 +3345,23 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:choice>
|
||||
<xsd:element name="TerminPlatnosci" minOccurs="0" maxOccurs="100">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="Termin" type="tns:TData">
|
||||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="Termin" type="tns:TData" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Termin płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="TerminOpis" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:element name="TerminOpis" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Opis terminu płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="Ilosc" type="xsd:integer"/>
|
||||
<xsd:element name="Jednostka" type="tns:TZnakowy50"/>
|
||||
<xsd:element name="ZdarzeniePoczatkowe" type="tns:TZnakowy"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
|
@ -3268,7 +3380,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="OpisPlatnosci" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Doprecyzowanie innej formy płatności</xsd:documentation>
|
||||
<xsd:documentation>Uszczegółowienie innej formy płatności</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -3291,7 +3403,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence>
|
||||
<xsd:element name="WarunkiSkonta" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Warunki, które nabywca powinien spełnić aby skorzystać ze skonta</xsd:documentation>
|
||||
<xsd:documentation>Warunki, które nabywca powinien spełnić, aby skorzystać ze skonta</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="WysokoscSkonta" type="tns:TZnakowy">
|
||||
|
|
@ -3302,6 +3414,27 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="LinkDoPlatnosci" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Link do płatności bezgotówkowej</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="tns:TZnakowy512">
|
||||
<xsd:pattern value="(https?)://([a-zA-Z0-9][a-zA-Z0-9-]*\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?(/[^\s?#]*)?\?([^#\s]*&)?IPKSeF=[0-9]{3}[a-zA-Z0-9]{10}(&[^#\s]*)?(#.*)?"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="IPKSeF" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Identyfikator płatności Krajowego Systemu e-Faktur</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="tns:TZnakowy20">
|
||||
<xsd:maxLength value="13"/>
|
||||
<xsd:pattern value="[0-9]{3}[a-zA-Z0-9]{10}"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
|
@ -3314,7 +3447,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:element name="Umowy" minOccurs="0" maxOccurs="100">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="DataUmowy" type="tns:TData" minOccurs="0">
|
||||
<xsd:element name="DataUmowy" type="tns:TDataU" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Data umowy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -3330,7 +3463,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:element name="Zamowienia" minOccurs="0" maxOccurs="100">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="DataZamowienia" type="tns:TData" minOccurs="0">
|
||||
<xsd:element name="DataZamowienia" type="tns:TDataU" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Data zamówienia</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -3356,12 +3489,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="KursUmowny" type="tns:TIlosci">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Kurs umowny - w przypadkach, gdy na fakturze znajduje się informacja o kursie, po którym zostały przeliczone kwoty wykazane na fakturze w złotych. Nie dotyczy przypadków, o których mowa w Dziale VI ustawy</xsd:documentation>
|
||||
<xsd:documentation>Kurs umowny - w przypadkach, gdy na fakturze znajduje się informacja o kursie, po którym zostały przeliczone kwoty wykazane na fakturze w złotych. Nie dotyczy przypadków, o których mowa w dziale VI ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="WalutaUmowna" type="tns:TKodWaluty">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Waluta umowna - trzyliterowy kod waluty (ISO-4217) w przypadkach, gdy na fakturze znajduje się informacja o kursie, po którym zostały przeliczone kwoty wykazane na fakturze w złotych. Nie dotyczy przypadków, o których mowa w Dziale VI ustawy</xsd:documentation>
|
||||
<xsd:documentation>Waluta umowna - kod waluty (ISO-4217) w przypadkach gdy na fakturze znajduje się informacja o kursie, po którym zostały przeliczone kwoty wykazane na fakturze w złotych. Nie dotyczy przypadków, o których mowa w dziale VI ustawy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -3474,7 +3607,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="Zamowienie" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Zamówienie lub umowa, o których mowa w art. 106f ust. 1 pkt 4 ustawy (dla faktur zaliczkowych) w walucie, w której wystawiono fakturę zaliczkową. W przypadku faktury korygującej fakturę zaliczkową należy wykazać różnice wynikające z korekty poszczególnych pozycji zamówienia lub umowy lub dane pozycji korygowanych w stanie przed korektą i po korekcie jako osobne wiersze, jeśli korekta dotyczy wartości zamówienia lub umowy. W przypadku faktur korygujących faktury zaliczkowe, jeśli korekta nie dotyczy wartości zamówienia lub umowy i jednocześnie zmienia wysokość podstawy opodatkowania lub podatku, należy wprowadzić zapis wg stanu przed korektą i zapis w stanie po korekcie w celu potwierdzenia braku zmiany wartości danej pozycji</xsd:documentation>
|
||||
<xsd:documentation>Zamówienie lub umowa, o których mowa w art. 106f ust. 1 pkt 4 ustawy (dla faktur zaliczkowych), w walucie, w której wystawiono fakturę zaliczkową. W przypadku faktury korygującej fakturę zaliczkową należy wykazać różnice wynikające z korekty poszczególnych pozycji zamówienia lub umowy lub dane pozycji korygowanych wg stanu przed korektą i po korekcie jako osobne wiersze, jeśli korekta dotyczy wartości zamówienia lub umowy. W przypadku faktur korygujących faktury zaliczkowe, jeśli korekta nie dotyczy wartości zamówienia lub umowy i jednocześnie zmienia wysokość podstawy opodatkowania lub podatku, należy wprowadzić zapis wg stanu przed korektą i zapis wg stanu po korekcie w celu potwierdzenia braku zmiany wartości danej pozycji</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
|
|
@ -3499,7 +3632,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
<xsd:documentation>Uniwersalny unikalny numer wiersza zamówienia lub umowy</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="P_7Z" type="tns:TZnakowy" minOccurs="0">
|
||||
<xsd:element name="P_7Z" type="tns:TZnakowy512" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nazwa (rodzaj) towaru lub usługi</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
|
@ -3586,7 +3719,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="StanPrzedZ" type="etd:TWybor1" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Znacznik stanu przed korektą w przypadku faktury korygującej fakturę dokumentującą otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz fakturę wystawioną w związku z art. 106f ust. 4 ustawy, w przypadku gdy korekta dotyczy danych wykazanych w pozycjach zamówienia i jest dokonywana w sposób polegający na wykazaniu danych przed korektą i po korekcie jako osobnych wierszy z odrębną numeracją oraz w przypadku potwierdzania braku zmiany wartości danej pozycji</xsd:documentation>
|
||||
<xsd:documentation>Znacznik stanu przed korektą w przypadku faktury korygującej fakturę dokumentującą otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz fakturę wystawioną w związku z art. 106f ust. 4 ustawy (faktura korygująca fakturę zaliczkową), w przypadku gdy korekta dotyczy danych wykazanych w pozycjach zamówienia i jest dokonywana w sposób polegający na wykazaniu danych przed korektą i po korekcie jako osobnych wierszy z odrębną numeracją oraz w przypadku potwierdzania braku zmiany wartości danej pozycji</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
|
|
@ -3631,7 +3764,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="KRS" type="etd:TNrKRS" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Numer Krajowego Rejestru Sądowego</xsd:documentation>
|
||||
<xsd:documentation>KRS</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="REGON" type="etd:TNrREGON" minOccurs="0">
|
||||
|
|
@ -3641,7 +3774,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:element>
|
||||
<xsd:element name="BDO" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Numer w Bazie Danych o Odpadach</xsd:documentation>
|
||||
<xsd:documentation>BDO</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="tns:TZnakowy">
|
||||
|
|
@ -3655,6 +3788,162 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
|
|||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="Zalacznik" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Załącznik do faktury VAT</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="BlokDanych" maxOccurs="1000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Szczegółowe dane załącznika</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="ZNaglowek" type="tns:TZnakowy512" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nagłówek bloku danych</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="MetaDane" maxOccurs="1000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Dane opisowe</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="ZKlucz" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Klucz</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="ZWartosc" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Wartość</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="Tekst" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Część tekstowa bloku danych</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="Akapit" type="tns:TZnakowy512" maxOccurs="10">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Opis</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:sequence minOccurs="0">
|
||||
<xsd:element name="Tabela" minOccurs="0" maxOccurs="1000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Tabele</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="TMetaDane" minOccurs="0" maxOccurs="1000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Dane opisowe dotyczące tabeli</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="TKlucz" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Klucz</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="TWartosc" type="tns:TZnakowy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Wartość</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="Opis" type="tns:TZnakowy512" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Opis</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="TNaglowek">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Nagłówek tabeli</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="Kol" maxOccurs="20">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="NKom">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Zawartość pola</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="tns:TZnakowy2"/>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="Typ" use="required">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="date"/>
|
||||
<xsd:enumeration value="datetime"/>
|
||||
<xsd:enumeration value="dec"/>
|
||||
<xsd:enumeration value="int"/>
|
||||
<xsd:enumeration value="time"/>
|
||||
<xsd:enumeration value="txt"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="Wiersz" maxOccurs="1000">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Wiersze tabeli</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="WKom" type="tns:TZnakowy2" maxOccurs="20">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Zawartość pola</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="Suma" minOccurs="0">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Podsumowania tabeli</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="SKom" type="tns:TZnakowy2" maxOccurs="20">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Zawartość pola</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
75
doc/KSeF/test.xml
Normal file
75
doc/KSeF/test.xml
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Potwierdzenie xmlns="http://upo.schematy.mf.gov.pl/KSeF/v4-2">
|
||||
<NazwaPodmiotuPrzyjmujacego>Ministerstwo Finansów</NazwaPodmiotuPrzyjmujacego>
|
||||
<NumerReferencyjnySesji>20251128-SO-1DA83DC000-9430B11465-93</NumerReferencyjnySesji>
|
||||
<Uwierzytelnienie>
|
||||
<IdKontekstu>
|
||||
<Nip>9552521552</Nip>
|
||||
</IdKontekstu>
|
||||
<NumerReferencyjnyTokenaKSeF>20251113-EC-2751AC3000-5C5466924B-62</NumerReferencyjnyTokenaKSeF>
|
||||
</Uwierzytelnienie>
|
||||
<NazwaStrukturyLogicznej>1-0E</NazwaStrukturyLogicznej>
|
||||
<KodFormularza>FA (3)</KodFormularza>
|
||||
<Dokument>
|
||||
<NipSprzedawcy>9552521552</NipSprzedawcy>
|
||||
<NumerKSeFDokumentu>9552521552-20251128-010000AA503B-FE</NumerKSeFDokumentu>
|
||||
<NumerFaktury>216577</NumerFaktury>
|
||||
<DataWystawieniaFaktury>2024-04-03</DataWystawieniaFaktury>
|
||||
<DataPrzeslaniaDokumentu>2025-11-28T09:38:18.096+01:00</DataPrzeslaniaDokumentu>
|
||||
<DataNadaniaNumeruKSeF>2025-11-28T09:38:18.192+01:00</DataNadaniaNumeruKSeF>
|
||||
<SkrotDokumentu>wk2TorojBbyNYtDODL1l/KCxQi/rlb3Yss/OEmf5HpE=</SkrotDokumentu>
|
||||
</Dokument>
|
||||
<Signature Id="Signature" xmlns="http://www.w3.org/2000/09/xmldsig#">
|
||||
<SignedInfo>
|
||||
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
|
||||
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
|
||||
<Reference URI="">
|
||||
<Transforms>
|
||||
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
|
||||
</Transforms>
|
||||
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
|
||||
<DigestValue>N/EazXugPjJtobeCSm/ShxeSafdffzHFeRo/BLsngR4=</DigestValue>
|
||||
</Reference>
|
||||
<Reference URI="#SignedProperties" Type="http://uri.etsi.org/01903#SignedProperties">
|
||||
<Transforms>
|
||||
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
|
||||
</Transforms>
|
||||
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
|
||||
<DigestValue>7OYxftjJC1QhSKcWd/oeu7jJaLiO1kFvDCLja8xmNqk=</DigestValue>
|
||||
</Reference>
|
||||
</SignedInfo>
|
||||
<SignatureValue>
|
||||
c87dKdbK3Wf2QpeKEEC0H2LMG92YBH95EbKL6wJTqozOzPq6wqj+06CIPX6bIEz8Szup9xWJlJHX+/xzO4NyMxeiXMQOCAiQ4ZnhPLG2EChopNZYGDbVgOMvfSQBSkHODobG8HH+q4fqueya0V+41CnCSzF8f68fcfVTrV8DfAuw3faKYVg4ddfkvFT+AkBCAZ/JPdYzVVN28np33bd1lHNFJ5wNSpILy9h0FF9iJIiB5RMyvJwxx0HlutrhIMUoId5vUW2XLJKAOLJSSntTJf2S4qjMJcgZr/ZVP9GSaBZPBX09nPWrXOfOwIOuakVfq9N2n+ONZ29ivHpZelMWlA==</SignatureValue>
|
||||
<KeyInfo>
|
||||
<X509Data>
|
||||
<X509Certificate>
|
||||
MIIGWDCCBECgAwIBAgIQY1FHALBG7qGuhTJ/Z7W+yjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJQTDEhMB8GA1UECgwYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMRwwGgYDVQQDDBNDZXJ0dW0gU01JTUUgUlNBIENBMB4XDTI1MDkyOTA2MTEzM1oXDTI3MDkyOTA2MTEzMlowgb4xGTAXBgNVBGETEFZBVFBMLTUyNjAyNTAyNzQxCzAJBgNVBAYTAlBMMRQwEgYDVQQIDAttYXpvd2llY2tpZTERMA8GA1UEBwwIV2Fyc3phd2ExHzAdBgNVBAoMFk1pbmlzdGVyc3R3byBGaW5hbnPDs3cxHzAdBgNVBAMMFk1pbmlzdGVyc3R3byBGaW5hbnPDs3cxKTAnBgkqhkiG9w0BCQEWGmtvbnN1bHRhY2plLmtzZWZAbWYuZ292LnBsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtL+kpQU8d16im5Z3wIEzo7GqfQF8zWEYZqN5JroiX2ePVACR3znmoo4zx0krVEyhtKKB2/oE3Ql2M5sxaRWC/hnBMLj8r7uAJ/v3lQqzGYAf0ImwRy1H+nF4OS0B1U0m7wD2dGXOSQdbPNVru8SZ9Nw6IcsuAsHezy8EagEIffl+zA/GWtAG6Mp8Bxj3K8LkUdZp70Faaeiv25kOuvT7vThePW+qNFhpdktYQT56lGOmWJqKsm0QtdMzAy1o7bfWeAFLfP7DU3Okk/oz9NqUJc8Swih2ligWN/+g/nwFxcEMrQ4GWE3FDQogNz6kySZ7OIqN//kY1SXXb1nQ1MVAXQIDAQABo4IBvzCCAbswDAYDVR0TAQH/BAIwADBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vY3NtaW1lcnNhY2EuY3JsLmNlcnR1bS5wbC9jc21pbWVyc2FjYS5jcmwwgYMGCCsGAQUFBwEBBHcwdTAuBggrBgEFBQcwAYYiaHR0cDovL2NzbWltZXJzYWNhLm9jc3AtY2VydHVtLmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NzbWltZXJzYWNhLnJlcG9zaXRvcnkuY2VydHVtLnBsL2NzbWltZXJzYWNhLmNlcjAfBgNVHSMEGDAWgBRm+8MPvvS/4JzJq03eRxm9wMqmaDAdBgNVHQ4EFgQUGwFEj1u0JETJoPhJu2cKjErLsUwwTAYDVR0gBEUwQzAJBgdngQwBBQICMDYGCyqEaAGG9ncCZAMBMCcwJQYIKwYBBQUHAgEWGWh0dHBzOi8vd3d3LmNlcnR1bS5wbC9DUFMwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMA4GA1UdDwEB/wQEAwIE8DAlBgNVHREEHjAcgRprb25zdWx0YWNqZS5rc2VmQG1mLmdvdi5wbDANBgkqhkiG9w0BAQsFAAOCAgEAOfiPMXAeftxKk6fMiRud/VZnQixhHqBakVx11ToO7m8qGW3gj2NJDkIoIWVuRIDpz6bg7vRoyPE0mSjYkjxXfb/gaAHVM1e9vGd5cN5esvJVc9wAbLY/e1ZAg7K8IHE+SQYjLsm0ykCQcnnamzEjSD6CArGUmvwJr33OnlNusVdSZ6ar+EexAEbwBUYL+8aeKYwXn+M928h4W831LxYoVv1WaNFfgUJHjFrIUNeSuXHLG0BslrJwJuy26UQaxiM0FSNJQyeSF5Xt3K+V7EuzX4jf3yfOcTwUrt/4Lq6AEH+konMj5OZurS75aA06NbR6L4hUWfdCFRIx561Y2sHeNlggONsvvQ//z0P9IVk65RqDz21DPt688SRJ5BL5wGo9CDn29+G8VEECPRuhe+UAoQOL/9iQ2mReybunuliarQCLGya/+Ig9QRZe9BWhlN7im1B+7kaMmTbGqzmUkiFoabH+hIqqh72o5B05H9U8R0o7PpI9oJZ95edst1y9fCXw5fbly5Y3N3lR78Ui3AkUf6NN6ZtsMixVHZS8qD/QTaXDX4ez8Kz1PkMGrPWYC0L64PZzyWGZmm3RNtvv/uqx4X/L0Kyu5Dp5+H5BJyQAGh+wHJ5TadGuzASThvuB+fXEhwO3Y+bS41G2czc1vf3s9DXSqMZykYVzRbPQ2XUWkzQ=</X509Certificate>
|
||||
</X509Data>
|
||||
</KeyInfo>
|
||||
<Object>
|
||||
<xades:QualifyingProperties Target="#Signature"
|
||||
xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
|
||||
xmlns="http://www.w3.org/2000/09/xmldsig#">
|
||||
<xades:SignedProperties Id="SignedProperties">
|
||||
<xades:SignedSignatureProperties>
|
||||
<xades:SigningTime>2025-11-28T08:38:18.2360956+00:00</xades:SigningTime>
|
||||
<xades:SigningCertificate>
|
||||
<xades:Cert>
|
||||
<xades:CertDigest>
|
||||
<DigestMethod
|
||||
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
|
||||
<DigestValue>IFnqTIVQHeVNK0sYY9kn/o3hT2FGIV6U7keiW0zj/Ig=</DigestValue>
|
||||
</xades:CertDigest>
|
||||
<xades:IssuerSerial>
|
||||
<X509IssuerName>CN=Certum SMIME RSA CA, O=Asseco Data Systems
|
||||
S.A., C=PL</X509IssuerName>
|
||||
<X509SerialNumber>132015587733884965165641957463135993546</X509SerialNumber>
|
||||
</xades:IssuerSerial>
|
||||
</xades:Cert>
|
||||
</xades:SigningCertificate>
|
||||
</xades:SignedSignatureProperties>
|
||||
</xades:SignedProperties>
|
||||
</xades:QualifyingProperties>
|
||||
</Object>
|
||||
</Signature>
|
||||
</Potwierdzenie>
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Mail
|
||||
|
||||
Testen von Mailing kann man über
|
||||
|
||||
https://www.mail-tester.com/
|
||||
|
|
@ -1 +0,0 @@
|
|||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnGiu0PUBl+G++vHrGP5wDRit4mXF4hXTyzUem3BPADaV0DUuYN1Fx5RpDl2F8mhnqDYcyCTBzLTJ+0jFqq1pzoJW5ZWZ+hSChabVCV4m8UkFkhbRmjxNkPx26ZMhfTD1mDqgCKQ+bbt1mi04UZppDKBr+9ZrMG3d0odHblEJHixtJ7Hqr9vvXXbvNv4E9B/9dlW57oyEUk/vKmwuLyGAsDjxjfB3W+Faab+gev8VDwJxdbD90HX0O2Az05wy9EC7M3pujcawsHdaFXgFFRRwlVuUkX3z9hp1Uekqg0N81hty7/i8GiZ9/m3Y6hIA5eRM4ZpDQFEF8SY9TLSzDehNoQ== seesped@cargodb
|
||||
|
|
@ -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
|
||||
|
|
@ -25,7 +25,7 @@ services:
|
|||
POSTGRES_CONNECTION: "jdbc:postgresql://db/office-alexander-logistics"
|
||||
TZ: "CET"
|
||||
LANG: "en_US.UTF-8"
|
||||
MAILGATEWAY: "mailgateway"
|
||||
MAILGATEWAY: "mailpit"
|
||||
|
||||
ASYNCEVENT_PROCESSOR_ENABLED: "true"
|
||||
ASYNCEVENT_PROCESSOR_INITIALDELAY: "10000"
|
||||
|
|
@ -41,8 +41,13 @@ 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"
|
||||
KSEF_API_TOKEN: "20251113-EC-2751AC3000-5C5466924B-62|nip-9552521552|fc0c95d020dc45d4af491fb0aa755f3f3f674b33ecbf4250a88ea6e36fa8340b"
|
||||
KSEF_API_ENDPOINT: "https://ksef-test.mf.gov.pl/api/v2"
|
||||
|
||||
METRICS_ENABLED: "false"
|
||||
|
||||
|
|
@ -52,6 +57,8 @@ 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/
|
||||
|
||||
###############################################
|
||||
# Tika OCR Service
|
||||
|
|
@ -96,12 +103,15 @@ services:
|
|||
###############################################
|
||||
# Mailgateway
|
||||
###############################################
|
||||
mailgateway:
|
||||
image: imixs/exim4
|
||||
mailpit:
|
||||
image: axllent/mailpit:latest
|
||||
container_name: mailpit
|
||||
environment:
|
||||
EXIM_SMARTHOST: "www149.your-server.de:25"
|
||||
EXIM_PASSWORD: "www149.your-server.de:webmaster@imixs.com:$MAILPASSWORD"
|
||||
EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.18.0.0/12:192.168.0.0/16"
|
||||
MP_SMTP_BIND_ADDR: "0.0.0.0:25"
|
||||
ports:
|
||||
- "1025:25" # Host:1025 -> Container:25 (SMTP)
|
||||
- "8025:8025" # Web UI
|
||||
restart: unless-stopped
|
||||
|
||||
# prometheus:
|
||||
# image: prom/prometheus:latest
|
||||
|
|
|
|||
4
docker/.env
Normal file
4
docker/.env
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# LLM Config
|
||||
|
||||
LLM_API_ENDPOINT=https://api.llama.cpp.imixs.com/
|
||||
LLM_API_KEY=7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321
|
||||
55
docker/keys/imixs-llm.xml
Normal file
55
docker/keys/imixs-llm.xml
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
imixs-llm.xml - LLM Model Registry
|
||||
======================================
|
||||
Place this file in your deployment so it is available on the classpath,
|
||||
e.g. in src/main/resources/ for a Maven project.
|
||||
|
||||
Each <model> element defines one logical LLM service endpoint.
|
||||
A model is either a completion model OR an embedding model - never both.
|
||||
The BPMN configuration references them separately by their id:
|
||||
|
||||
<imixs-ai name="CONDITION">
|
||||
<endpoint>my-llm</endpoint>
|
||||
...
|
||||
</imixs-ai>
|
||||
|
||||
<imixs-ai name="RAG_INDEX">
|
||||
<endpoint-completion>my-llm</endpoint-completion>
|
||||
<endpoint-embeddings>my-embeddings</endpoint-embeddings>
|
||||
...
|
||||
</imixs-ai>
|
||||
|
||||
Environment variable placeholders are supported via ${env.VAR_NAME}.
|
||||
-->
|
||||
<imixs-llm>
|
||||
|
||||
<!--
|
||||
Completion model – used for chat completions, conditions, analysis etc.
|
||||
This example connects to a local llama.cpp server.
|
||||
-->
|
||||
<endpoint id="api.llama.cpp.imixs.com">
|
||||
<url>https://api.llama.cpp.imixs.com/</url>
|
||||
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
|
||||
<options>{
|
||||
"temperature": 0.2,
|
||||
"max_tokens": 1024
|
||||
}
|
||||
</options>
|
||||
</endpoint>
|
||||
|
||||
<!--
|
||||
Embedding model – used for RAG indexing and retrieval.
|
||||
This example connects to a separate embedding server.
|
||||
No apikey needed for a locally hosted instance.
|
||||
-->
|
||||
<endpoint id="embeddings.llama.cpp.imixs.com">
|
||||
<url>https://embeddings.llama.cpp.imixs.com/</url>
|
||||
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
|
||||
<options>{
|
||||
"max_tokens": 512
|
||||
}
|
||||
</options>
|
||||
</endpoint>
|
||||
|
||||
</imixs-llm>
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
hotdeploy.sh
11
hotdeploy.sh
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
############################################################
|
||||
# Setup hotdeploy
|
||||
#
|
||||
############################################################
|
||||
|
||||
cd office-alexander-logistics-app
|
||||
mvn manik-hotdeploy:hotdeploy
|
||||
|
||||
cd ..
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
# ML Models
|
||||
|
||||
Wir verwenden bei Alexander-Global Logistics ein standard Invoice ML Modell. Dieses basiert im Grund auf unserem offizielen spacy modell 'invoice-de-0.1.0'.
|
||||
|
||||
|
||||
|
||||
## Modell Nachtrainieren
|
||||
|
||||
Das Modell bei Alexander Logistics läst sich in der Dev Umggebung bei Bedarf nachtrainieren. Dazu geht man wie folgt vor:
|
||||
|
||||
**1.)** Aktuelles Modell auf Tikal Cloud Server sichern:
|
||||
|
||||
$ ssh imixs@master-1.tikal.imixs.com
|
||||
$ cd tikal-cloud/
|
||||
$ ./apps/alexander-logistics.office-workflow.de/ml_model_backup.sh
|
||||
|
||||
# Falls es zu einem io/error kommt, muss der spacy ml pod neu gestartet werden!
|
||||
|
||||
|
||||
**2.)** Die Tikal-Cloud Pullen
|
||||
|
||||
**3.)** Um auf dem aktuellen Modell weiter zu trainierne, den Inhalt des invoice-de-0.1.0 Folders aus dem Backup directory in die lokale Dev Umgebung kopieren /
|
||||
um ein neues Modell zu genereiren einfach den localen ordner 'invoice-de-0.1.0' umbenennen oder leeren.
|
||||
|
||||
**4.)** Jetzt lokal den Trainingsserver aufrufen
|
||||
|
||||
http://localhost:8081/api/openapi-ui/index.html
|
||||
|
||||
und das training beginnen mit der datei 'training-config-prod.xml'. Man kann das training 3-4 mal durchführen.
|
||||
|
||||
|
||||
**5.)** Nun kann man die Inhalte des invoice-de-0.1.0 Folders zurück auf den Tikal in den modell folder /invoice-de-0.1.0 einspielen
|
||||
|
||||
**6.)** Nun die änderungen nach Git Puschen.
|
||||
|
||||
**7.)** auf dem Tikal Sever nun das aktuellisete Modell wieder einspielen
|
||||
|
||||
$ git pull
|
||||
$ ./apps/alexander-logistics.office-workflow.de/ml_model_deploy.sh invoice-de-0.1.0/
|
||||
|
||||
|
||||
|
||||
|
||||
## 22.05.2021 - invoice-de-0.1.0
|
||||
|
||||
NER=2.1948
|
||||
|
||||
|
||||
## 17.02.2020 - invoice-de-0.1.0
|
||||
|
||||
Modell trainiert anhand der alexander-logistics Produtiv daten
|
||||
|
||||
|
||||
|
|
@ -1,491 +0,0 @@
|
|||
# Test Protokoll Alexander Logistic invoice-de-0.1.0
|
||||
|
||||
|
||||
**Validierung**
|
||||
f4eaceda-f28a-4394-928e-1a05daaf2760
|
||||
a5d1e7fe-d74a-4fa2-9b06-3221865759fa
|
||||
c0290497-f613-4492-81b6-4ae1e1680029
|
||||
d8e3fce4-d11c-46a4-8ba0-369b4c6e902f
|
||||
8b766f35-828a-41f1-be04-00b4b62da4d0
|
||||
|
||||
|
||||
|
||||
**********************************************************************
|
||||
** invoice-de-0.1.0-falsemodell
|
||||
**12.10.2021 15:50** (sort order created)
|
||||
**********************************************************************
|
||||
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||
workflow.pagesize 500
|
||||
ml.training.filepattern .pdf
|
||||
ml.training.iterations 10
|
||||
ml.training.dropoutrate 0,25
|
||||
multiOccurrence false
|
||||
ml.training.quality LOW
|
||||
min_losses 0
|
||||
|
||||
RESULT
|
||||
-----------------------------------------------------------------------
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.33% (200)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 15.2% (57)
|
||||
imixs-ml-training_1 | ...... average NER = 17.195895012525614
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 51.73% (194)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.8% (123)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 15.47% (58)
|
||||
imixs-ml-training_1 | ...... average NER = 6.50170386961344
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 14.4% (54)
|
||||
imixs-ml-training_1 | ...... average NER = 4.8940276912225
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 52.8% (198)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32% (120)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 15.2% (57)
|
||||
imixs-ml-training_1 | ...... average NER = 3.9605563888416824
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 54.13% (203)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 29.6% (111)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 16.27% (61)
|
||||
imixs-ml-training_1 | ...... average NER = 3.744507591826106
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.07% (199)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 15.73% (59)
|
||||
imixs-ml-training_1 | ...... average NER = 2.8395576715820736
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32% (120)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 14.13% (53)
|
||||
imixs-ml-training_1 | ...... average NER = 2.6799682681142363
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.6% (201)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 14.93% (56)
|
||||
imixs-ml-training_1 | ...... average NER = 2.520244211218683
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 49.33% (185)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.93% (131)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 15.73% (59)
|
||||
imixs-ml-training_1 | ...... average NER = 2.1511980661715193
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 53.87% (202)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 14.93% (56)
|
||||
imixs-ml-training_1 | ...... average NER = 2.2739690429824475
|
||||
|
||||
|
||||
|
||||
**13.10.2021 12:00**
|
||||
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||
workflow.pagesize 500
|
||||
ml.training.filepattern .pdf|.PDF
|
||||
ml.training.iterations 10
|
||||
ml.training.dropoutrate 0,25
|
||||
multiOccurrence false
|
||||
ml.training.quality LOW
|
||||
min_losses 0
|
||||
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 61.33% (230)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 38.67% (145)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 3.790466332166552
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 61.07% (229)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 38.93% (146)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 3.160620521438082
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 58.13% (218)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 41.87% (157)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.636420357788331
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 58.13% (218)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 41.87% (157)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.506552163520219
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 58.93% (221)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 41.07% (154)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.3495061575286793
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 59.47% (223)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 40.53% (152)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.9351332692220107
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 61.33% (230)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 38.67% (145)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.8881396005118698
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 57.87% (217)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 42.13% (158)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.9754112840739593
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 59.73% (224)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 40.27% (151)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.7839739270522237
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 59.73% (224)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 40.27% (151)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.6024293913431429
|
||||
|
||||
|
||||
|
||||
|
||||
**********************************************************************
|
||||
** invoice-de-0.1.0
|
||||
**12.10.2021 15:50** (sort order created)
|
||||
**********************************************************************
|
||||
workflow.query ($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)
|
||||
workflow.pagesize 500
|
||||
ml.training.filepattern .pdf|.PDF
|
||||
ml.training.iterations 10
|
||||
ml.training.dropoutrate 0,25
|
||||
multiOccurrence true
|
||||
ml.training.quality LOW
|
||||
min_losses 0
|
||||
|
||||
|
||||
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 21.57255353509432
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.73% (254)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.27% (121)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 8.249835149395697
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 5.892598287488733
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 4.964129124089013
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.53% (257)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 3.5603186705177947
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.2% (252)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.53% (122)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 2.692053828307031
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68% (255)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 2.3509401762802873
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (247)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.13% (128)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.2695994889458104
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.47% (118)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.844410364015416
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 70.67% (265)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 29.07% (109)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.6153951610034658
|
||||
|
||||
|
||||
page=1 (count=500)
|
||||
--------------------------------
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 69.6% (261)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 30.4% (114)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 7.093659738880595
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 5.201780406598962
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.27% (256)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.73% (119)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 3.8116329003426204
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66.67% (250)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.33% (125)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 3.3164488404836154
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66.93% (251)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.07% (124)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.7822570929398576
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 69.07% (259)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 30.93% (116)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.31773083524846
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.8% (258)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.2% (117)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.165804551920185
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.9591955652007715
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66.4% (249)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.6% (126)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.5473874007025803
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 375
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (247)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.13% (128)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 1.705957084193204
|
||||
imixs-ml-training_1 | |#]
|
||||
imixs-ml-training_1 |
|
||||
|
||||
page=0 (count=1000)
|
||||
--------------------------------
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.47% (506)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.53% (244)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 3.2147245242951565
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 68.8% (516)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 31.07% (233)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 2.2084385109690565
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.73% (508)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0% (0)
|
||||
imixs-ml-training_1 | ...... average NER = 2.1797281610496464
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.2% (504)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.67% (245)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.8908819163368502
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 66% (495)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 33.87% (254)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.7774978150912477
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.6% (507)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.669098427922433
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.33% (505)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.53% (244)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.6048149396167861
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.6% (507)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32.27% (242)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.4026393956412981
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 67.87% (509)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 32% (240)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.1139796046407426
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 65.87% (494)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34% (255)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.2621875029460226
|
||||
|
||||
|
||||
|
||||
page=1 (count=1000)
|
||||
--------------------------------
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.47% (476)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.4% (273)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 3.7501272727903876
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64% (480)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 35.87% (269)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 2.7749715296165482
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 65.47% (491)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.27% (257)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 2.191986221088383
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.2% (474)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.53% (274)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.836000005105162
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64.8% (486)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.93% (262)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.629252182245437
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64.27% (482)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 35.47% (266)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.5023185259959349
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.6% (477)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.13% (271)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.1618358977500587
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64.93% (487)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.93% (262)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.1362052688492958
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64.4% (483)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 35.33% (265)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.0497074333838767
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 65.33% (490)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 34.4% (258)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 0.8865013575787167
|
||||
|
||||
page=1 (count=1000)
|
||||
--------------------------------
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.33% (475)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.4% (273)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.6325150460009787
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 61.73% (463)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 38% (285)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.5385085364524884
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.6% (477)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.13% (271)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.343965340697668
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64.13% (481)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 35.73% (268)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 1.1842750119930687
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.73% (478)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36% (270)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 1.112559219903824
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 62.8% (471)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.93% (277)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 0.9444137586901881
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 64% (480)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 35.73% (268)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 0.9175624525798468
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 63.47% (476)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 36.27% (272)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 0.8877949306723629
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 62.53% (469)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 37.2% (279)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.27% (2)
|
||||
imixs-ml-training_1 | ...... average NER = 0.7669201996298972
|
||||
imixs-ml-training_1 |
|
||||
imixs-ml-training_1 | ......documents trained in total = 750
|
||||
imixs-ml-training_1 | ...... quality level GOOD = 62.8% (471)
|
||||
imixs-ml-training_1 | ...... quality level LOW = 37.07% (278)
|
||||
imixs-ml-training_1 | ...... quality level BAD = 0.13% (1)
|
||||
imixs-ml-training_1 | ...... average NER = 0.7161310708827515
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
[paths]
|
||||
train = null
|
||||
dev = null
|
||||
vectors = null
|
||||
init_tok2vec = null
|
||||
|
||||
[system]
|
||||
seed = 0
|
||||
gpu_allocator = null
|
||||
|
||||
[nlp]
|
||||
lang = "de"
|
||||
pipeline = ["ner"]
|
||||
disabled = []
|
||||
before_creation = null
|
||||
after_creation = null
|
||||
after_pipeline_creation = null
|
||||
batch_size = 1000
|
||||
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||
|
||||
[components]
|
||||
|
||||
[components.ner]
|
||||
factory = "ner"
|
||||
incorrect_spans_key = null
|
||||
moves = null
|
||||
scorer = {"@scorers":"spacy.ner_scorer.v1"}
|
||||
update_with_oracle_cut_size = 100
|
||||
|
||||
[components.ner.model]
|
||||
@architectures = "spacy.TransitionBasedParser.v2"
|
||||
state_type = "ner"
|
||||
extra_state_tokens = false
|
||||
hidden_width = 64
|
||||
maxout_pieces = 2
|
||||
use_upper = true
|
||||
nO = null
|
||||
|
||||
[components.ner.model.tok2vec]
|
||||
@architectures = "spacy.HashEmbedCNN.v2"
|
||||
pretrained_vectors = null
|
||||
width = 96
|
||||
depth = 4
|
||||
embed_size = 2000
|
||||
window_size = 1
|
||||
maxout_pieces = 3
|
||||
subword_features = true
|
||||
|
||||
[corpora]
|
||||
|
||||
[corpora.dev]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.dev}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[corpora.train]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.train}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[training]
|
||||
seed = ${system.seed}
|
||||
gpu_allocator = ${system.gpu_allocator}
|
||||
dropout = 0.1
|
||||
accumulate_gradient = 1
|
||||
patience = 1600
|
||||
max_epochs = 0
|
||||
max_steps = 20000
|
||||
eval_frequency = 200
|
||||
frozen_components = []
|
||||
annotating_components = []
|
||||
dev_corpus = "corpora.dev"
|
||||
train_corpus = "corpora.train"
|
||||
before_to_disk = null
|
||||
|
||||
[training.batcher]
|
||||
@batchers = "spacy.batch_by_words.v1"
|
||||
discard_oversize = false
|
||||
tolerance = 0.2
|
||||
get_length = null
|
||||
|
||||
[training.batcher.size]
|
||||
@schedules = "compounding.v1"
|
||||
start = 100
|
||||
stop = 1000
|
||||
compound = 1.001
|
||||
t = 0.0
|
||||
|
||||
[training.logger]
|
||||
@loggers = "spacy.ConsoleLogger.v1"
|
||||
progress_bar = false
|
||||
|
||||
[training.optimizer]
|
||||
@optimizers = "Adam.v1"
|
||||
beta1 = 0.9
|
||||
beta2 = 0.999
|
||||
L2_is_weight_decay = true
|
||||
L2 = 0.01
|
||||
grad_clip = 1.0
|
||||
use_averages = false
|
||||
eps = 0.00000001
|
||||
learn_rate = 0.001
|
||||
|
||||
[training.score_weights]
|
||||
ents_f = 1.0
|
||||
ents_p = 0.0
|
||||
ents_r = 0.0
|
||||
ents_per_type = null
|
||||
|
||||
[pretraining]
|
||||
|
||||
[initialize]
|
||||
vectors = ${paths.vectors}
|
||||
init_tok2vec = ${paths.init_tok2vec}
|
||||
vocab_data = null
|
||||
lookups = null
|
||||
before_init = null
|
||||
after_init = null
|
||||
|
||||
[initialize.components]
|
||||
|
||||
[initialize.tokenizer]
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
"lang":"de",
|
||||
"name":"pipeline",
|
||||
"version":"0.0.0",
|
||||
"spacy_version":">=3.4.1,<3.5.0",
|
||||
"description":"",
|
||||
"author":"",
|
||||
"email":"",
|
||||
"url":"",
|
||||
"license":"",
|
||||
"spacy_git_version":"Unknown",
|
||||
"vectors":{
|
||||
"width":0,
|
||||
"vectors":0,
|
||||
"keys":0,
|
||||
"name":null,
|
||||
"mode":"default"
|
||||
},
|
||||
"labels":{
|
||||
"ner":[
|
||||
"cdtr.bic",
|
||||
"cdtr.iban",
|
||||
"cdtr.name",
|
||||
"invoice.date",
|
||||
"invoice.number",
|
||||
"invoice.total"
|
||||
]
|
||||
},
|
||||
"pipeline":[
|
||||
"ner"
|
||||
],
|
||||
"components":[
|
||||
"ner"
|
||||
],
|
||||
"disabled":[
|
||||
|
||||
]
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"moves":null,
|
||||
"update_with_oracle_cut_size":100,
|
||||
"multitasks":[
|
||||
|
||||
],
|
||||
"min_action_freq":1,
|
||||
"learn_tokens":false,
|
||||
"beam_width":1,
|
||||
"beam_density":0.0,
|
||||
"beam_update_prob":0.0,
|
||||
"incorrect_spans_key":null
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
‚¥movesÚÄ{"0":{},"1":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"2":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"3":{"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"4":{"":1,"invoice.total":-1,"invoice.number":-2,"cdtr.name":-3,"invoice.date":-4,"cdtr.iban":-5,"cdtr.bic":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"mode":"default"
|
||||
}
|
||||
|
|
@ -1,127 +0,0 @@
|
|||
[paths]
|
||||
train = null
|
||||
dev = null
|
||||
vectors = null
|
||||
init_tok2vec = null
|
||||
|
||||
[system]
|
||||
seed = 0
|
||||
gpu_allocator = null
|
||||
|
||||
[nlp]
|
||||
lang = "de"
|
||||
pipeline = ["ner"]
|
||||
disabled = []
|
||||
before_creation = null
|
||||
after_creation = null
|
||||
after_pipeline_creation = null
|
||||
batch_size = 1000
|
||||
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||
|
||||
[components]
|
||||
|
||||
[components.ner]
|
||||
factory = "ner"
|
||||
incorrect_spans_key = null
|
||||
moves = null
|
||||
update_with_oracle_cut_size = 100
|
||||
|
||||
[components.ner.model]
|
||||
@architectures = "spacy.TransitionBasedParser.v2"
|
||||
state_type = "ner"
|
||||
extra_state_tokens = false
|
||||
hidden_width = 64
|
||||
maxout_pieces = 2
|
||||
use_upper = true
|
||||
nO = null
|
||||
|
||||
[components.ner.model.tok2vec]
|
||||
@architectures = "spacy.HashEmbedCNN.v2"
|
||||
pretrained_vectors = null
|
||||
width = 96
|
||||
depth = 4
|
||||
embed_size = 2000
|
||||
window_size = 1
|
||||
maxout_pieces = 3
|
||||
subword_features = true
|
||||
|
||||
[corpora]
|
||||
|
||||
[corpora.dev]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.dev}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[corpora.train]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.train}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[training]
|
||||
seed = ${system.seed}
|
||||
gpu_allocator = ${system.gpu_allocator}
|
||||
dropout = 0.1
|
||||
accumulate_gradient = 1
|
||||
patience = 1600
|
||||
max_epochs = 0
|
||||
max_steps = 20000
|
||||
eval_frequency = 200
|
||||
frozen_components = []
|
||||
annotating_components = []
|
||||
dev_corpus = "corpora.dev"
|
||||
train_corpus = "corpora.train"
|
||||
before_to_disk = null
|
||||
|
||||
[training.batcher]
|
||||
@batchers = "spacy.batch_by_words.v1"
|
||||
discard_oversize = false
|
||||
tolerance = 0.2
|
||||
get_length = null
|
||||
|
||||
[training.batcher.size]
|
||||
@schedules = "compounding.v1"
|
||||
start = 100
|
||||
stop = 1000
|
||||
compound = 1.001
|
||||
t = 0.0
|
||||
|
||||
[training.logger]
|
||||
@loggers = "spacy.ConsoleLogger.v1"
|
||||
progress_bar = false
|
||||
|
||||
[training.optimizer]
|
||||
@optimizers = "Adam.v1"
|
||||
beta1 = 0.9
|
||||
beta2 = 0.999
|
||||
L2_is_weight_decay = true
|
||||
L2 = 0.01
|
||||
grad_clip = 1.0
|
||||
use_averages = false
|
||||
eps = 0.00000001
|
||||
learn_rate = 0.001
|
||||
|
||||
[training.score_weights]
|
||||
ents_f = 1.0
|
||||
ents_p = 0.0
|
||||
ents_r = 0.0
|
||||
ents_per_type = null
|
||||
|
||||
[pretraining]
|
||||
|
||||
[initialize]
|
||||
vectors = ${paths.vectors}
|
||||
init_tok2vec = ${paths.init_tok2vec}
|
||||
vocab_data = null
|
||||
lookups = null
|
||||
before_init = null
|
||||
after_init = null
|
||||
|
||||
[initialize.components]
|
||||
|
||||
[initialize.tokenizer]
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
{
|
||||
"lang":"de",
|
||||
"name":"pipeline",
|
||||
"version":"0.0.0",
|
||||
"spacy_version":">=3.1.1,<3.2.0",
|
||||
"description":"",
|
||||
"author":"",
|
||||
"email":"",
|
||||
"url":"",
|
||||
"license":"",
|
||||
"spacy_git_version":"ffaead8fe",
|
||||
"vectors":{
|
||||
"width":0,
|
||||
"vectors":0,
|
||||
"keys":0,
|
||||
"name":null
|
||||
},
|
||||
"labels":{
|
||||
"ner":[
|
||||
"cdtr.bic",
|
||||
"cdtr.iban",
|
||||
"cdtr.name",
|
||||
"invoice.date",
|
||||
"invoice.number",
|
||||
"invoice.total"
|
||||
]
|
||||
},
|
||||
"pipeline":[
|
||||
"ner"
|
||||
],
|
||||
"components":[
|
||||
"ner"
|
||||
],
|
||||
"disabled":[
|
||||
|
||||
],
|
||||
"_sourced_vectors_hashes":{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"moves":null,
|
||||
"update_with_oracle_cut_size":100,
|
||||
"multitasks":[
|
||||
|
||||
],
|
||||
"min_action_freq":1,
|
||||
"learn_tokens":false,
|
||||
"beam_width":1,
|
||||
"beam_density":0.0,
|
||||
"beam_update_prob":0.0,
|
||||
"incorrect_spans_key":null
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
‚¥movesÚÄ{"0":{},"1":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"2":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"3":{"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"4":{"":1,"cdtr.name":-1,"cdtr.iban":-2,"cdtr.bic":-3,"invoice.total":-4,"invoice.date":-5,"invoice.number":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,128 +0,0 @@
|
|||
[paths]
|
||||
train = null
|
||||
dev = null
|
||||
vectors = null
|
||||
init_tok2vec = null
|
||||
|
||||
[system]
|
||||
seed = 0
|
||||
gpu_allocator = null
|
||||
|
||||
[nlp]
|
||||
lang = "de"
|
||||
pipeline = ["ner"]
|
||||
disabled = []
|
||||
before_creation = null
|
||||
after_creation = null
|
||||
after_pipeline_creation = null
|
||||
batch_size = 1000
|
||||
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
|
||||
|
||||
[components]
|
||||
|
||||
[components.ner]
|
||||
factory = "ner"
|
||||
incorrect_spans_key = null
|
||||
moves = null
|
||||
scorer = {"@scorers":"spacy.ner_scorer.v1"}
|
||||
update_with_oracle_cut_size = 100
|
||||
|
||||
[components.ner.model]
|
||||
@architectures = "spacy.TransitionBasedParser.v2"
|
||||
state_type = "ner"
|
||||
extra_state_tokens = false
|
||||
hidden_width = 64
|
||||
maxout_pieces = 2
|
||||
use_upper = true
|
||||
nO = null
|
||||
|
||||
[components.ner.model.tok2vec]
|
||||
@architectures = "spacy.HashEmbedCNN.v2"
|
||||
pretrained_vectors = null
|
||||
width = 96
|
||||
depth = 4
|
||||
embed_size = 2000
|
||||
window_size = 1
|
||||
maxout_pieces = 3
|
||||
subword_features = true
|
||||
|
||||
[corpora]
|
||||
|
||||
[corpora.dev]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.dev}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[corpora.train]
|
||||
@readers = "spacy.Corpus.v1"
|
||||
path = ${paths.train}
|
||||
gold_preproc = false
|
||||
max_length = 0
|
||||
limit = 0
|
||||
augmenter = null
|
||||
|
||||
[training]
|
||||
seed = ${system.seed}
|
||||
gpu_allocator = ${system.gpu_allocator}
|
||||
dropout = 0.1
|
||||
accumulate_gradient = 1
|
||||
patience = 1600
|
||||
max_epochs = 0
|
||||
max_steps = 20000
|
||||
eval_frequency = 200
|
||||
frozen_components = []
|
||||
annotating_components = []
|
||||
dev_corpus = "corpora.dev"
|
||||
train_corpus = "corpora.train"
|
||||
before_to_disk = null
|
||||
|
||||
[training.batcher]
|
||||
@batchers = "spacy.batch_by_words.v1"
|
||||
discard_oversize = false
|
||||
tolerance = 0.2
|
||||
get_length = null
|
||||
|
||||
[training.batcher.size]
|
||||
@schedules = "compounding.v1"
|
||||
start = 100
|
||||
stop = 1000
|
||||
compound = 1.001
|
||||
t = 0.0
|
||||
|
||||
[training.logger]
|
||||
@loggers = "spacy.ConsoleLogger.v1"
|
||||
progress_bar = false
|
||||
|
||||
[training.optimizer]
|
||||
@optimizers = "Adam.v1"
|
||||
beta1 = 0.9
|
||||
beta2 = 0.999
|
||||
L2_is_weight_decay = true
|
||||
L2 = 0.01
|
||||
grad_clip = 1.0
|
||||
use_averages = false
|
||||
eps = 0.00000001
|
||||
learn_rate = 0.001
|
||||
|
||||
[training.score_weights]
|
||||
ents_f = 1.0
|
||||
ents_p = 0.0
|
||||
ents_r = 0.0
|
||||
ents_per_type = null
|
||||
|
||||
[pretraining]
|
||||
|
||||
[initialize]
|
||||
vectors = ${paths.vectors}
|
||||
init_tok2vec = ${paths.init_tok2vec}
|
||||
vocab_data = null
|
||||
lookups = null
|
||||
before_init = null
|
||||
after_init = null
|
||||
|
||||
[initialize.components]
|
||||
|
||||
[initialize.tokenizer]
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
"lang":"de",
|
||||
"name":"pipeline",
|
||||
"version":"0.0.0",
|
||||
"spacy_version":">=3.4.1,<3.5.0",
|
||||
"description":"",
|
||||
"author":"",
|
||||
"email":"",
|
||||
"url":"",
|
||||
"license":"",
|
||||
"spacy_git_version":"Unknown",
|
||||
"vectors":{
|
||||
"width":0,
|
||||
"vectors":0,
|
||||
"keys":0,
|
||||
"name":null,
|
||||
"mode":"default"
|
||||
},
|
||||
"labels":{
|
||||
"ner":[
|
||||
"cdtr.bic",
|
||||
"cdtr.iban",
|
||||
"cdtr.name",
|
||||
"invoice.date",
|
||||
"invoice.number",
|
||||
"invoice.total"
|
||||
]
|
||||
},
|
||||
"pipeline":[
|
||||
"ner"
|
||||
],
|
||||
"components":[
|
||||
"ner"
|
||||
],
|
||||
"disabled":[
|
||||
|
||||
]
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"moves":null,
|
||||
"update_with_oracle_cut_size":100,
|
||||
"multitasks":[
|
||||
|
||||
],
|
||||
"min_action_freq":1,
|
||||
"learn_tokens":false,
|
||||
"beam_width":1,
|
||||
"beam_density":0.0,
|
||||
"beam_update_prob":0.0,
|
||||
"incorrect_spans_key":null
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
‚¥movesÚÄ{"0":{},"1":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"2":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"3":{"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"4":{"":1,"invoice.total":-1,"invoice.number":-2,"invoice.date":-3,"cdtr.name":-4,"cdtr.iban":-5,"cdtr.bic":-6},"5":{"":1}}£cfg<66>§neg_keyÀ
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD>
|
||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"mode":"default"
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<!-- Workflow Instance -->
|
||||
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||
|
||||
<!-- -->
|
||||
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||
|
||||
<item name="workflow.pagesize"><value xsi:type="xs:int">100</value></item>
|
||||
<item name="workflow.pageindex"><value xsi:type="xs:int">30</value></item>
|
||||
<item name="workflow.entities">
|
||||
<value xsi:type="xs:string">cdtr.name</value>
|
||||
<value xsi:type="xs:string">cdtr.iban</value>
|
||||
<value xsi:type="xs:string">cdtr.bic</value>
|
||||
<value xsi:type="xs:string">invoice.total</value>
|
||||
<value xsi:type="xs:string">invoice.date</value>
|
||||
<value xsi:type="xs:string">invoice.number</value>
|
||||
</item>
|
||||
<item name="workflow.locale">
|
||||
<value xsi:type="xs:string">en_GB</value>
|
||||
<value xsi:type="xs:string">en_US</value>
|
||||
<value xsi:type="xs:string">de_DE</value>
|
||||
</item>
|
||||
|
||||
<!-- Tika OCR Server -->
|
||||
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||
<item name="tika.options">
|
||||
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||
</item>
|
||||
|
||||
<!-- ML spaCy Server -->
|
||||
<item name="ml.validation.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||
<item name="ml.validation.model"><value xsi:type="xs:string">invoice-de-0.1.0</value></item>
|
||||
<item name="ml.validation.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||
|
||||
</document>
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<!-- Workflow Instance -->
|
||||
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||
|
||||
<item name="workflow.entities">
|
||||
<value xsi:type="xs:string">cdtr.name</value>
|
||||
<value xsi:type="xs:string">cdtr.iban</value>
|
||||
<value xsi:type="xs:string">cdtr.bic</value>
|
||||
<value xsi:type="xs:string">invoice.total</value>
|
||||
<value xsi:type="xs:string">invoice.date</value>
|
||||
<value xsi:type="xs:string">invoice.number</value>
|
||||
</item>
|
||||
<item name="workflow.locale">
|
||||
<value xsi:type="xs:string">en_GB</value>
|
||||
<value xsi:type="xs:string">en_US</value>
|
||||
<value xsi:type="xs:string">de_DE</value>
|
||||
</item>
|
||||
|
||||
<!-- Tika OCR Server -->
|
||||
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||
<item name="tika.options">
|
||||
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||
</item>
|
||||
|
||||
<!-- ML spaCy Server -->
|
||||
<item name="ml.training.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||
<item name="ml.training.model"><value xsi:type="xs:string">invoice-de-0.2.0</value></item>
|
||||
<item name="ml.training.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||
<!-- LOW | GOOD -->
|
||||
<item name="ml.training.quality"><value xsi:type="xs:string">LOW</value></item>
|
||||
|
||||
|
||||
<!-- Define the training set and taining mode -->
|
||||
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||
<item name="workflow.pagesize"><value xsi:type="xs:int">1000</value></item>
|
||||
<item name="workflow.pageindex"><value xsi:type="xs:int">0</value></item>
|
||||
<item name="ml.training.iterations"><value xsi:type="xs:string">5</value></item>
|
||||
<item name="ml.training.dropoutrate"><value xsi:type="xs:string">0.0</value></item>
|
||||
<item name="ml.options">
|
||||
<value xsi:type="xs:string">min_losses=0.0&retrain_rate=100</value>
|
||||
</item>
|
||||
|
||||
|
||||
</document>
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<!-- Workflow Instance -->
|
||||
<item name="workflow.endpoint"><value xsi:type="xs:string">https://alexander-logistics.office-workflow.de/api/</value></item>
|
||||
<item name="workflow.userid"><value xsi:type="xs:string">admin</value></item>
|
||||
<item name="workflow.password"><value xsi:type="xs:string">imixs4.null</value></item>
|
||||
|
||||
<item name="workflow.entities">
|
||||
<value xsi:type="xs:string">cdtr.name</value>
|
||||
<value xsi:type="xs:string">cdtr.iban</value>
|
||||
<value xsi:type="xs:string">cdtr.bic</value>
|
||||
<value xsi:type="xs:string">invoice.total</value>
|
||||
<value xsi:type="xs:string">invoice.date</value>
|
||||
<value xsi:type="xs:string">invoice.number</value>
|
||||
</item>
|
||||
<item name="workflow.locale">
|
||||
<value xsi:type="xs:string">en_GB</value>
|
||||
<value xsi:type="xs:string">en_US</value>
|
||||
<value xsi:type="xs:string">de_DE</value>
|
||||
</item>
|
||||
|
||||
<!-- Tika OCR Server -->
|
||||
<item name="tika.ocrmode"><value xsi:type="xs:string">OCR_ONLY</value></item>
|
||||
<item name="tika.options">
|
||||
<value xsi:type="xs:string">X-Tika-OCRLanguage=eng+deu</value>
|
||||
<value xsi:type="xs:string">X-Tika-PDFocrStrategy=OCR_ONLY</value>
|
||||
</item>
|
||||
|
||||
<!-- ML spaCy Server -->
|
||||
<item name="ml.training.endpoint"><value xsi:type="xs:string">http://imixs-ml-spacy:8000/</value></item>
|
||||
<item name="ml.training.model"><value xsi:type="xs:string">invoice-de-0.2.0</value></item>
|
||||
<item name="ml.training.filepattern"><value xsi:type="xs:string">.pdf|.PDF</value></item>
|
||||
<!-- LOW | GOOD -->
|
||||
<item name="ml.training.quality"><value xsi:type="xs:string">LOW</value></item>
|
||||
|
||||
|
||||
<!-- Define the training set and taining mode -->
|
||||
<item name="workflow.query"><value xsi:type="xs:string">($workflowgroup:"Rechnungseingang" OR $workflowgroup:"Sachrechnung") AND ($taskid:5900)</value></item>
|
||||
<item name="workflow.pagesize"><value xsi:type="xs:int">100</value></item>
|
||||
<item name="workflow.pageindex"><value xsi:type="xs:int">40</value></item>
|
||||
|
||||
|
||||
</document>
|
||||
|
||||
|
||||
|
||||
1
office-alexander-logistics-app/.gitignore
vendored
1
office-alexander-logistics-app/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
/target/
|
||||
|
|
@ -1,420 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
<groupId>com.alexander-logistics</groupId>
|
||||
<version>1.3.4</version>
|
||||
</parent>
|
||||
<artifactId>office-alexander-logistics-app</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<name>Imixs Office Workflow App</name>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>docker</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
<arg value="imixs/${imixs-office.applicationname}" />
|
||||
<arg value="../." />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>debug</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-f" />
|
||||
<arg value="../Dockerfile-wildfly-debug" />
|
||||
<arg value="-t" />
|
||||
<arg value="imixs/${imixs-office.applicationname}" />
|
||||
<arg value="../." />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>kubernetes</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="../." />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="tag" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg
|
||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="push" />
|
||||
<arg
|
||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
<build>
|
||||
<testResources>
|
||||
<testResource>
|
||||
<directory>${basedir}/../reports</directory>
|
||||
</testResource>
|
||||
<testResource>
|
||||
<directory>${basedir}/src/test/resources</directory>
|
||||
</testResource>
|
||||
</testResources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.3.2</version>
|
||||
<configuration>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<webResources>
|
||||
<resource>
|
||||
<filtering>true</filtering>
|
||||
<!-- this is relative to the pom.xml directory -->
|
||||
<directory>${custom.webResources}</directory>
|
||||
<includes>
|
||||
<include>**/WEB-INF/*</include>
|
||||
<!-- include any other file types you want to filter -->
|
||||
</includes>
|
||||
</resource>
|
||||
</webResources>
|
||||
<workDirectory>target/overlay-war-folder</workDirectory>
|
||||
<!-- We exclude libs form the parent WAR artifact -->
|
||||
<overlays>
|
||||
<overlay>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<excludes>
|
||||
<exclude>WEB-INF/lib/*.jar</exclude>
|
||||
</excludes>
|
||||
</overlay>
|
||||
</overlays>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.imixs.maven</groupId>
|
||||
<artifactId>manik-hotdeploy-maven-plugin</artifactId>
|
||||
<version>2.0.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<goals>
|
||||
<goal>deploy</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<!-- List Source and Target folders for Autodeploy and Hotdeploy -->
|
||||
<autodeployments>
|
||||
<deployment>
|
||||
<!-- wildcard deployment -->
|
||||
<source>target/*.{war,ear,jar}</source>
|
||||
<target>../docker/deployments/</target>
|
||||
<unpack>true</unpack>
|
||||
</deployment>
|
||||
</autodeployments>
|
||||
<hotdeployments>
|
||||
<deployment>
|
||||
<source>src/main/webapp</source>
|
||||
<target>../docker/deployments/office-alexander-logistics.war</target>
|
||||
</deployment>
|
||||
</hotdeployments>
|
||||
|
||||
</configuration>
|
||||
|
||||
</plugin>
|
||||
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
<dependencies>
|
||||
<!-- Imixs Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-core</artifactId>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-engine</artifactId>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-jax-rs</artifactId>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-faces</artifactId>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-index-lucene</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Marty -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-marty</artifactId>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Office-Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<type>war</type>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-util</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-archive-api</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs Data -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-groups</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-views</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-documents</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-importer</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- SEPA Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-sepa</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- DATEV Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-datev</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- QR Code -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- POI Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-poi</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-ai-workflow</artifactId>
|
||||
<version>${org.imixs.ai.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
|
||||
<dependency>
|
||||
<groupId>net.sf.saxon</groupId>
|
||||
<artifactId>Saxon-HE</artifactId>
|
||||
</dependency>
|
||||
<!-- Apache PDFBox -->
|
||||
<dependency>
|
||||
<groupId>org.apache.pdfbox</groupId>
|
||||
<artifactId>pdfbox</artifactId>
|
||||
<version>${apache.pdfbox.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Apache Commons FTP Client -->
|
||||
<dependency>
|
||||
<groupId>commons-net</groupId>
|
||||
<artifactId>commons-net</artifactId>
|
||||
<version>3.6</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Microsoft oauth token -->
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>1.6.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.10</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.13.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- JUnit Tests
|
||||
<dependency>
|
||||
<groupId>javax.json</groupId>
|
||||
<artifactId>javax.json-api</artifactId>
|
||||
<version>1.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish</groupId>
|
||||
<artifactId>javax.json</artifactId>
|
||||
<version>1.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
-->
|
||||
<!-- JAX-RS 2.0 Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.core</groupId>
|
||||
<artifactId>jersey-client</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cxf</groupId>
|
||||
<artifactId>cxf-rt-rs-client</artifactId>
|
||||
<version>3.3.6</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.inject</groupId>
|
||||
<artifactId>jersey-hk2</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jakarta.ws.rs</groupId>
|
||||
<artifactId>jakarta.ws.rs-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- KSeF 2.0 Client
|
||||
<dependency>
|
||||
<groupId>pl.akmf.ksef-sdk</groupId>
|
||||
<artifactId>ksef-client</artifactId>
|
||||
<version>3.0.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
<!--
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>github-cirfmf</id>
|
||||
<url>https://maven.pkg.github.com/CIRFMF/ksef-client-java</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
-->
|
||||
</project>
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
package com.alexanderlogistics.ksef;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.PublicKey;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import org.imixs.workflow.FileData;
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
import org.imixs.workflow.engine.DocumentService;
|
||||
import org.imixs.workflow.exceptions.PluginException;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.security.DeclareRoles;
|
||||
import jakarta.annotation.security.RolesAllowed;
|
||||
import jakarta.annotation.security.RunAs;
|
||||
import jakarta.ejb.Singleton;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.json.JsonObject;
|
||||
import jakarta.json.bind.Jsonb;
|
||||
import jakarta.json.bind.JsonbBuilder;
|
||||
|
||||
/**
|
||||
* THe KSeFAPIService provides methods to open an interactive session and upload
|
||||
* an invoice.
|
||||
*
|
||||
*/
|
||||
@DeclareRoles({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS",
|
||||
"org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS",
|
||||
"org.imixs.ACCESSLEVEL.MANAGERACCESS" })
|
||||
@RolesAllowed({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS",
|
||||
"org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS",
|
||||
"org.imixs.ACCESSLEVEL.MANAGERACCESS" })
|
||||
@Singleton
|
||||
@RunAs("org.imixs.ACCESSLEVEL.MANAGERACCESS")
|
||||
public class KSeFAPIService {
|
||||
|
||||
private static Logger logger = Logger.getLogger(KSeFAPIService.class.getName());
|
||||
|
||||
public static final String ERROR_API = "API_ERROR";
|
||||
|
||||
@Inject
|
||||
KSeFAuthManager kseFAuthManager;
|
||||
|
||||
@Inject
|
||||
DocumentService documentService;
|
||||
|
||||
@PostConstruct
|
||||
void init() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method uploads an KSeF Invoice document (XML).
|
||||
* The response of the uplaod is a 'referenceNumber' which is stored into the
|
||||
* item ksef.referenceNumber
|
||||
*
|
||||
*
|
||||
* @param companyName
|
||||
* @param contactType
|
||||
* @param accessToken
|
||||
* @return
|
||||
* @throws PluginException
|
||||
*/
|
||||
public String uploadInvoice(ItemCollection workitem, String fileName)
|
||||
throws PluginException {
|
||||
String referenceNumber = null;
|
||||
logger.info("├── 📤 Upload Invoice...");
|
||||
|
||||
// First open an interactive Session. The KSeFAuthManager automatically reuses
|
||||
// an existing session
|
||||
|
||||
kseFAuthManager.openSession();
|
||||
|
||||
if (kseFAuthManager.getAccessToken() == null) {
|
||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
||||
"API Error - missing AccessToken!");
|
||||
}
|
||||
if (kseFAuthManager.getSessionRefNumber() == null) {
|
||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
||||
"API Error - missing SessionRefNumber!");
|
||||
}
|
||||
|
||||
// load invoice
|
||||
FileData fileData = workitem.getFileData(fileName);
|
||||
|
||||
byte[] invoiceXml = fileData.getContent();
|
||||
|
||||
logger.info("│ ├── XML Invoice loaded - " + invoiceXml.length + " bytes");
|
||||
try {
|
||||
// ---------- 3) AES Key generieren ----------
|
||||
logger.info("│ ├── Generate AES Key...");
|
||||
SecureRandom random = new SecureRandom();
|
||||
|
||||
byte[] aesKeyBytes = new byte[32]; // 256-bit AES key
|
||||
random.nextBytes(aesKeyBytes);
|
||||
|
||||
byte[] ivBytes = new byte[16]; // 128-bit IV
|
||||
random.nextBytes(ivBytes);
|
||||
|
||||
SecretKeySpec aesKey = new SecretKeySpec(aesKeyBytes, "AES");
|
||||
IvParameterSpec iv = new IvParameterSpec(ivBytes);
|
||||
|
||||
// ---------- 4) XML per AES-256-CBC verschlüsseln ----------
|
||||
javax.crypto.Cipher aesCipher;
|
||||
|
||||
aesCipher = javax.crypto.Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||
|
||||
aesCipher.init(javax.crypto.Cipher.ENCRYPT_MODE, aesKey, iv);
|
||||
|
||||
byte[] encryptedInvoiceXml = aesCipher.doFinal(invoiceXml);
|
||||
|
||||
// ---------- 5) AES Key per RSA verschlüsseln ----------
|
||||
PublicKey ksefPublicKey = kseFAuthManager.getSymmetricPublicKey();
|
||||
|
||||
javax.crypto.Cipher rsaCipher = javax.crypto.Cipher
|
||||
.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
|
||||
rsaCipher.init(javax.crypto.Cipher.ENCRYPT_MODE, ksefPublicKey);
|
||||
|
||||
byte[] encryptedAesKey = rsaCipher.doFinal(aesKeyBytes);
|
||||
|
||||
// ---------- 6) SHA-256 Hash des Klartext-XML berechnen ----------
|
||||
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
|
||||
|
||||
// hash origin invoice
|
||||
byte[] xmlHashBytes = sha256.digest(invoiceXml);
|
||||
String invoiceHash = Base64.getEncoder().encodeToString(xmlHashBytes);
|
||||
|
||||
// hash encrypted invoice
|
||||
xmlHashBytes = sha256.digest(encryptedInvoiceXml);
|
||||
String encryptedInvoiceHash = Base64.getEncoder().encodeToString(xmlHashBytes);
|
||||
|
||||
// ---------- 7) Request-Body bauen ----------
|
||||
// Struktur gemäß KSeF-Doku
|
||||
String jsonBody = String.format("{ " +
|
||||
"\"invoiceHash\": \"%s\", " +
|
||||
"\"invoiceSize\": \"%s\", " +
|
||||
"\"encryptedInvoiceHash\": \"%s\", " +
|
||||
"\"encryptedInvoiceSize\": \"%s\", " +
|
||||
"\"encryptedInvoiceContent\": \"%s\", " +
|
||||
"\"offlineMode\": false " +
|
||||
"}",
|
||||
invoiceHash,
|
||||
invoiceXml.length,
|
||||
encryptedInvoiceHash,
|
||||
encryptedInvoiceXml.length,
|
||||
Base64.getEncoder().encodeToString(encryptedInvoiceXml));
|
||||
|
||||
// ---------- 8) HTTP POST vorbereiten ----------
|
||||
// String uri = manager.getBaseURI() + "/sessions/online/" +
|
||||
// manager.getRefNumber() + "/invoices";
|
||||
String uri = kseFAuthManager.getBaseURI() + "/sessions/online/"
|
||||
+ kseFAuthManager.getSessionRefNumber()
|
||||
+ "/invoices";
|
||||
logger.info("│ ├── Endpoint: " + uri);
|
||||
|
||||
if (kseFAuthManager.isDebug()) {
|
||||
logger.info("Request: " + jsonBody);
|
||||
}
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(uri))
|
||||
.header("Content-Type", "application/json")
|
||||
.header("Authorization", "Bearer " + kseFAuthManager.getAccessToken())
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
|
||||
.build();
|
||||
|
||||
// ---------- 9) Call ausführen ----------
|
||||
var response = kseFAuthManager.getHttpClient().send(request,
|
||||
java.net.http.HttpResponse.BodyHandlers.ofString());
|
||||
|
||||
System.out.println("Upload Response:");
|
||||
System.out.println(response.statusCode());
|
||||
System.out.println(response.body());
|
||||
|
||||
try (Jsonb jsonb = JsonbBuilder.create()) {
|
||||
// Annahme: response.body() ist ein String mit JSON-Inhalt
|
||||
JsonObject jsonObject = jsonb.fromJson(response.body(), JsonObject.class);
|
||||
referenceNumber = jsonObject.getString("referenceNumber");
|
||||
|
||||
if (kseFAuthManager.isDebug()) {
|
||||
logger.info("│ ├── referenceNumber: " + referenceNumber);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.severe("├── ⚠️ Error parsing JSON response" + e.getMessage());
|
||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
||||
"Error parsing JSON response: " + e.getMessage());
|
||||
|
||||
}
|
||||
|
||||
if (response.statusCode() == 202) {
|
||||
logger.info("├── ✅ Upload successful ");
|
||||
} else {
|
||||
logger.info("├── ⚠️ Upload failed! ");
|
||||
}
|
||||
} catch (NoSuchAlgorithmException | NoSuchPaddingException | IOException | InterruptedException
|
||||
| InvalidKeyException | IllegalBlockSizeException | BadPaddingException
|
||||
| InvalidAlgorithmParameterException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
// finally set the referenceNumber
|
||||
List<Object> textlist = new ArrayList<Object>();
|
||||
textlist.add(referenceNumber);
|
||||
fileData.setAttribute("ksef.referenceNumber", textlist);
|
||||
|
||||
kseFAuthManager.closeSession();
|
||||
return referenceNumber;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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.
|
||||
* <p>
|
||||
* A custom implementation can react on AnalyticEvent to compute values and
|
||||
* datasets.
|
||||
* <p>
|
||||
* 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<AnalyticEvent> 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<Map> detailsList = new ArrayList<Map>();
|
||||
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<Object> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,139 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
<groupId>com.alexander-logistics</groupId>
|
||||
<version>1.3.4</version>
|
||||
</parent>
|
||||
<artifactId>office-alexander-logistics-testclient</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Imixs Office Workflow Remote Test Client</name>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<!-- enable resource filtering for multi language version -->
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<!-- use JDK settings for compiling -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.11.0</version>
|
||||
<configuration>
|
||||
<source>11</source>
|
||||
<target>11</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.3.1</version>
|
||||
<configuration>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
|
||||
<!-- Testing JUnit 5 -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.1.2</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
<finalName>imixs-process-manager</finalName>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<!-- JEE Dependencies -->
|
||||
<dependency>
|
||||
<groupId>jakarta.platform</groupId>
|
||||
<artifactId>jakarta.jakartaee-api</artifactId>
|
||||
<version>10.0.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-core</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-melman</artifactId>
|
||||
<version>${org.imixs.melman.version}</version>
|
||||
</dependency>
|
||||
<!-- JUnit 5 Dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- Mockito Dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>${mockito.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-junit-jupiter</artifactId>
|
||||
<version>${mockito.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>jakarta.xml.bind</groupId>
|
||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.parsson</groupId>
|
||||
<artifactId>jakarta.json</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jaxb</groupId>
|
||||
<artifactId>jaxb-runtime</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.media</groupId>
|
||||
<artifactId>jersey-media-jaxb</artifactId>
|
||||
<version>3.1.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.core</groupId>
|
||||
<artifactId>jersey-client</artifactId>
|
||||
<version>3.1.5</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -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<ItemCollection> 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<String, List<Object>>) 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<ItemCollection> list = client.searchEventLog("topictest", "TOPIC_CARGOSOFT_INVOICE");
|
||||
// List<ItemCollection> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
+ "<Invoices>"
|
||||
+ " <InvoiceHeader>"
|
||||
+ " <InvoiceNumber>224225</InvoiceNumber>"
|
||||
+ " </InvoiceHeader>"
|
||||
+ " </Invoices>";
|
||||
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<ItemCollection> 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<String, List<Object>>) 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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<ItemCollection> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,187 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<document>
|
||||
<!-- Workflow -->
|
||||
<item name="type">
|
||||
<value xsi:type="xs:string">workitem</value>
|
||||
</item>
|
||||
<item name="$workflowgroup">
|
||||
<value xsi:type="xs:string">Rechnungsausgang</value>
|
||||
</item>
|
||||
<item name="$taskid">
|
||||
<value xsi:type="xs:int">5001</value>
|
||||
</item>
|
||||
<item name="$eventid">
|
||||
<value xsi:type="xs:int">980</value>
|
||||
</item>
|
||||
|
||||
<!-- Dateianhänge -->
|
||||
<item name="$file">
|
||||
<value xsi:type="xmlItemArray">
|
||||
<item name="001_245956_250901_R.pdf">
|
||||
<value xsi:type="xs:string">application/pdf</value>
|
||||
<value xsi:type="xs:base64Binary">
|
||||
JVBERi0xLjMgCiXi48............................
|
||||
</value>
|
||||
</item>
|
||||
</value>
|
||||
</item>
|
||||
|
||||
<!-- Rechnungspositionen -->
|
||||
<item name="_childitems">
|
||||
<value xsi:type="xmlItemArray">
|
||||
<item name="billingcode">
|
||||
<value xsi:type="xs:string">NACHL40</value>
|
||||
</item>
|
||||
<item name="datev.wkz">
|
||||
<value xsi:type="xs:string">EUR</value>
|
||||
</item>
|
||||
<item name="datev.umsatz">
|
||||
<value xsi:type="xs:double">252.84</value>
|
||||
</item>
|
||||
<item name="billingtext">
|
||||
<value xsi:type="xs:string">Container transport from port</value>
|
||||
<value xsi:type="xs:string">to warehouse in Antwerp</value>
|
||||
</item>
|
||||
<item name="datev.shzeichen">
|
||||
<value xsi:type="xs:string">H</value>
|
||||
</item>
|
||||
<item name="category">
|
||||
<value xsi:type="xs:string">SEE</value>
|
||||
</item>
|
||||
<item name="datev.text">
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
</item>
|
||||
</value>
|
||||
<value xsi:type="xmlItemArray">
|
||||
<item name="billingcode">
|
||||
<value xsi:type="xs:string">FC</value>
|
||||
</item>
|
||||
<item name="datev.wkz">
|
||||
<value xsi:type="xs:string">EUR</value>
|
||||
</item>
|
||||
<item name="datev.umsatz">
|
||||
<value xsi:type="xs:double">22.38</value>
|
||||
</item>
|
||||
<item name="billingtext">
|
||||
<value xsi:type="xs:string">Fuel Charge as per fuel floater August</value>
|
||||
<value xsi:type="xs:string">2025</value>
|
||||
</item>
|
||||
<item name="datev.shzeichen">
|
||||
<value xsi:type="xs:string">H</value>
|
||||
</item>
|
||||
<item name="category">
|
||||
<value xsi:type="xs:string">DIESEL</value>
|
||||
</item>
|
||||
<item name="datev.text">
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
</item>
|
||||
</value>
|
||||
<value xsi:type="xmlItemArray">
|
||||
<item name="billingcode">
|
||||
<value xsi:type="xs:string">ZOLLABF</value>
|
||||
</item>
|
||||
<item name="datev.wkz">
|
||||
<value xsi:type="xs:string">EUR</value>
|
||||
</item>
|
||||
<item name="datev.umsatz">
|
||||
<value xsi:type="xs:double">16.2</value>
|
||||
</item>
|
||||
<item name="billingtext">
|
||||
<value xsi:type="xs:string">custom clearance fiscal representation</value>
|
||||
<value xsi:type="xs:string">VAT reporting</value>
|
||||
</item>
|
||||
<item name="datev.shzeichen">
|
||||
<value xsi:type="xs:string">H</value>
|
||||
</item>
|
||||
<item name="category">
|
||||
<value xsi:type="xs:string">SEE</value>
|
||||
</item>
|
||||
<item name="datev.text">
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
</item>
|
||||
</value>
|
||||
|
||||
</item>
|
||||
|
||||
|
||||
<!-- Fachdaten -->
|
||||
<item name="dbtr.name">
|
||||
<value xsi:type="xs:string">Graphic Packaging International (NL)</value>
|
||||
</item>
|
||||
<item name="dbtr.number">
|
||||
<value xsi:type="xs:string">D12495</value>
|
||||
</item>
|
||||
<item name="invoice.base.amount">
|
||||
<value xsi:type="xs:double">0.0</value>
|
||||
</item>
|
||||
<item name="invoice.bookingperiod">
|
||||
<value xsi:type="xs:string">202508</value>
|
||||
</item>
|
||||
<item name="invoice.costunit">
|
||||
<value xsi:type="xs:string">IM-ZEL</value>
|
||||
</item>
|
||||
<item name="invoice.country">
|
||||
<value xsi:type="xs:string" />
|
||||
</item>
|
||||
<item name="invoice.currency">
|
||||
<value xsi:type="xs:string">EUR</value>
|
||||
</item>
|
||||
<item name="invoice.date">
|
||||
<value xsi:type="xs:dateTime">2025-09-01T00:00:00+02:00</value>
|
||||
</item>
|
||||
<item name="invoice.duedate">
|
||||
<value xsi:type="xs:dateTime">2025-10-16T00:00:00+02:00</value>
|
||||
</item>
|
||||
<item name="invoice.language">
|
||||
<value xsi:type="xs:string">EN</value>
|
||||
</item>
|
||||
<item name="invoice.number">
|
||||
<value xsi:type="xs:string">245956</value>
|
||||
</item>
|
||||
<item name="invoice.positions">
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
</item>
|
||||
<item name="invoice.rate">
|
||||
<value xsi:type="xs:double">0.0</value>
|
||||
</item>
|
||||
<item name="invoice.reminder">
|
||||
<value xsi:type="xs:dateTime">2025-10-16T00:00:00+02:00</value>
|
||||
</item>
|
||||
<item name="invoice.saldo">
|
||||
<value xsi:type="xs:double">469.07</value>
|
||||
</item>
|
||||
<item name="invoice.text">
|
||||
<value xsi:type="xs:string">LA-PAP-2508-012</value>
|
||||
</item>
|
||||
<item name="invoice.total">
|
||||
<value xsi:type="xs:double">469.07</value>
|
||||
</item>
|
||||
<item name="invoice.total.net">
|
||||
<value xsi:type="xs:double">469.07</value>
|
||||
</item>
|
||||
<item name="invoice.total.tax">
|
||||
<value xsi:type="xs:double">0.0</value>
|
||||
</item>
|
||||
<item name="invoice.type">
|
||||
<value xsi:type="xs:string">R</value>
|
||||
</item>
|
||||
<item name="invoice.type.description">
|
||||
<value xsi:type="xs:string">Ausgangsrechnung</value>
|
||||
</item>
|
||||
<item name="invoice.vatrate">
|
||||
<value xsi:type="xs:double">0.0</value>
|
||||
</item>
|
||||
<item name="mandant.id">
|
||||
<value xsi:type="xs:string">001</value>
|
||||
</item>
|
||||
<item name="payment.term">
|
||||
<value xsi:type="xs:string">10</value>
|
||||
</item>
|
||||
|
||||
|
||||
</document>
|
||||
</data>
|
||||
586
pom.xml
586
pom.xml
|
|
@ -5,39 +5,73 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.alexander-logistics</groupId>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
<version>1.3.4</version>
|
||||
<packaging>pom</packaging>
|
||||
<version>1.4.0</version>
|
||||
<packaging>war</packaging>
|
||||
<name>Imixs Office Workflow - Custom Build</name>
|
||||
<organization>
|
||||
<name>Imixs Software Solutions GmbH</name>
|
||||
<url>http://www.imixs.com</url>
|
||||
</organization>
|
||||
<inceptionYear>2024</inceptionYear>
|
||||
<developers>
|
||||
<developer>
|
||||
<id>rsoika</id>
|
||||
<name>Ralph Soika</name>
|
||||
<email>ralph.soika@imixs.com</email>
|
||||
<url>http://blog.imixs.org/</url>
|
||||
<organization>Imixs Software Solutions GmbH</organization>
|
||||
<organizationUrl>http://www.imixs.com</organizationUrl>
|
||||
<roles>
|
||||
<role>developer</role>
|
||||
<role>testing</role>
|
||||
</roles>
|
||||
<timezone>2</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>gaheinle</id>
|
||||
<name>Gaby Heinle</name>
|
||||
<email />
|
||||
<url />
|
||||
<organization>Imixs Software Solutions GmbH</organization>
|
||||
<organizationUrl>http://www.imixs.com</organizationUrl>
|
||||
<roles>
|
||||
<role>developer</role>
|
||||
<role>testing</role>
|
||||
</roles>
|
||||
<timezone>2</timezone>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<modules>
|
||||
<module>office-alexander-logistics-app</module>
|
||||
<module>office-alexander-logistics-testclient</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<java.source>11</java.source>
|
||||
<java.target>11</java.target>
|
||||
<java.source>17</java.source>
|
||||
<java.target>17</java.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
|
||||
<!-- Wildfly -->
|
||||
<custom.webResources>src/main/webapp</custom.webResources>
|
||||
<custom.unpackTypes>war</custom.unpackTypes>
|
||||
|
||||
<!-- Build Time -->
|
||||
<org.imixs.build.timestamp>${maven.build.timestamp}</org.imixs.build.timestamp>
|
||||
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
|
||||
|
||||
<!-- Dependency Versions -->
|
||||
<jakarta.version>10.0.0</jakarta.version>
|
||||
<org.imixs.office.version>5.0.5-SNAPSHOT</org.imixs.office.version>
|
||||
<org.imixs.workflow.version>6.0.9</org.imixs.workflow.version>
|
||||
<org.imixs.marty.version>5.0.0</org.imixs.marty.version>
|
||||
<org.imixs.archive.version>3.1.3-SNAPSHOT</org.imixs.archive.version>
|
||||
<org.imixs.adapters.version>3.0.3</org.imixs.adapters.version>
|
||||
<org.imixs.melman.version>2.1.1-SNAPSHOT</org.imixs.melman.version>
|
||||
<org.imixs.data.version>1.0.2-SNAPSHOT</org.imixs.data.version>
|
||||
<microprofile.version>6.0</microprofile.version>
|
||||
<net.sf.saxon.version>9.9.1-4</net.sf.saxon.version>
|
||||
<apache.pdfbox.version>2.0.26</apache.pdfbox.version>
|
||||
<!-- Dependency Versions -->
|
||||
<jakarta.version>10.0.0</jakarta.version>
|
||||
<microprofile.version>6.0</microprofile.version>
|
||||
<org.imixs.office.version>5.1.9-SNAPSHOT</org.imixs.office.version>
|
||||
<org.imixs.workflow.version>6.2.8-SNAPSHOT</org.imixs.workflow.version>
|
||||
<org.imixs.marty.version>5.2.0</org.imixs.marty.version>
|
||||
<org.imixs.e-invoice.version>1.0.3-SNAPSHOT</org.imixs.e-invoice.version>
|
||||
<org.imixs.adapter.version>3.2.4-SNAPSHOT</org.imixs.adapter.version>
|
||||
<org.imixs.data.version>1.0.4-SNAPSHOT</org.imixs.data.version>
|
||||
|
||||
<apache.poi.version>4.0.0</apache.poi.version>
|
||||
<net.sf.saxon.version>9.9.1-4</net.sf.saxon.version>
|
||||
<apache.pdfbox.version>2.0.24</apache.pdfbox.version>
|
||||
<!-- -->
|
||||
<org.imixs.ai.version>1.1.1</org.imixs.ai.version>
|
||||
<org.imixs.ai.version>1.1.9-SNAPSHOT</org.imixs.ai.version>
|
||||
<custom.webResources>src/main/webapp</custom.webResources>
|
||||
|
||||
<!-- test dependencies -->
|
||||
|
|
@ -55,6 +89,7 @@
|
|||
|
||||
<!-- Wildfly unpack war -->
|
||||
<custom.unpackTypes>war</custom.unpackTypes>
|
||||
<jakarta.faces.project_stage>Production</jakarta.faces.project_stage>
|
||||
|
||||
<!-- jndi Mail res-ref name -->
|
||||
<imixs-mail-res-ref-name>java:/mail/org.imixs.workflow.mail</imixs-mail-res-ref-name>
|
||||
|
|
@ -66,9 +101,9 @@
|
|||
<repositories>
|
||||
<!-- Sonatype Snapshot repository -->
|
||||
<repository>
|
||||
<id>sonatype-snaptshots</id>
|
||||
<name>Sonatype Snapshot repository</name>
|
||||
<url>http://oss.sonatype.org/content/repositories/snapshots</url>
|
||||
<id>central-portal-snapshots</id>
|
||||
<name>Central Portal Snapshots</name>
|
||||
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
|
|
@ -81,19 +116,114 @@
|
|||
<profiles>
|
||||
<profile>
|
||||
<id>docker</id>
|
||||
<!-- build latest - see ear module for details -->
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
<arg value="imixs/${imixs-office.applicationname}" />
|
||||
<arg value="./" />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>debug</id>
|
||||
<!-- build latest - see ear module for details -->
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-f" />
|
||||
<arg value="./Dockerfile-debug" />
|
||||
<arg value="-t" />
|
||||
<arg value="imixs/${imixs-office.applicationname}" />
|
||||
<arg value="./." />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>kubernetes</id>
|
||||
<!-- build and push to rep - see ear module for details -->
|
||||
<id>imixs-cloud</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>install</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="./." />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="tag" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg
|
||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="push" />
|
||||
<arg
|
||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<!-- enable resource filtering for multi language version -->
|
||||
|
|
@ -102,7 +232,21 @@
|
|||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<testResources>
|
||||
<testResource>
|
||||
<directory>${basedir}/./reports</directory>
|
||||
</testResource>
|
||||
<testResource>
|
||||
<directory>${basedir}/./workflow</directory>
|
||||
</testResource>
|
||||
<testResource>
|
||||
<directory>${basedir}/src/test/resources</directory>
|
||||
</testResource>
|
||||
</testResources>
|
||||
|
||||
<plugins>
|
||||
|
||||
<!-- use JDK settings for compiling -->
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
|
|
@ -116,8 +260,59 @@
|
|||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.2</version>
|
||||
<version>3.3.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-test</id>
|
||||
<phase>test</phase>
|
||||
<goals>
|
||||
<goal>test</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<argLine>
|
||||
--add-opens java.base/java.lang=ALL-UNNAMED
|
||||
</argLine>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<configuration>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<webResources>
|
||||
<resource>
|
||||
<filtering>true</filtering>
|
||||
<!-- this is relative to the pom.xml directory -->
|
||||
<directory>${custom.webResources}</directory>
|
||||
<includes>
|
||||
<include>**/WEB-INF/*</include>
|
||||
<!-- include any other file types you want to filter -->
|
||||
</includes>
|
||||
</resource>
|
||||
</webResources>
|
||||
|
||||
<!-- We exclude libs form the parent WAR artifact
|
||||
<workDirectory>target/overlay-war-folder</workDirectory>
|
||||
|
||||
<overlays>
|
||||
<overlay>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<excludes>
|
||||
<exclude>WEB-INF/lib/imixs-data-*.jar</exclude>
|
||||
</excludes>
|
||||
</overlay>
|
||||
</overlays>
|
||||
-->
|
||||
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
|
|
@ -127,196 +322,49 @@
|
|||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Imixs Code Formatter and Checkstyle
|
||||
|
||||
<plugin>
|
||||
<groupId>net.revelc.code.formatter</groupId>
|
||||
<artifactId>formatter-maven-plugin</artifactId>
|
||||
<version>2.26.0</version>
|
||||
<configuration>
|
||||
<configFile>
|
||||
https://raw.githubusercontent.com/imixs/imixs-workflow/refs/heads/master/imixs-code-style.xml</configFile>
|
||||
<lineEnding>LF</lineEnding>
|
||||
</configuration>
|
||||
<groupId>org.imixs.maven</groupId>
|
||||
<artifactId>manik-hotdeploy-maven-plugin</artifactId>
|
||||
<version>2.0.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>validate</phase>
|
||||
<phase>install</phase>
|
||||
<goals>
|
||||
<goal>format</goal>
|
||||
<goal>deploy</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<!-- List Source and Target folders for Autodeploy and Hotdeploy -->
|
||||
<autodeployments>
|
||||
<deployment>
|
||||
<!-- wildcard deployment -->
|
||||
<source>target/*.{war,ear,jar}</source>
|
||||
<target>./docker/deployments/</target>
|
||||
<unpack>true</unpack>
|
||||
</deployment>
|
||||
</autodeployments>
|
||||
<hotdeployments>
|
||||
<deployment>
|
||||
<source>src/main/webapp</source>
|
||||
<target>./docker/deployments/${imixs-office.applicationname}.war</target>
|
||||
</deployment>
|
||||
</hotdeployments>
|
||||
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- relase management -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<configuration>
|
||||
<configLocation>
|
||||
https://raw.githubusercontent.com/imixs/imixs-workflow/master/imixs-checkstyle-8.44.xml</configLocation>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
</plugin>
|
||||
-->
|
||||
|
||||
</plugins>
|
||||
<finalName>office-alexander-logistics</finalName>
|
||||
|
||||
<finalName>office-alexander-logistics</finalName>
|
||||
</build>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
<!-- Imixs Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-core</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-engine</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-faces</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-jax-rs</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-workflow-index-lucene</artifactId>
|
||||
<version>${org.imixs.workflow.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Marty -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-marty</artifactId>
|
||||
<version>${org.imixs.marty.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Office Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<version>${org.imixs.office.version}</version>
|
||||
<type>war</type>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-util</artifactId>
|
||||
<version>${org.imixs.office.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- SEPA Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-sepa</artifactId>
|
||||
<version>${org.imixs.adapters.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- DATEV Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-datev</artifactId>
|
||||
<version>${org.imixs.adapters.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- QR Code -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||
<version>${org.imixs.adapters.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- POI Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-poi</artifactId>
|
||||
<version>${org.imixs.adapters.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive API -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-archive-api</artifactId>
|
||||
<version>${org.imixs.archive.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs AI -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-ai-workflow</artifactId>
|
||||
<version>${org.imixs.ai.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs Data -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-groups</artifactId>
|
||||
<version>${org.imixs.data.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-views</artifactId>
|
||||
<version>${org.imixs.data.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-documents</artifactId>
|
||||
<version>${org.imixs.data.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-importer</artifactId>
|
||||
<version>${org.imixs.data.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Melman Version Management hinzufügen -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-melman</artifactId>
|
||||
<version>${org.imixs.melman.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
|
||||
<dependency>
|
||||
<groupId>net.sf.saxon</groupId>
|
||||
<artifactId>Saxon-HE</artifactId>
|
||||
<version>${net.sf.saxon.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- Jakarta EE -->
|
||||
<dependency>
|
||||
|
|
@ -325,8 +373,6 @@
|
|||
<version>${jakarta.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Microprofile -->
|
||||
<dependency>
|
||||
<groupId>org.eclipse.microprofile</groupId>
|
||||
|
|
@ -336,6 +382,131 @@
|
|||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Office-Workflow Overlay -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<type>war</type>
|
||||
<version>${org.imixs.office.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-util</artifactId>
|
||||
<version>${org.imixs.office.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs Data -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-data-importer</artifactId>
|
||||
<version>${org.imixs.data.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.pdfbox</groupId>
|
||||
<artifactId>pdfbox</artifactId>
|
||||
<version>${apache.pdfbox.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-AI -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-ai-workflow</artifactId>
|
||||
<version>${org.imixs.ai.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-ai-bpmn</artifactId>
|
||||
<version>${org.imixs.ai.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- SEPA -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-sepa</artifactId>
|
||||
<version>${org.imixs.adapter.version}</version>
|
||||
</dependency>
|
||||
<!-- DATEV -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-datev</artifactId>
|
||||
<version>${org.imixs.adapter.version}</version>
|
||||
</dependency>
|
||||
<!-- POI Adapter
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-poi</artifactId>
|
||||
<version>${org.imixs.adapter.version}</version>
|
||||
</dependency>
|
||||
-->
|
||||
<!-- QR Code -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||
<version>${org.imixs.adapter.version}</version>
|
||||
</dependency>
|
||||
<!-- E-Invoice-->
|
||||
<dependency>
|
||||
<groupId>org.imixs.util</groupId>
|
||||
<artifactId>imixs-e-invoice</artifactId>
|
||||
<version>${org.imixs.e-invoice.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Apache Commons FTP Client -->
|
||||
<dependency>
|
||||
<groupId>commons-net</groupId>
|
||||
<artifactId>commons-net</artifactId>
|
||||
<version>3.6</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Microsoft oauth token -->
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>1.6.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.10</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.13.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- JAX-RS 2.0 Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.core</groupId>
|
||||
<artifactId>jersey-client</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cxf</groupId>
|
||||
<artifactId>cxf-rt-rs-client</artifactId>
|
||||
<version>3.3.6</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.inject</groupId>
|
||||
<artifactId>jersey-hk2</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jakarta.ws.rs</groupId>
|
||||
<artifactId>jakarta.ws.rs-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Testing -->
|
||||
|
||||
<!-- JUnit 5 Dependencies -->
|
||||
|
|
@ -364,7 +535,6 @@
|
|||
<version>${mockito.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.eclipse.parsson</groupId>
|
||||
<artifactId>jakarta.json</artifactId>
|
||||
|
|
|
|||
250
reports/cargosoft/cargosoft-1.0.0-br.imixs-report
Normal file
250
reports/cargosoft/cargosoft-1.0.0-br.imixs-report
Normal file
File diff suppressed because one or more lines are too long
231
reports/cargosoft/cargosoft-1.0.0-br.xsl
Normal file
231
reports/cargosoft/cargosoft-1.0.0-br.xsl
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
version="2.0">
|
||||
<xsl:strip-space elements="*" />
|
||||
<xsl:output method="xml" indent="yes" encoding="UTF-8"
|
||||
standalone="yes" />
|
||||
|
||||
<xsl:template match="/">
|
||||
|
||||
<xsl:variable name="date"
|
||||
select="/data/document/item[@name='$modified']/value" />
|
||||
<Invoices version="2020.2"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<Message>
|
||||
<SenderID>Imixs-Office-Workflow</SenderID>
|
||||
<ReceiverID>Cargosoft</ReceiverID>
|
||||
<MessageID>
|
||||
<xsl:value-of select="/data/document/item[@name='$uniqueid']/value" />
|
||||
</MessageID>
|
||||
<MessageDate>
|
||||
<DateTime>
|
||||
<xsl:value-of select="$date" />
|
||||
</DateTime>
|
||||
</MessageDate>
|
||||
</Message>
|
||||
|
||||
<xsl:apply-templates
|
||||
select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) =
|
||||
'Cargosoft-Export']" />
|
||||
</Invoices>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- This template builds invoice info -->
|
||||
<xsl:template
|
||||
match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) =
|
||||
'Cargosoft-Export']">
|
||||
|
||||
<xsl:variable name="date" select="item[@name='$modified']/value" />
|
||||
<xsl:variable
|
||||
name="currency" select="item[@name='invoice.currency']/value" />
|
||||
|
||||
<Invoice>
|
||||
<InvoiceHeader>
|
||||
<Client>
|
||||
<Codes>
|
||||
<!-- Als Typ muss „cs“ übermittelt werden und im Code wird
|
||||
dann der Cargosoft Mandant erwartet. -->
|
||||
<Code Type="cs">008</Code>
|
||||
</Codes>
|
||||
</Client>
|
||||
<!-- Hier muss eine eindeutige Belegnummer für jeden einzelnen
|
||||
Beleg übermittelt werden. Es muss sich um eine Nummer
|
||||
handeln, die pro Beleg hochgezählt wird und darf sich nicht
|
||||
überschneiden mit dem CargoSoft Belegnummernkreis.
|
||||
Daher den Nummernkreis vorher mit CargoSoft absprechen. -->
|
||||
<InvoiceNumber>
|
||||
<xsl:value-of select="item[@name='numsequencenumber']/value" />
|
||||
</InvoiceNumber>
|
||||
|
||||
<!-- Belegart - bei Gutschriften 'CREDIT' andernfalls 'INVOICE -->
|
||||
<InvoiceType>
|
||||
<Codes>
|
||||
<xsl:choose>
|
||||
<xsl:when test="item[@name='payment.type']/value = 'credit'">
|
||||
<Code Type="cs">CREDIT</Code>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<Code Type="cs">INVOICE</Code>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</Codes>
|
||||
</InvoiceType>
|
||||
<InvoiceCurrency>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="$currency" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</InvoiceCurrency>
|
||||
<InvoiceAmount>
|
||||
<NetAmount>
|
||||
<Amount>
|
||||
<Currency>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="$currency" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</Currency>
|
||||
<Value>
|
||||
<xsl:value-of select="item[@name='order.total.netto']/value"
|
||||
/>
|
||||
</Value>
|
||||
<!-- exchange rate nur ausgeben wenn vorhanden -->
|
||||
<xsl:if
|
||||
test="string-length(item[@name='invoice.exchangerate']/value) >0">
|
||||
<ExchangeRate>
|
||||
<xsl:value-of select="item[@name='invoice.exchangerate']/value" />
|
||||
</ExchangeRate>
|
||||
</xsl:if>
|
||||
</Amount>
|
||||
</NetAmount>
|
||||
<VATInformation>
|
||||
<VATAmount>
|
||||
<Amount>
|
||||
<Currency>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="$currency" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</Currency>
|
||||
<Value>
|
||||
<xsl:value-of select="item[@name='order.total.tax']/value" />
|
||||
</Value>
|
||||
<!-- exchange rate nur ausgeben wenn vorhanden -->
|
||||
<xsl:if
|
||||
test="string-length(item[@name='invoice.exchangerate']/value) >0">
|
||||
<ExchangeRate>
|
||||
<xsl:value-of
|
||||
select="item[@name='invoice.exchangerate']/value" />
|
||||
</ExchangeRate>
|
||||
</xsl:if>
|
||||
</Amount>
|
||||
</VATAmount>
|
||||
</VATInformation>
|
||||
</InvoiceAmount>
|
||||
<CollectionInvoice>false</CollectionInvoice>
|
||||
<xsl:if test="string-length(item[@name='invoice.period']/value) > 0">
|
||||
<BookingPeriod>
|
||||
<xsl:value-of select="item[@name='invoice.period']/value" />
|
||||
</BookingPeriod>
|
||||
</xsl:if>
|
||||
<Booked>false</Booked>
|
||||
<InvoiceDate>
|
||||
<xsl:value-of select="item[@name='invoice.date']/value" />
|
||||
</InvoiceDate>
|
||||
|
||||
<InvoiceAddress type="CN">
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="item[@name='cdtr.number']/value" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</InvoiceAddress>
|
||||
|
||||
<References>
|
||||
<Reference type="cs">
|
||||
<xsl:value-of select="item[@name='invoice.number']/value" />
|
||||
</Reference>
|
||||
</References>
|
||||
|
||||
<!-- Attachements -->
|
||||
<xsl:if test="item[@name='$file.count']/value > 0">
|
||||
<Attachments>
|
||||
<xsl:for-each
|
||||
select="item[@name='$file']/value/item">
|
||||
<Attachment>
|
||||
<xsl:attribute name="id"><xsl:value-of
|
||||
select="./value/item[@name='md5checksum']/value" /></xsl:attribute>
|
||||
<xsl:attribute name="version">1</xsl:attribute>
|
||||
<Filename>
|
||||
<xsl:value-of select="lower-case(./@name)" />
|
||||
</Filename>
|
||||
<Description>Imixs-Office-Workflow</Description>
|
||||
<Content>
|
||||
<xsl:value-of select="./value[2]" />
|
||||
</Content>
|
||||
</Attachment>
|
||||
</xsl:for-each>
|
||||
</Attachments>
|
||||
</xsl:if>
|
||||
|
||||
</InvoiceHeader>
|
||||
<InvoiceRows>
|
||||
|
||||
<xsl:for-each
|
||||
select="item[@name='_childitems']/value">
|
||||
<InvoiceRow>
|
||||
<Row>
|
||||
<xsl:value-of select="./item[@name='numpos']/value" />
|
||||
</Row>
|
||||
<FileNumber>
|
||||
<xsl:value-of select="./item[@name='name']/value"
|
||||
/>
|
||||
</FileNumber>
|
||||
<InvoiceAmount>
|
||||
<NetAmount>
|
||||
<Amount>
|
||||
<Currency>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="$currency" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</Currency>
|
||||
<Value>
|
||||
<xsl:value-of select="./item[@name='amount']/value" />
|
||||
</Value>
|
||||
</Amount>
|
||||
</NetAmount>
|
||||
<VATInformation>
|
||||
<VAT>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="./item[@name='tax']/value" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</VAT>
|
||||
</VATInformation>
|
||||
</InvoiceAmount>
|
||||
<ActivityType>
|
||||
<Codes>
|
||||
<Code Type="cs">
|
||||
<xsl:value-of select="./item[@name='category']/value" />
|
||||
</Code>
|
||||
</Codes>
|
||||
</ActivityType>
|
||||
</InvoiceRow>
|
||||
</xsl:for-each>
|
||||
</InvoiceRows>
|
||||
</Invoice>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
|
@ -1,523 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
|
||||
<CstmrCdtTrfInitn>
|
||||
<GrpHdr>
|
||||
<MsgId>885e0519099f4ef5876b1b721d4b605f</MsgId>
|
||||
<CreDtTm>2024-06-20T09:33:46</CreDtTm>
|
||||
<NbOfTxs>20</NbOfTxs>
|
||||
<CtrlSum>67913,22</CtrlSum>
|
||||
<InitgPty>
|
||||
<Nm>PKO Bank Polski SA (PLN)</Nm>
|
||||
</InitgPty>
|
||||
</GrpHdr>
|
||||
<PmtInf>
|
||||
<PmtInfId>885e0519099f4ef5876b1b721d4b605f-1</PmtInfId>
|
||||
<PmtMtd>TRF</PmtMtd>
|
||||
<NbOfTxs>20</NbOfTxs>
|
||||
<CtrlSum>67913,22</CtrlSum>
|
||||
<PmtTpInf>
|
||||
<SvcLvl>
|
||||
<Cd>SEPA</Cd>
|
||||
</SvcLvl>
|
||||
</PmtTpInf>
|
||||
<ReqdExctnDt>2024-06-20</ReqdExctnDt>
|
||||
<Dbtr>
|
||||
<Nm>PKO Bank Polski SA (PLN)</Nm>
|
||||
</Dbtr>
|
||||
<DbtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL61102010260000120203993128</IBAN>
|
||||
</Id>
|
||||
</DbtrAcct>
|
||||
<DbtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>BPKOPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</DbtrAgt>
|
||||
<ChrgBr>SHAR</ChrgBr>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>ALBPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Blaszkiewicz</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL35249000050000453034973384</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701528 / 540/05/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">4059.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>GBWCPLPP</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>KOWALEWSKI</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL33823300040017753920140001</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701515 / FS 318/04/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>GEODIS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL85124062921111001069083502</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701779 / FWA/24FTD/01725</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>GEODIS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL85124062921111001069083502</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701780 / FWA/24FTD/01732</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>GEODIS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL85124062921111001069083502</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701781 / FWA/24FTD/01736</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">3013.50</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>INGBPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>adex</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL42105015911000009135641521</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701800 / FS 34/05/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2952.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Danuta Bedkowska</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL50102024300000860200294058</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701801 / FT/948/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2952.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>INGBPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Easy Way</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL31105017221000009142459099</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701817 / FV/106/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>RABEN</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL67203000745059000010201640</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701809 / 8742530343</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>RABEN</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL67203000745059000010201640</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701808 / 8742530342</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>WBKPPLPP</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>ZASADA TRANS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL08150017481217400107410000</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701815 / TKP/0211/05/2024/FV</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPKXXX</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Wielkopolska</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL73203000451110000002046170</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701802 / V 00043/05/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2337.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>EXWIS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL88124060871111001053542790</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701823 / 381/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">1230.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>GEODIS</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL85124062921111001069083502</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701782 / FKA/24FTD/01907</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2029.50</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>STALKO</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL51124063351111000051278199</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701813 / 3814/04/2024/TR</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">2029.50</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PKOPPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>STALKO</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL51124063351111000051278199</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701811 / 3812/04/2024/TR</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">3075.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>POLUPLPR</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Klajnowski</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL21888210322001002691790001</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>701816 / 751/2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">1848.00</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>INGBPLPW</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>BULK CARGO</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL97105000995381000010009580</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>702441 / VAT/2043/E /2024</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">16961.40</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Baltic Hub</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL52160014753166100000000793</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>702466 / FV/24/06/0304</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
<CdtTrfTxInf>
|
||||
<PmtId>
|
||||
<EndToEndId>NOTPROVIDED</EndToEndId>
|
||||
</PmtId>
|
||||
<Amt>
|
||||
<InstdAmt Ccy="PLN">6730.32</InstdAmt>
|
||||
</Amt>
|
||||
<CdtrAgt>
|
||||
<FinInstnId>
|
||||
<BIC>PPABPLPK</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr>
|
||||
<Nm>Baltic Hub</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
<Id>
|
||||
<IBAN>PL52160014753166100000000793</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf>
|
||||
<Ustrd>702467 / FV/24/06/0309</Ustrd>
|
||||
</RmtInf>
|
||||
</CdtTrfTxInf>
|
||||
</PmtInf>
|
||||
</CstmrCdtTrfInitn>
|
||||
</Document>
|
||||
20
setup_dev.sh
20
setup_dev.sh
|
|
@ -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
|
||||
167
src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java
Normal file
167
src/main/java/com/alexanderlogistics/AGLAIInvoiceAdapter.java
Normal file
|
|
@ -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<ItemCollection> 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<String, List<String>> 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<ItemCollection> 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<ItemCollection> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,6 +76,8 @@ public class AGLAnalyticControllerOPListe implements Serializable {
|
|||
department = documentService.load(departmentID);
|
||||
if (department != null) {
|
||||
event.getWorkitem().setItemValue("space.name", department.getItemValueString("name"));
|
||||
} else {
|
||||
|
||||
}
|
||||
departmentIDLast = departmentID;
|
||||
resetStats(event);
|
||||
|
|
@ -98,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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -158,7 +165,7 @@ public class AGLAnalyticControllerOPListe implements Serializable {
|
|||
|
||||
try {
|
||||
|
||||
if (departmentID == null || !departmentID.isEmpty()) {
|
||||
if (departmentID == null || (!departmentID.isEmpty() && !"-".equals(departmentID))) {
|
||||
countAll = documentService.count(
|
||||
"(type:workitem) AND $uniqueidref:" + departmentID + " AND $modelversion:rechnungsausgang-*");
|
||||
|
||||
|
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
149
src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java
Normal file
149
src/main/java/com/alexanderlogistics/AGLTimestampAdapter.java
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
/****************************************************************************
|
||||
* Copyright (c) 2022-2025 Imixs Software Solutions GmbH and others.
|
||||
* https://www.imixs.com
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License v. 2.0 which is available at
|
||||
* https://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* This Source Code may also be made available under the terms of the
|
||||
* GNU General Public License, version 2 or later (GPL-2.0-or-later),
|
||||
* which is available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
|
||||
****************************************************************************/
|
||||
|
||||
package com.alexanderlogistics;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.imixs.workflow.engine.TextEvent;
|
||||
import org.imixs.workflow.util.XMLParser;
|
||||
|
||||
import jakarta.ejb.Stateless;
|
||||
import jakarta.enterprise.event.Observes;
|
||||
|
||||
/**
|
||||
* The AGLTimestampAdapter replaces text fragments with a specific timestamp.
|
||||
*
|
||||
* The adapter parses a text for the tag `<timestamp />` and replaces the tag
|
||||
* with the current system time.
|
||||
* The output can be formatted with the attribute `format` adapting the Java
|
||||
* Time Format.
|
||||
* The timestamp can further be adjusted by days or minutes using the optional
|
||||
* attributes `adjustDays` or `adjustMinutes`.
|
||||
*
|
||||
* NOTE: Can be removed with Imixs-Workflow versin 6.2.8
|
||||
*
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
@Stateless
|
||||
public class AGLTimestampAdapter {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(AGLTimestampAdapter.class.getName());
|
||||
|
||||
// Default format pattern used if no 'format' attribute is provided
|
||||
private static final String DEFAULT_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
|
||||
|
||||
/**
|
||||
* This method reacts on CDI events of the type TextEvent and parses a string
|
||||
* for xml tag <timestamp>. Those tags will be replaced with the current
|
||||
* system time.
|
||||
*
|
||||
*/
|
||||
public void onEvent(@Observes TextEvent event) {
|
||||
String text = event.getText();
|
||||
boolean debug = logger.isLoggable(Level.FINE);
|
||||
|
||||
List<String> timestampTags = XMLParser.findTags(text, "timestamp");
|
||||
|
||||
// Replace each tag with the computed timestamp
|
||||
for (String tag : timestampTags) {
|
||||
String timestamp = computeTimestamp(tag);
|
||||
|
||||
if (debug) {
|
||||
logger.log(Level.FINE, "replacing tag ''{0}'' with ''{1}''", new Object[] { tag, timestamp });
|
||||
}
|
||||
|
||||
text = text.replace(tag, timestamp);
|
||||
}
|
||||
|
||||
event.setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the timestamp string for a given <timestamp .../> tag.
|
||||
*
|
||||
* Supports the optional attributes:
|
||||
* - format: a java.time.format.DateTimeFormatter pattern
|
||||
* - adjustDays: number of days to add (negative values subtract)
|
||||
* - adjustMinutes: number of minutes to add (negative values subtract)
|
||||
*
|
||||
* @param tag - the full xml tag string, e.g. <timestamp format="dd.MM.yyyy" />
|
||||
* @return the formatted timestamp
|
||||
*/
|
||||
/**
|
||||
* Computes the timestamp string for a given <timestamp .../> tag.
|
||||
*
|
||||
* Supports the optional attributes:
|
||||
* - format: a java.time.format.DateTimeFormatter pattern
|
||||
* - adjustMonths: number of months to add (negative values subtract)
|
||||
* - adjustDays: number of days to add (negative values subtract)
|
||||
* - adjustMinutes: number of minutes to add (negative values subtract)
|
||||
* - adjustSeconds: number of seconds to add (negative values subtract)
|
||||
*
|
||||
* @param tag - the full xml tag string, e.g. <timestamp format="dd.MM.yyyy" />
|
||||
* @return the formatted timestamp
|
||||
*/
|
||||
private String computeTimestamp(String tag) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
now = applyAdjustment(now, tag, "adjustMonths", ChronoUnit.MONTHS);
|
||||
now = applyAdjustment(now, tag, "adjustDays", ChronoUnit.DAYS);
|
||||
now = applyAdjustment(now, tag, "adjustMinutes", ChronoUnit.MINUTES);
|
||||
now = applyAdjustment(now, tag, "adjustSeconds", ChronoUnit.SECONDS);
|
||||
|
||||
// Resolve the format pattern, fallback to default if not provided or invalid
|
||||
String format = XMLParser.findAttribute(tag, "format");
|
||||
String pattern = (format != null && !format.isEmpty()) ? format : DEFAULT_FORMAT;
|
||||
|
||||
try {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
return now.format(formatter);
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.log(Level.WARNING, "invalid format pattern ''{0}'' - using default format", pattern);
|
||||
return now.format(DateTimeFormatter.ofPattern(DEFAULT_FORMAT));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads the given attribute from the tag and, if present, adjusts the
|
||||
* given LocalDateTime by that amount using the specified ChronoUnit.
|
||||
*
|
||||
* @param dateTime - the date/time to adjust
|
||||
* @param tag - the full xml tag string
|
||||
* @param attributeName - the attribute name to look up (e.g. "adjustDays")
|
||||
* @param unit - the ChronoUnit to apply the value with
|
||||
* @return the adjusted LocalDateTime, or the unchanged input if the
|
||||
* attribute is missing or invalid
|
||||
*/
|
||||
private LocalDateTime applyAdjustment(LocalDateTime dateTime, String tag, String attributeName, ChronoUnit unit) {
|
||||
String value = XMLParser.findAttribute(tag, attributeName);
|
||||
if (value != null && !value.isEmpty()) {
|
||||
try {
|
||||
long amount = Long.parseLong(value.trim());
|
||||
return dateTime.plus(amount, unit);
|
||||
} catch (NumberFormatException e) {
|
||||
logger.log(Level.WARNING, "invalid {0} value ''{1}'' - ignoring",
|
||||
new Object[] { attributeName, value });
|
||||
}
|
||||
}
|
||||
return dateTime;
|
||||
}
|
||||
}
|
||||
|
|
@ -123,26 +123,34 @@ public class BusinessPartnerService {
|
|||
* Diese Methode aktualisiert das business Partner object. Sie wird von den
|
||||
* Invoice Plugins genutzt. Die Methode wirft eine PluginException falls das
|
||||
* BusinessPartner Objekt gesperrt oder in verification ist!
|
||||
*
|
||||
* <p>
|
||||
* Gleichzeitig wird bei Rechnungen in Abhängigkeit der Rechnungsart die
|
||||
* dbtr./cdtr. items sowie mail und country aktualisiert.
|
||||
* <p>
|
||||
* Die Methode wirft eine Plugin Exception falls der Business Partner im Status
|
||||
* Verification ist und updateWhenVerification=false.
|
||||
* <p>
|
||||
* Die Methode wirft eine Plugin Exception falls der Business Partner im Status
|
||||
* Locked ist und updateWhenLocked=false.
|
||||
*
|
||||
* @param partnerID
|
||||
* @param workitem
|
||||
* @param invoice
|
||||
* @return BusinessPartner Object
|
||||
* @throws PluginException
|
||||
*/
|
||||
public ItemCollection updateBusinessPartnerData(ItemCollection workitem) throws PluginException {
|
||||
String partnerID = workitem.getItemValueString("partner.id").trim();
|
||||
// Migration wenn keine partner.id existier!
|
||||
public ItemCollection updateBusinessPartnerData(ItemCollection invoice, boolean updateWhenVerification,
|
||||
boolean updateWhenLocked)
|
||||
throws PluginException {
|
||||
String partnerID = invoice.getItemValueString("partner.id").trim();
|
||||
// Migration wenn keine partner.id existiert!
|
||||
if (partnerID.isEmpty()) {
|
||||
if (InvoiceUtil.isCreditorInvoice(workitem)) {
|
||||
partnerID = InvoiceUtil.buildBPID(workitem.getItemValueString("cdtr.number"));
|
||||
if (InvoiceUtil.isCreditorInvoice(invoice)) {
|
||||
partnerID = InvoiceUtil.buildBPID(invoice.getItemValueString("cdtr.number"));
|
||||
}
|
||||
if (InvoiceUtil.isDebitorInvoice(workitem)) {
|
||||
partnerID = InvoiceUtil.buildBPID(workitem.getItemValueString("dbtr.number"));
|
||||
if (InvoiceUtil.isDebitorInvoice(invoice)) {
|
||||
partnerID = InvoiceUtil.buildBPID(invoice.getItemValueString("dbtr.number"));
|
||||
}
|
||||
workitem.setItemValue("partner.id", partnerID);
|
||||
invoice.setItemValue("partner.id", partnerID);
|
||||
}
|
||||
|
||||
if (partnerID == null || partnerID.isEmpty()) {
|
||||
|
|
@ -164,40 +172,40 @@ public class BusinessPartnerService {
|
|||
Integer.parseInt(partnerID);
|
||||
// it is an int - get last 4 digits
|
||||
partnerID = "BP" + partnerID.substring(Math.max(0, partnerID.length() - 4));
|
||||
workitem.setItemValue("partner.id", partnerID);
|
||||
invoice.setItemValue("partner.id", partnerID);
|
||||
businessPartner = getBusinessPartnerByID(partnerID);
|
||||
} catch (NumberFormatException e) {
|
||||
/* not an int */
|
||||
}
|
||||
if (businessPartner == null) {
|
||||
workitem.removeItem("partner.id");
|
||||
invoice.removeItem("partner.id");
|
||||
logger.warning("Business Partner for Partner ID " + partnerID + " not found!");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
// because the method can be called multiple times within one worklfow
|
||||
// processing cycle
|
||||
// we need to load the object within the current transaction context
|
||||
// because the method can be called multiple times within one workflow
|
||||
// processing cycle we need to load the object within the current transaction
|
||||
// context
|
||||
businessPartner = documentService.load(businessPartner.getUniqueID());
|
||||
if (businessPartner != null) {
|
||||
// update partner id data
|
||||
workitem.setItemValue("partner.id", partnerID);
|
||||
workitem.setItemValue("partner.name", businessPartner.getItemValueString("partner.name"));
|
||||
invoice.setItemValue("partner.id", partnerID);
|
||||
invoice.setItemValue("partner.name", businessPartner.getItemValueString("partner.name"));
|
||||
logger.info("check invoice type....");
|
||||
// Update Invoice Partner Meta Data
|
||||
if (InvoiceUtil.isDebitorInvoice(workitem)) {
|
||||
if (InvoiceUtil.isDebitorInvoice(invoice)) {
|
||||
logger.info("...is debitor invoice");
|
||||
workitem.setItemValue("dbtr.number", businessPartner.getItemValueString("dbtr.number"));
|
||||
workitem.setItemValue("dbtr.name", businessPartner.getItemValueString("partner.name"));
|
||||
workitem.setItemValue("dbtr.mail", businessPartner.getItemValueString("dbtr.mail"));
|
||||
workitem.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
|
||||
invoice.setItemValue("dbtr.number", businessPartner.getItemValueString("dbtr.number"));
|
||||
invoice.setItemValue("dbtr.name", businessPartner.getItemValueString("partner.name"));
|
||||
invoice.setItemValue("dbtr.mail", businessPartner.getItemValue("dbtr.mail"));
|
||||
invoice.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
|
||||
}
|
||||
logger.info("...is creditor invoice");
|
||||
if (InvoiceUtil.isCreditorInvoice(workitem)) {
|
||||
workitem.setItemValue("cdtr.name", businessPartner.getItemValueString("partner.name"));
|
||||
workitem.setItemValue("cdtr.mail", businessPartner.getItemValueString("cdtr.mail"));
|
||||
workitem.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
|
||||
if (InvoiceUtil.isCreditorInvoice(invoice)) {
|
||||
invoice.setItemValue("cdtr.name", businessPartner.getItemValueString("partner.name"));
|
||||
invoice.setItemValue("cdtr.mail", businessPartner.getItemValue("cdtr.mail"));
|
||||
invoice.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
|
||||
|
||||
/*
|
||||
* Sonderfall - Frau Mahner 9.10.2025
|
||||
|
|
@ -205,25 +213,25 @@ public class BusinessPartnerService {
|
|||
* ein alternatives Konto gewählt hat muss dieses gewinnen!
|
||||
* Ansonsten nehmen wir die cdtr.number
|
||||
*/
|
||||
if ("credit".equals(workitem.getItemValueString("payment.type"))) {
|
||||
String bookingAccount = workitem.getItemValueString("payment.booking.account");
|
||||
if ("credit".equals(invoice.getItemValueString("payment.type"))) {
|
||||
String bookingAccount = invoice.getItemValueString("payment.booking.account");
|
||||
if (!bookingAccount.isBlank()) {
|
||||
workitem.setItemValue("cdtr.number", bookingAccount);
|
||||
invoice.setItemValue("cdtr.number", bookingAccount);
|
||||
} else {
|
||||
workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
|
||||
invoice.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
|
||||
}
|
||||
} else {
|
||||
// default - cdtr.number
|
||||
workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
|
||||
invoice.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
|
||||
}
|
||||
}
|
||||
|
||||
// Validate Business Partner Status!
|
||||
if (businessPartner.getTaskID() == TASK_VERIFICATION) {
|
||||
if (businessPartner.getTaskID() == TASK_VERIFICATION && !updateWhenVerification) {
|
||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_VERIFICATION,
|
||||
"Businesspartner is in verification. Invoice can't be processed!");
|
||||
}
|
||||
if (businessPartner.getTaskID() == TASK_LOCKED) {
|
||||
if (businessPartner.getTaskID() == TASK_LOCKED && !updateWhenLocked) {
|
||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_LOCKED,
|
||||
"Businesspartner is locked. Invoice can't be processed!");
|
||||
}
|
||||
|
|
@ -254,6 +262,7 @@ public class BusinessPartnerService {
|
|||
* @return
|
||||
*/
|
||||
public List<ItemCollection> findOutgoingInvoices(String _dbtrNumber) {
|
||||
logger.info("search outgoing invoices....");
|
||||
// Aus der dbtrNummer muss das führendde D entfernt werden
|
||||
String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*)";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue