Compare commits

..

No commits in common. "master" and "office-alexander-logistics-1.3.4" have entirely different histories.

577 changed files with 406250 additions and 260154 deletions

2
.gitignore vendored
View file

@ -13,11 +13,9 @@ target/
.metadata/ .metadata/
.project .project
.classpath .classpath
.env
# ignore docker deployments # ignore docker deployments
docker/deployments/ docker/deployments/
docker/keys/imixs-llm.xml
# Sepa Report # Sepa Report
reports/sepa/result_sepa* reports/sepa/result_sepa*

View file

@ -1,7 +1,11 @@
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17 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/
# Deploy artefact # Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/* RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
# Deploy artefact COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/

View file

@ -1,8 +1,10 @@
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17 FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
#FROM imixs/imixs-office-workflow:5.1.0
# Deploy artefact # Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/* RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/ COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
# Run in Debug Mode # Run in Debug Mode
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"] CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]

View file

@ -1,48 +1,6 @@
# Versionen # Versionen
## 1.4.0 (Development) ## 1.3.4 (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 - Finalisierung Business Partner Interface
|- Neue Plugin Logik (Aktualisierung der BP Nummer und Aktivierung von BP Objekten falls diese archiviert waren) |- Neue Plugin Logik (Aktualisierung der BP Nummer und Aktivierung von BP Objekten falls diese archiviert waren)
@ -58,6 +16,7 @@ Im Dokument Import 'CARGOSOFT_INVOCIE_XML' muss die Task ID von 5001 auf 4000 ge
#### Daten Synchronisation BUsiness Parnter #### Daten Synchronisation BUsiness Parnter
- Erstmal nach Dubletten suchen: - Erstmal nach Dubletten suchen:
- https://alexander-logistics-xxx.office-workflow.de/api/cargosoft/remove-dubletten?maxcount=5000 - https://alexander-logistics-xxx.office-workflow.de/api/cargosoft/remove-dubletten?maxcount=5000
ACHTUNG kann sehr lange laufen (1 Stunde) ACHTUNG kann sehr lange laufen (1 Stunde)
@ -122,6 +81,7 @@ set ARCHIVE_SNAPSHOT_COMPACTOR= enabled
1. Parameter Pflegen 1. Parameter Pflegen
a) Währungen pflegen a) Währungen pflegen
- DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
- PL = PLN;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 - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
@ -140,6 +100,7 @@ set ARCHIVE_SNAPSHOT_COMPACTOR= enabled
1. Paramter Pflegen 1. Paramter Pflegen
a) Währungen pflegen a) Währungen pflegen
- DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD
- PL = PLN;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 - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD

View file

@ -1,204 +0,0 @@
# 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.

View file

@ -1,22 +0,0 @@
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"

4
devi
View file

@ -53,13 +53,15 @@ fi
if [[ "$(strip_dash $1)" == "hot" ]]; then if [[ "$(strip_dash $1)" == "hot" ]]; then
echo "* Hotdeploy..." echo "* Hotdeploy..."
cd *-app
mvn manik-hotdeploy:hotdeploy mvn manik-hotdeploy:hotdeploy
cd ..
fi fi
if [[ "$(strip_dash $1)" == "deploy" ]]; then if [[ "$(strip_dash $1)" == "deploy" ]]; then
echo " Deploy to Imixs-Cloud..." echo " Deploy to Imixs-Cloud..."
mvn clean install -Pimixs-cloud -DskipTests mvn clean install -Pkubernetes -DskipTests
fi fi

96
doc/FTP.md Normal file
View file

@ -0,0 +1,96 @@
# 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.

View file

@ -0,0 +1,49 @@
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

76
doc/KSeF/KSEF_CLIENT.md Normal file
View file

@ -0,0 +1,76 @@
# 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>
...
```

View file

@ -6,29 +6,6 @@ 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. 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 ## Components
### 1. KSeFAuthManager ### 1. KSeFAuthManager
@ -188,127 +165,10 @@ The implementation uses `PluginException` for error handling with two error type
- Java 11+ (HttpClient, Crypto APIs) - Java 11+ (HttpClient, Crypto APIs)
- Imixs Workflow (for document management) - Imixs Workflow (for document management)
# Validate XML ## References
To validate XML results use xmllint. To install run: - [KSeF Official Documentation](https://www.gov.pl/web/kas/ksef)
- [KSeF API Specification](https://ksef-test.mf.gov.pl/docs/v2/index.html)
```bash - [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)
$ sudo apt install libxml2-utils - [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)
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

View file

@ -1,26 +0,0 @@
# 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 | | | | |

File diff suppressed because it is too large Load diff

View file

@ -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/2025/06/25/13775/" targetNamespace="http://crd.gov.pl/wzor/2025/06/25/13775/" 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/2023/06/29/12648/" targetNamespace="http://crd.gov.pl/wzor/2023/06/29/12648/" 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: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:simpleType name="TKodyKrajowUE">
<xsd:annotation> <xsd:annotation>
@ -997,11 +997,6 @@
<xsd:documentation>DOLAR WSCHODNIO­KARAIBSKI</xsd:documentation> <xsd:documentation>DOLAR WSCHODNIO­KARAIBSKI</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="XCG">
<xsd:annotation>
<xsd:documentation>GULDEN KARAIBSKI</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XDR"> <xsd:enumeration value="XDR">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>SDR MIĘDZYNARODOWY FUNDUSZ WALUTOWY</xsd:documentation> <xsd:documentation>SDR MIĘDZYNARODOWY FUNDUSZ WALUTOWY</xsd:documentation>
@ -1081,7 +1076,7 @@
<xsd:complexType> <xsd:complexType>
<xsd:simpleContent> <xsd:simpleContent>
<xsd:extension base="tns:TKodFormularza"> <xsd:extension base="tns:TKodFormularza">
<xsd:attribute name="kodSystemowy" type="xsd:string" use="required" fixed="FA (3)"/> <xsd:attribute name="kodSystemowy" type="xsd:string" use="required" fixed="FA (2)"/>
<xsd:attribute name="wersjaSchemy" type="xsd:string" use="required" fixed="1-0E"/> <xsd:attribute name="wersjaSchemy" type="xsd:string" use="required" fixed="1-0E"/>
</xsd:extension> </xsd:extension>
</xsd:simpleContent> </xsd:simpleContent>
@ -1090,7 +1085,7 @@
<xsd:element name="WariantFormularza"> <xsd:element name="WariantFormularza">
<xsd:simpleType> <xsd:simpleType>
<xsd:restriction base="xsd:byte"> <xsd:restriction base="xsd:byte">
<xsd:enumeration value="3"/> <xsd:enumeration value="2"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
</xsd:element> </xsd:element>
@ -1100,7 +1095,7 @@
</xsd:annotation> </xsd:annotation>
<xsd:simpleType> <xsd:simpleType>
<xsd:restriction base="etd:TDataCzas"> <xsd:restriction base="etd:TDataCzas">
<xsd:minInclusive value="2025-09-01T00:00:00Z"/> <xsd:minInclusive value="2022-01-01T00:00:00Z"/>
<xsd:maxInclusive value="2050-01-01T23:59:59Z"/> <xsd:maxInclusive value="2050-01-01T23:59:59Z"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
@ -1176,15 +1171,6 @@
<xsd:maxLength value="256"/> <xsd:maxLength value="256"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </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:simpleType name="TZnakowy20">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Typ znakowy ograniczony do 20 znaków</xsd:documentation> <xsd:documentation>Typ znakowy ograniczony do 20 znaków</xsd:documentation>
@ -1270,15 +1256,6 @@
<xsd:maxInclusive value="2050-01-01"/> <xsd:maxInclusive value="2050-01-01"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </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:simpleType name="TDataCzas">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Data i czas zdarzenia w okresie od 01.10.2021T00:00:00Z do 01.01.2050T23:59:59Z</xsd:documentation> <xsd:documentation>Data i czas zdarzenia w okresie od 01.10.2021T00:00:00Z do 01.01.2050T23:59:59Z</xsd:documentation>
@ -1309,8 +1286,7 @@
<xsd:documentation>Numer rachunku</xsd:documentation> <xsd:documentation>Numer rachunku</xsd:documentation>
</xsd:annotation> </xsd:annotation>
<xsd:restriction base="xsd:string"> <xsd:restriction base="xsd:string">
<xsd:minLength value="10"/> <xsd:pattern value="[0-9A-Z]{10,32}"/>
<xsd:maxLength value="34"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="SWIFT_Type"> <xsd:simpleType name="SWIFT_Type">
@ -1494,7 +1470,7 @@
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="2"> <xsd:enumeration value="2">
<xsd:annotation> <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ł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: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:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="3"> <xsd:enumeration value="3">
@ -1562,7 +1538,7 @@
<xsd:sequence> <xsd:sequence>
<xsd:choice> <xsd:choice>
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
<xsd:element name="NIP" type="etd:TNrNIP"> <xsd:element name="NIP" type="etd:TNrNIP">
<xsd:annotation> <xsd:annotation>
@ -1592,7 +1568,9 @@
<xsd:documentation>Identyfikator podatkowy inny</xsd:documentation> <xsd:documentation>Identyfikator podatkowy inny</xsd:documentation>
</xsd:annotation> </xsd:annotation>
<xsd:simpleType> <xsd:simpleType>
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej"/> <xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej">
<xsd:pattern value="[a-zA-Z0-9]{1,50}"/>
</xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -1621,7 +1599,7 @@
<xsd:sequence> <xsd:sequence>
<xsd:choice> <xsd:choice>
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
<xsd:element name="NIP" type="etd:TNrNIP"> <xsd:element name="NIP" type="etd:TNrNIP">
<xsd:annotation> <xsd:annotation>
@ -1656,7 +1634,9 @@
<xsd:documentation>Identyfikator podatkowy inny</xsd:documentation> <xsd:documentation>Identyfikator podatkowy inny</xsd:documentation>
</xsd:annotation> </xsd:annotation>
<xsd:simpleType> <xsd:simpleType>
<xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej"/> <xsd:restriction base="etd:TNrIdentyfikacjiPodatkowej">
<xsd:pattern value="[a-zA-Z0-9]{1,50}"/>
</xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -1722,7 +1702,7 @@
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="3"> <xsd:enumeration value="3">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
</xsd:restriction> </xsd:restriction>
@ -1734,32 +1714,32 @@
<xsd:restriction base="xsd:integer"> <xsd:restriction base="xsd:integer">
<xsd:enumeration value="1"> <xsd:enumeration value="1">
<xsd:annotation> <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:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="2"> <xsd:enumeration value="2">
<xsd:annotation> <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:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="3"> <xsd:enumeration value="3">
<xsd:annotation> <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 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: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:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="4"> <xsd:enumeration value="4">
<xsd:annotation> <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:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="5"> <xsd:enumeration value="5">
<xsd:annotation> <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:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="6"> <xsd:enumeration value="6">
<xsd:annotation> <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:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="7"> <xsd:enumeration value="7">
@ -1782,11 +1762,6 @@
<xsd:documentation>Członek grupy VAT - odbiorca</xsd:documentation> <xsd:documentation>Członek grupy VAT - odbiorca</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="11">
<xsd:annotation>
<xsd:documentation>Pracownik</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="TNumerTelefonu"> <xsd:simpleType name="TNumerTelefonu">
@ -1814,7 +1789,7 @@
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="ZAL"> <xsd:enumeration value="ZAL">
<xsd:annotation> <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 (faktura zaliczkowa)</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</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="ROZ"> <xsd:enumeration value="ROZ">
@ -1829,7 +1804,7 @@
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="KOR_ZAL"> <xsd:enumeration value="KOR_ZAL">
<xsd:annotation> <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 (faktura korygująca fakturę zaliczkową)</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</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="KOR_ROZ"> <xsd:enumeration value="KOR_ROZ">
@ -1873,21 +1848,7 @@
<xsd:enumeration value="5"/> <xsd:enumeration value="5"/>
<xsd:enumeration value="4"/> <xsd:enumeration value="4"/>
<xsd:enumeration value="3"/> <xsd:enumeration value="3"/>
<xsd:enumeration value="0 KR"> <xsd:enumeration value="0"/>
<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:enumeration value="zw">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>zwolnione od podatku</xsd:documentation> <xsd:documentation>zwolnione od podatku</xsd:documentation>
@ -1898,14 +1859,9 @@
<xsd:documentation>odwrotne obciążenie</xsd:documentation> <xsd:documentation>odwrotne obciążenie</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:enumeration> </xsd:enumeration>
<xsd:enumeration value="np I"> <xsd:enumeration value="np">
<xsd:annotation> <xsd:annotation>
<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:documentation>niepodlegające opodatkowaniu- dostawy towarów oraz świadczenia usług poza terytorium kraju</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:annotation>
</xsd:enumeration> </xsd:enumeration>
</xsd:restriction> </xsd:restriction>
@ -2251,48 +2207,6 @@
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
</xsd:element> </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:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
@ -2322,7 +2236,7 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
<xsd:documentation>Dane identyfikujące podmiot trzeci</xsd:documentation> <xsd:documentation>Dane identyfikujące podmiot trzeci</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="Adres" type="tns:TAdres" minOccurs="0"> <xsd:element name="Adres" type="tns:TAdres">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Adres podmiotu trzeciego</xsd:documentation> <xsd:documentation>Adres podmiotu trzeciego</xsd:documentation>
</xsd:annotation> </xsd:annotation>
@ -2438,13 +2352,13 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:element> </xsd:element>
<xsd:element name="Fa"> <xsd:element name="Fa">
<xsd:annotation> <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:annotation>
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="KodWaluty" type="tns:TKodWaluty"> <xsd:element name="KodWaluty" type="tns:TKodWaluty">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Kod waluty (ISO 4217)</xsd:documentation> <xsd:documentation>Trzyliterowy kod waluty (ISO 4217)</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_1" type="tns:TDataT"> <xsd:element name="P_1" type="tns:TDataT">
@ -2475,7 +2389,7 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:element> </xsd:element>
<xsd:element name="OkresFa"> <xsd:element name="OkresFa">
<xsd:annotation> <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:annotation>
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
@ -2499,17 +2413,17 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:annotation> </xsd:annotation>
<xsd:element name="P_13_1" type="tns:TKwotowy"> <xsd:element name="P_13_1" type="tns:TKwotowy">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_1" type="tns:TKwotowy"> <xsd:element name="P_14_1" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_1W" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_14_1W" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -2519,17 +2433,17 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:annotation> </xsd:annotation>
<xsd:element name="P_13_2" type="tns:TKwotowy"> <xsd:element name="P_13_2" type="tns:TKwotowy">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_2" type="tns:TKwotowy"> <xsd:element name="P_14_2" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_2W" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_14_2W" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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ą 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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -2539,17 +2453,17 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:annotation> </xsd:annotation>
<xsd:element name="P_13_3" type="tns:TKwotowy"> <xsd:element name="P_13_3" type="tns:TKwotowy">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_3" type="tns:TKwotowy"> <xsd:element name="P_14_3" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_3W" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_14_3W" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -2559,17 +2473,17 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:annotation> </xsd:annotation>
<xsd:element name="P_13_4" type="tns:TKwotowy"> <xsd:element name="P_13_4" type="tns:TKwotowy">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_4" type="tns:TKwotowy"> <xsd:element name="P_14_4" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_4W" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_14_4W" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -2579,63 +2493,63 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
</xsd:annotation> </xsd:annotation>
<xsd:element name="P_13_5" type="tns:TKwotowy"> <xsd:element name="P_13_5" type="tns:TKwotowy">
<xsd:annotation> <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 - 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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_14_5" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_14_5" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
<xsd:element name="P_13_6_1" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_6_1" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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 - 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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_6_2" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_6_2" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_6_3" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_6_3" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_7" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_7" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_8" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_8" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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 - wartość 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, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_9" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_9" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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 - wartość 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, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_10" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_10" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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 - 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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_13_11" type="tns:TKwotowy" minOccurs="0"> <xsd:element name="P_13_11" type="tns:TKwotowy" minOccurs="0">
<xsd:annotation> <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 - wartość 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, kwota zaliczki. W przypadku faktur korygujących, kwota różnicy wartości sprzedaży</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_15" type="tns:TKwotowy"> <xsd:element name="P_15" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="KursWalutyZ" type="tns:TIlosci" minOccurs="0"> <xsd:element name="KursWalutyZ" type="tns:TIlosci" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="Adnotacje"> <xsd:element name="Adnotacje">
@ -2646,17 +2560,17 @@ Wartość "2" oznacza, że faktura nie dotyczy jednostki podrzędnej JST</xsd:do
<xsd:sequence> <xsd:sequence>
<xsd:element name="P_16" type="etd:TWybor1_2"> <xsd:element name="P_16" type="etd:TWybor1_2">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_17" type="etd:TWybor1_2"> <xsd:element name="P_17" type="etd:TWybor1_2">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_18" type="etd:TWybor1_2"> <xsd:element name="P_18" type="etd:TWybor1_2">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_18A" type="etd:TWybor1_2"> <xsd:element name="P_18A" type="etd:TWybor1_2">
@ -2671,7 +2585,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence> <xsd:sequence>
<xsd:element name="P_19" type="etd:TWybor1"> <xsd:element name="P_19" type="etd:TWybor1">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:choice> <xsd:choice>
@ -2694,7 +2608,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:sequence> </xsd:sequence>
<xsd:element name="P_19N" type="etd:TWybor1"> <xsd:element name="P_19N" type="etd:TWybor1">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
@ -2756,34 +2670,34 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence> <xsd:sequence>
<xsd:element name="P_22B" type="tns:TZnakowy"> <xsd:element name="P_22B" type="tns:TZnakowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:choice minOccurs="0"> <xsd:choice minOccurs="0">
<xsd:element name="P_22B1" type="tns:TZnakowy" minOccurs="0"> <xsd:element name="P_22B1" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_22B2" type="tns:TZnakowy" minOccurs="0"> <xsd:element name="P_22B2" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_22B3" type="tns:TZnakowy" minOccurs="0"> <xsd:element name="P_22B3" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_22B4" type="tns:TZnakowy" minOccurs="0"> <xsd:element name="P_22B4" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
<xsd:element name="P_22BT" type="tns:TZnakowy" minOccurs="0"> <xsd:element name="P_22BT" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -2826,7 +2740,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="P_23" type="etd:TWybor1_2"> <xsd:element name="P_23" type="etd:TWybor1_2">
<xsd:annotation> <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 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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="PMarzy"> <xsd:element name="PMarzy">
@ -2846,12 +2760,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="P_PMarzy_3_1" type="etd:TWybor1"> <xsd:element name="P_PMarzy_3_1" type="etd:TWybor1">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_PMarzy_3_2" type="etd:TWybor1"> <xsd:element name="P_PMarzy_3_2" type="etd:TWybor1">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_PMarzy_3_3" type="etd:TWybor1"> <xsd:element name="P_PMarzy_3_3" type="etd:TWybor1">
@ -2891,7 +2805,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:documentation>Typ skutku korekty w ewidencji dla podatku od towarów i usług</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="DaneFaKorygowanej" maxOccurs="50000"> <xsd:element name="DaneFaKorygowanej" maxOccurs="unbounded">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Dane faktury korygowanej</xsd:documentation> <xsd:documentation>Dane faktury korygowanej</xsd:documentation>
</xsd:annotation> </xsd:annotation>
@ -2965,7 +2879,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="Podmiot2K" minOccurs="0" maxOccurs="101"> <xsd:element name="Podmiot2K" minOccurs="0" maxOccurs="101">
<xsd:annotation> <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 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: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:annotation> </xsd:annotation>
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
@ -2995,12 +2909,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence minOccurs="0"> <xsd:sequence minOccurs="0">
<xsd:element name="P_15ZK" type="tns:TKwotowy"> <xsd:element name="P_15ZK" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="KursWalutyZK" type="tns:TIlosci" minOccurs="0"> <xsd:element name="KursWalutyZK" type="tns:TIlosci" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -3018,12 +2932,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="P_15Z" type="tns:TKwotowy"> <xsd:element name="P_15Z" type="tns:TKwotowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="KursWalutyZW" type="tns:TIlosci" minOccurs="0"> <xsd:element name="KursWalutyZW" type="tns:TIlosci" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -3077,7 +2991,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="FaWiersz" minOccurs="0" maxOccurs="10000"> <xsd:element name="FaWiersz" minOccurs="0" maxOccurs="10000">
<xsd:annotation> <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 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: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:annotation> </xsd:annotation>
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
@ -3093,10 +3007,10 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="P_6A" type="tns:TDataT" minOccurs="0"> <xsd:element name="P_6A" type="tns:TDataT" minOccurs="0">
<xsd:annotation> <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ę w 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ę dla przypadku, gdy dla poszczególnych pozycji faktury występują różne daty</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_7" type="tns:TZnakowy512" minOccurs="0"> <xsd:element name="P_7" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <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: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> </xsd:annotation>
@ -3198,7 +3112,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="KursWaluty" type="tns:TIlosci" minOccurs="0"> <xsd:element name="KursWaluty" type="tns:TIlosci" minOccurs="0">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="StanPrzed" type="etd:TWybor1" minOccurs="0"> <xsd:element name="StanPrzed" type="etd:TWybor1" minOccurs="0">
@ -3288,7 +3202,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence> <xsd:sequence>
<xsd:element name="Zaplacono" type="etd:TWybor1"> <xsd:element name="Zaplacono" type="etd:TWybor1">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Znacznik informujący, że należność wynikająca z faktury została zapłacona: 1 - zapłacono</xsd:documentation> <xsd:documentation>Znacznik informujący, że kwota należności wynikająca z faktury została zapłacona: 1 - zapłacono</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="DataZaplaty" type="tns:TData"> <xsd:element name="DataZaplaty" type="tns:TData">
@ -3298,9 +3212,9 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
<xsd:sequence> <xsd:sequence>
<xsd:element name="ZnacznikZaplatyCzesciowej" type="etd:TWybor1_2"> <xsd:element name="ZnacznikZaplatyCzesciowej" type="etd:TWybor1">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="ZaplataCzesciowa" maxOccurs="100"> <xsd:element name="ZaplataCzesciowa" maxOccurs="100">
@ -3319,25 +3233,6 @@ 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:documentation>Data zapłaty częściowej, jeśli do wystawienia faktury płatność częściowa została dokonana</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </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:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
@ -3345,23 +3240,16 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:choice> </xsd:choice>
<xsd:element name="TerminPlatnosci" minOccurs="0" maxOccurs="100"> <xsd:element name="TerminPlatnosci" minOccurs="0" maxOccurs="100">
<xsd:complexType> <xsd:complexType>
<xsd:sequence minOccurs="0"> <xsd:sequence>
<xsd:element name="Termin" type="tns:TData" minOccurs="0"> <xsd:element name="Termin" type="tns:TData">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Termin płatności</xsd:documentation> <xsd:documentation>Termin płatności</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="TerminOpis" minOccurs="0"> <xsd:element name="TerminOpis" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Opis terminu płatności</xsd:documentation> <xsd:documentation>Opis terminu płatności</xsd:documentation>
</xsd:annotation> </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:element>
</xsd:sequence> </xsd:sequence>
</xsd:complexType> </xsd:complexType>
@ -3380,7 +3268,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="OpisPlatnosci" type="tns:TZnakowy"> <xsd:element name="OpisPlatnosci" type="tns:TZnakowy">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Uszczegółowienie innej formy płatności</xsd:documentation> <xsd:documentation>Doprecyzowanie innej formy płatności</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -3403,7 +3291,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence> <xsd:sequence>
<xsd:element name="WarunkiSkonta" type="tns:TZnakowy"> <xsd:element name="WarunkiSkonta" type="tns:TZnakowy">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="WysokoscSkonta" type="tns:TZnakowy"> <xsd:element name="WysokoscSkonta" type="tns:TZnakowy">
@ -3414,27 +3302,6 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:sequence> </xsd:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </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]*&amp;)?IPKSeF=[0-9]{3}[a-zA-Z0-9]{10}(&amp;[^#\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:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
@ -3447,7 +3314,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:element name="Umowy" minOccurs="0" maxOccurs="100"> <xsd:element name="Umowy" minOccurs="0" maxOccurs="100">
<xsd:complexType> <xsd:complexType>
<xsd:sequence minOccurs="0"> <xsd:sequence minOccurs="0">
<xsd:element name="DataUmowy" type="tns:TDataU" minOccurs="0"> <xsd:element name="DataUmowy" type="tns:TData" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Data umowy</xsd:documentation> <xsd:documentation>Data umowy</xsd:documentation>
</xsd:annotation> </xsd:annotation>
@ -3463,7 +3330,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:element name="Zamowienia" minOccurs="0" maxOccurs="100"> <xsd:element name="Zamowienia" minOccurs="0" maxOccurs="100">
<xsd:complexType> <xsd:complexType>
<xsd:sequence minOccurs="0"> <xsd:sequence minOccurs="0">
<xsd:element name="DataZamowienia" type="tns:TDataU" minOccurs="0"> <xsd:element name="DataZamowienia" type="tns:TData" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Data zamówienia</xsd:documentation> <xsd:documentation>Data zamówienia</xsd:documentation>
</xsd:annotation> </xsd:annotation>
@ -3489,12 +3356,12 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
<xsd:sequence minOccurs="0"> <xsd:sequence minOccurs="0">
<xsd:element name="KursUmowny" type="tns:TIlosci"> <xsd:element name="KursUmowny" type="tns:TIlosci">
<xsd:annotation> <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:annotation>
</xsd:element> </xsd:element>
<xsd:element name="WalutaUmowna" type="tns:TKodWaluty"> <xsd:element name="WalutaUmowna" type="tns:TKodWaluty">
<xsd:annotation> <xsd:annotation>
<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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -3607,7 +3474,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="Zamowienie" minOccurs="0"> <xsd:element name="Zamowienie" minOccurs="0">
<xsd:annotation> <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 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: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:annotation> </xsd:annotation>
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
@ -3632,7 +3499,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:documentation>Uniwersalny unikalny numer wiersza zamówienia lub umowy</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="P_7Z" type="tns:TZnakowy512" minOccurs="0"> <xsd:element name="P_7Z" type="tns:TZnakowy" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>Nazwa (rodzaj) towaru lub usługi</xsd:documentation> <xsd:documentation>Nazwa (rodzaj) towaru lub usługi</xsd:documentation>
</xsd:annotation> </xsd:annotation>
@ -3719,7 +3586,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="StanPrzedZ" type="etd:TWybor1" minOccurs="0"> <xsd:element name="StanPrzedZ" type="etd:TWybor1" minOccurs="0">
<xsd:annotation> <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 (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: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:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
</xsd:sequence> </xsd:sequence>
@ -3764,7 +3631,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="KRS" type="etd:TNrKRS" minOccurs="0"> <xsd:element name="KRS" type="etd:TNrKRS" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>KRS</xsd:documentation> <xsd:documentation>Numer Krajowego Rejestru Sądowego</xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:element> </xsd:element>
<xsd:element name="REGON" type="etd:TNrREGON" minOccurs="0"> <xsd:element name="REGON" type="etd:TNrREGON" minOccurs="0">
@ -3774,7 +3641,7 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:element> </xsd:element>
<xsd:element name="BDO" minOccurs="0"> <xsd:element name="BDO" minOccurs="0">
<xsd:annotation> <xsd:annotation>
<xsd:documentation>BDO</xsd:documentation> <xsd:documentation>Numer w Bazie Danych o Odpadach</xsd:documentation>
</xsd:annotation> </xsd:annotation>
<xsd:simpleType> <xsd:simpleType>
<xsd:restriction base="tns:TZnakowy"> <xsd:restriction base="tns:TZnakowy">
@ -3788,162 +3655,6 @@ dokonaną na rzecz podatnika dostawę towarów lub świadczenie usług, o który
</xsd:sequence> </xsd:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </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:sequence>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>

View file

@ -1,75 +0,0 @@
<?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>

5
doc/MAIL.md Normal file
View file

@ -0,0 +1,5 @@
# Mail
Testen von Mailing kann man über
https://www.mail-tester.com/

1
doc/id_rsa_cargosoft.pub Normal file
View file

@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnGiu0PUBl+G++vHrGP5wDRit4mXF4hXTyzUem3BPADaV0DUuYN1Fx5RpDl2F8mhnqDYcyCTBzLTJ+0jFqq1pzoJW5ZWZ+hSChabVCV4m8UkFkhbRmjxNkPx26ZMhfTD1mDqgCKQ+bbt1mi04UZppDKBr+9ZrMG3d0odHblEJHixtJ7Hqr9vvXXbvNv4E9B/9dlW57oyEUk/vKmwuLyGAsDjxjfB3W+Faab+gev8VDwJxdbD90HX0O2Az05wy9EC7M3pujcawsHdaFXgFFRRwlVuUkX3z9hp1Uekqg0N81hty7/i8GiZ9/m3Y6hIA5eRM4ZpDQFEF8SY9TLSzDehNoQ== seesped@cargodb

78
doc/zoho/SECRETS.md Normal file
View file

@ -0,0 +1,78 @@
# 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

View file

@ -25,7 +25,7 @@ services:
POSTGRES_CONNECTION: "jdbc:postgresql://db/office-alexander-logistics" POSTGRES_CONNECTION: "jdbc:postgresql://db/office-alexander-logistics"
TZ: "CET" TZ: "CET"
LANG: "en_US.UTF-8" LANG: "en_US.UTF-8"
MAILGATEWAY: "mailpit" MAILGATEWAY: "mailgateway"
ASYNCEVENT_PROCESSOR_ENABLED: "true" ASYNCEVENT_PROCESSOR_ENABLED: "true"
ASYNCEVENT_PROCESSOR_INITIALDELAY: "10000" ASYNCEVENT_PROCESSOR_INITIALDELAY: "10000"
@ -41,13 +41,8 @@ services:
WORKFLOW_SERVICE_USER: "admin" WORKFLOW_SERVICE_USER: "admin"
WORKFLOW_SERVICE_PASSWORD: "adminadmin" WORKFLOW_SERVICE_PASSWORD: "adminadmin"
# LLM Integration LLM_SERVICE_ENDPOINT_USER: "admin"
LLM_CONFIG_FILE: /opt/jboss/imixs-llm.xml LLM_SERVICE_ENDPOINT_PASSWORD: "imixs4.null"
# 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" METRICS_ENABLED: "false"
@ -57,8 +52,6 @@ services:
- "8787:8787" - "8787:8787"
volumes: volumes:
- ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/ - ./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 # Tika OCR Service
@ -103,15 +96,12 @@ services:
############################################### ###############################################
# Mailgateway # Mailgateway
############################################### ###############################################
mailpit: mailgateway:
image: axllent/mailpit:latest image: imixs/exim4
container_name: mailpit
environment: environment:
MP_SMTP_BIND_ADDR: "0.0.0.0:25" EXIM_SMARTHOST: "www149.your-server.de:25"
ports: EXIM_PASSWORD: "www149.your-server.de:webmaster@imixs.com:$MAILPASSWORD"
- "1025:25" # Host:1025 -> Container:25 (SMTP) EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.18.0.0/12:192.168.0.0/16"
- "8025:8025" # Web UI
restart: unless-stopped
# prometheus: # prometheus:
# image: prom/prometheus:latest # image: prom/prometheus:latest

View file

@ -1,4 +0,0 @@
# LLM Config
LLM_API_ENDPOINT=https://api.llama.cpp.imixs.com/
LLM_API_KEY=7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321

View file

@ -1,55 +0,0 @@
<?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 Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
############################################################
# Setup hotdeploy
#
############################################################
cd office-alexander-logistics-app
mvn manik-hotdeploy:hotdeploy
cd ..

53
models/README.md Executable file
View file

@ -0,0 +1,53 @@
# 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

491
models/TEST_PROTOKOLL.md Normal file
View file

@ -0,0 +1,491 @@
# 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

View file

@ -0,0 +1,128 @@
[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]

View file

@ -0,0 +1,38 @@
{
"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":[
]
}

View file

@ -0,0 +1,13 @@
{
"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.

View file

@ -0,0 +1 @@
¥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

View file

@ -0,0 +1 @@
<EFBFBD>

View file

@ -0,0 +1 @@
<EFBFBD>

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,3 @@
{
"mode":"default"
}

View file

@ -0,0 +1,127 @@
[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]

View file

@ -0,0 +1,40 @@
{
"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":{
}
}

View file

@ -0,0 +1,13 @@
{
"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.

View file

@ -0,0 +1 @@
¥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

View file

@ -0,0 +1 @@
<EFBFBD>

View file

@ -0,0 +1 @@
<EFBFBD>

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,128 @@
[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]

View file

@ -0,0 +1,38 @@
{
"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":[
]
}

View file

@ -0,0 +1,13 @@
{
"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.

View file

@ -0,0 +1 @@
¥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

View file

@ -0,0 +1 @@
<EFBFBD>

View file

@ -0,0 +1 @@
<EFBFBD>

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,3 @@
{
"mode":"default"
}

44
models/model-analyze-prod.xml Executable file
View file

@ -0,0 +1,44 @@
<?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>

53
models/model-train-prod.xml Executable file
View file

@ -0,0 +1,53 @@
<?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&amp;retrain_rate=100</value>
</item>
</document>

48
models/model-valiate-prod.xml Executable file
View file

@ -0,0 +1,48 @@
<?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>

View file

@ -0,0 +1 @@
/target/

View file

@ -0,0 +1,420 @@
<?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>

View file

@ -120,57 +120,55 @@ public class AGLAnalyticControllerDebitor implements Serializable {
link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr(); link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr();
} }
if ("analytic.invoices.count.all".equals(event.getKey())) { if ("analytic.invoices.count.all".equals(event.getKey())) {
event.getData().setItemValue("value", countAll); event.setValue("" + countAll);
event.getData().setItemValue("label", formatTotals(totalAllCurrency1, totalAllCurrency2)); event.setLabel(formatTotals(totalAllCurrency1, totalAllCurrency2));
event.getData().setItemValue("description", "Total invoices"); event.setDescription("Total invoices");
event.getWorkitem().setItemValue("invoices.total", countAll); event.getWorkitem().setItemValue("invoices.total", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.invoices.count.open".equals(event.getKey())) { if ("analytic.invoices.count.open".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countOpen); event.setValue("" + countOpen);
event.getData().setItemValue("label", formatTotals(totalOpenCurrency1, totalOpenCurrency2)); event.setLabel(formatTotals(totalOpenCurrency1, totalOpenCurrency2));
event.getData().setItemValue("description", "Total invoices not yet in due"); event.setDescription("Total invoices not yet in due");
event.getWorkitem().setItemValue("invoices.total.open", countOpen); event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.invoices.count.due".equals(event.getKey())) { if ("analytic.invoices.count.due".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countDue); event.setValue("" + countDue);
event.getData().setItemValue("label", formatTotals(totalDueCurrency1, totalDueCurrency2)); event.setLabel(formatTotals(totalDueCurrency1, totalDueCurrency2));
event.getData().setItemValue("description", "Total invoices in due"); event.setDescription("Total invoices in due");
event.getWorkitem().setItemValue("invoices.total.due", countDue); event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.invoices.count.dunning".equals(event.getKey())) { if ("analytic.invoices.count.dunning".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countDunning); event.setValue("" + countDunning);
event.getData().setItemValue("label", formatTotals(totalDunningCurrency1, totalDunningCurrency2)); event.setLabel(formatTotals(totalDunningCurrency1, totalDunningCurrency2));
event.getData().setItemValue("description", "Total invoices in dunning"); event.setDescription("Total invoices in dunning");
event.getWorkitem().setItemValue("invoices.total.dunning", countDunning); event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.payment.avg.due".equals(event.getKey())) { if ("analytic.payment.avg.due".equals(event.getKey())) {
event.getData().setItemValue("value", "" + averagePaymentDue); event.setValue("" + averagePaymentDue);
event.getData().setItemValue("label", "days"); event.setLabel("days");
event.getData().setItemValue("description", "Average terms of credit in the last 12 months."); event.setDescription("Average terms of credit in the last 12 months.");
event.getWorkitem().setItemValue("payment.avg.due", averagePaymentDue); event.getWorkitem().setItemValue("payment.avg.due", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.payment.avg.days".equals(event.getKey())) { if ("analytic.payment.avg.days".equals(event.getKey())) {
event.getData().setItemValue("value", "" + averagePaymentDays); event.setValue("" + averagePaymentDays);
event.getData().setItemValue("label", "days"); event.setLabel("days");
event.getData().setItemValue("description", "Average duration for payment during the last 12 months."); event.setDescription("Average duration for payment during the last 12 months.");
event.getWorkitem().setItemValue("payment.avg.days", averagePaymentDays); event.getWorkitem().setItemValue("payment.avg.days", event.getValue());
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.invoices.trend".equals(event.getKey())) { if ("analytic.invoices.trend".equals(event.getKey())) {
event.getData().setItemValue("value", chartData); event.setValue(chartData);
event.getData().setItemValue("label", "Payment duration in days"); event.setLabel("Payment duration in days");
event.getData().setItemValue("description", "Payment practice by week"); event.setDescription("Payment practice by week");
} }
} }

View file

@ -76,8 +76,6 @@ public class AGLAnalyticControllerOPListe implements Serializable {
department = documentService.load(departmentID); department = documentService.load(departmentID);
if (department != null) { if (department != null) {
event.getWorkitem().setItemValue("space.name", department.getItemValueString("name")); event.getWorkitem().setItemValue("space.name", department.getItemValueString("name"));
} else {
} }
departmentIDLast = departmentID; departmentIDLast = departmentID;
resetStats(event); resetStats(event);
@ -100,39 +98,34 @@ public class AGLAnalyticControllerOPListe implements Serializable {
+ "&spaceref=" + departmentID; + "&spaceref=" + departmentID;
} }
if ("analytic.invoices.count.all".equals(event.getKey())) { if ("analytic.invoices.count.all".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countAll); event.setValue("" + countAll);
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
event.getData().setItemValue("description", event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.all"));
resourceBundleHandler.findMessage("oplist.invoices.description.all")); event.getWorkitem().setItemValue("invoices.total", event.getValue());
event.getWorkitem().setItemValue("invoices.total", countAll); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
if ("analytic.invoices.count.open".equals(event.getKey())) { if ("analytic.invoices.count.open".equals(event.getKey())) {
event.getData().setItemValue("value", "" + (countOpen)); event.setValue("" + (countOpen));
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
event.getData().setItemValue("description", event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.open"));
resourceBundleHandler.findMessage("oplist.invoices.description.open")); event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
event.getWorkitem().setItemValue("invoices.total.open", countOpen); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
if ("analytic.invoices.count.due".equals(event.getKey())) { if ("analytic.invoices.count.due".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countDue); event.setValue("" + countDue);
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
event.getData().setItemValue("description", event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.due"));
resourceBundleHandler.findMessage("oplist.invoices.description.due")); event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
event.getWorkitem().setItemValue("invoices.total.due", countDue); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
if ("analytic.invoices.count.dunning".equals(event.getKey())) { if ("analytic.invoices.count.dunning".equals(event.getKey())) {
event.getData().setItemValue("value", "" + countDunning); event.setValue("" + countDunning);
event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices")); event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
event.getData().setItemValue("description", event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.dunning"));
resourceBundleHandler.findMessage("oplist.invoices.description.dunning")); event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
event.getWorkitem().setItemValue("invoices.total.dunning", countDunning); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
} }
@ -165,7 +158,7 @@ public class AGLAnalyticControllerOPListe implements Serializable {
try { try {
if (departmentID == null || (!departmentID.isEmpty() && !"-".equals(departmentID))) { if (departmentID == null || !departmentID.isEmpty()) {
countAll = documentService.count( countAll = documentService.count(
"(type:workitem) AND $uniqueidref:" + departmentID + " AND $modelversion:rechnungsausgang-*"); "(type:workitem) AND $uniqueidref:" + departmentID + " AND $modelversion:rechnungsausgang-*");

View file

@ -69,57 +69,53 @@ public class AGLAnalyticControllerSteuer implements Serializable {
link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid"; link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid";
} }
if ("analytic.steuer.eust".equals(event.getKey())) { if ("analytic.steuer.eust".equals(event.getKey())) {
Object eustTotal = computeSteuerbescheideEUST(); event.setValue(computeSteuerbescheideEUST());
event.getData().setItemValue("value", eustTotal); event.setLabel("EUR");
event.getData().setItemValue("label", "EUR"); event.setDescription("Gesamt Einfuhrumsatzsteuer (EUSt)");
event.getData().setItemValue("description", "Gesamt Einfuhrumsatzsteuer (EUSt)"); event.getWorkitem().setItemValue("eust.total", event.getValue());
event.getWorkitem().setItemValue("eust.total", eustTotal); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
if ("analytic.steuer.zoll".equals(event.getKey())) { if ("analytic.steuer.zoll".equals(event.getKey())) {
event.getData().setItemValue("value", computeSteuerbescheideZoll()); event.setValue(computeSteuerbescheideZoll());
event.getData().setItemValue("label", "EUR"); event.setLabel("EUR");
event.getData().setItemValue("description", "Gesamt Zölle (ZOLLEU)"); event.setDescription("Gesamt Zölle (ZOLLEU)");
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.steuer.total".equals(event.getKey())) { if ("analytic.steuer.total".equals(event.getKey())) {
event.getData().setItemValue("value", computeSteuerbescheideTotal()); event.setValue(computeSteuerbescheideTotal());
event.getData().setItemValue("label", "EUR"); event.setLabel("EUR");
event.getData().setItemValue("description", "Alle Steuerbescheide die noch nicht abgerechnet wurden."); event.setDescription("Alle Steuerbescheide die noch nicht abgerechnet wurden.");
event.getWorkitem().setItemValue("link", link); event.setLink(link);
} }
if ("analytic.steuer.saldo".equals(event.getKey())) { if ("analytic.steuer.saldo".equals(event.getKey())) {
event.getData().setItemValue("value", computeSteuerbescheideSaldo()); event.setValue(computeSteuerbescheideSaldo());
event.getData().setItemValue("label", "EUR"); event.setLabel("EUR");
event.getData().setItemValue("description", event.setDescription("Saldo aller Steuerbescheide die noch nicht abgerechnet wurden.");
"Saldo aller Steuerbescheide die noch nicht abgerechnet wurden."); event.setLink(link);
event.getWorkitem().setItemValue("link", link);
} }
if ("analytic.steuer.due".equals(event.getKey())) { if ("analytic.steuer.due".equals(event.getKey())) {
event.getData().setItemValue("value", computeSteuerbescheideSaldoDue()); event.setValue(computeSteuerbescheideSaldoDue());
event.getData().setItemValue("label", "EUR"); event.setLabel("EUR");
event.getData().setItemValue("description", event.setDescription("Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden.");
"Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden."); // event.setLink(link + "&task=Überfällig");
// event.getWorkitem().setItemValue("link", link + "&task=Überfällig"); event.setLink(link + "&task=1200");
event.getWorkitem().setItemValue("link", link + "&task=1200");
} }
// Charts // Charts
if ("analytic.steuer.trend".equals(event.getKey())) { if ("analytic.steuer.trend".equals(event.getKey())) {
event.getData().setItemValue("value", accumulateSteuerbescheideByWeek()); event.setValue(accumulateSteuerbescheideByWeek());
event.getData().setItemValue("label", "Zoll & EUST"); event.setLabel("Zoll & EUST");
event.getData().setItemValue("description", "Fälligkeiten nach KW"); event.setDescription("Fälligkeiten nach KW");
} }
if ("analytic.steuer.trend.abteilung".equals(event.getKey())) { if ("analytic.steuer.trend.abteilung".equals(event.getKey())) {
event.getData().setItemValue("value", accumulateSteuerbescheideAbteilungByWeek()); event.setValue(accumulateSteuerbescheideAbteilungByWeek());
event.getData().setItemValue("label", "Nach Abteilungen"); event.setLabel("Nach Abteilungen");
event.getData().setItemValue("description", "Offene Salden nach KW pro Abteilung"); event.setDescription("Offene Salden nach KW pro Abteilung");
} }
} }

View file

@ -25,7 +25,7 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.office.config.ConfigService;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.poi.POIUtil;
import org.imixs.workflow.util.XMLParser; import org.imixs.workflow.util.XMLParser;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -174,7 +174,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
int newColumns = (currencyList.size() - 1) * 2; int newColumns = (currencyList.size() - 1) * 2;
for (int i = 0; i < newColumns; i++) { for (int i = 0; i < newColumns; i++) {
logger.info(".. add currency column..."); logger.info(".. add currency column...");
XSSFUtil.insertColumn(sheet, 6, 8 + i); POIUtil.insertColumn(sheet, 6, 8 + i);
} }
// Beschriftungen eintragen // Beschriftungen eintragen
@ -247,7 +247,7 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
// jetzt füge alle Rechnungen an. // jetzt füge alle Rechnungen an.
int totalRowCount = invoices.size(); int totalRowCount = invoices.size();
XSSFUtil.insertRows(sheet, "A11", totalRowCount - 0); POIUtil.insertRows(sheet, "A11", totalRowCount - 0);
for (ItemCollection invoice : invoices) { for (ItemCollection invoice : invoices) {
logger.fine("......add invoice " + invoice.getUniqueID()); logger.fine("......add invoice " + invoice.getUniqueID());
@ -285,8 +285,8 @@ public class AGLAnalyticExcelAdapterDebitor extends POIFindReplaceAdapter {
// setze Summen Formeln // setze Summen Formeln
for (int column = 6; column < currencyList.size() * 2 + 6; column++) { for (int column = 6; column < currencyList.size() * 2 + 6; column++) {
XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11 XSSFCell cell = sheet.getRow(totalRowCount + 11).getCell(column); // G11
String cellRefFrom = XSSFUtil.getCellReference(column, 10); String cellRefFrom = POIUtil.getCellReference(column, 10);
String cellRefTo = XSSFUtil.getCellReference(column, totalRowCount + 10); String cellRefTo = POIUtil.getCellReference(column, totalRowCount + 10);
String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")"; String formula = "SUM(" + cellRefFrom + ":" + cellRefTo + ")";
cell.setCellFormula(formula); cell.setCellFormula(formula);
} }

View file

@ -123,34 +123,26 @@ public class BusinessPartnerService {
* Diese Methode aktualisiert das business Partner object. Sie wird von den * Diese Methode aktualisiert das business Partner object. Sie wird von den
* Invoice Plugins genutzt. Die Methode wirft eine PluginException falls das * Invoice Plugins genutzt. Die Methode wirft eine PluginException falls das
* BusinessPartner Objekt gesperrt oder in verification ist! * BusinessPartner Objekt gesperrt oder in verification ist!
* <p> *
* Gleichzeitig wird bei Rechnungen in Abhängigkeit der Rechnungsart die * Gleichzeitig wird bei Rechnungen in Abhängigkeit der Rechnungsart die
* dbtr./cdtr. items sowie mail und country aktualisiert. * 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 partnerID
* @param invoice * @param workitem
* @return BusinessPartner Object * @return BusinessPartner Object
* @throws PluginException * @throws PluginException
*/ */
public ItemCollection updateBusinessPartnerData(ItemCollection invoice, boolean updateWhenVerification, public ItemCollection updateBusinessPartnerData(ItemCollection workitem) throws PluginException {
boolean updateWhenLocked) String partnerID = workitem.getItemValueString("partner.id").trim();
throws PluginException { // Migration wenn keine partner.id existier!
String partnerID = invoice.getItemValueString("partner.id").trim();
// Migration wenn keine partner.id existiert!
if (partnerID.isEmpty()) { if (partnerID.isEmpty()) {
if (InvoiceUtil.isCreditorInvoice(invoice)) { if (InvoiceUtil.isCreditorInvoice(workitem)) {
partnerID = InvoiceUtil.buildBPID(invoice.getItemValueString("cdtr.number")); partnerID = InvoiceUtil.buildBPID(workitem.getItemValueString("cdtr.number"));
} }
if (InvoiceUtil.isDebitorInvoice(invoice)) { if (InvoiceUtil.isDebitorInvoice(workitem)) {
partnerID = InvoiceUtil.buildBPID(invoice.getItemValueString("dbtr.number")); partnerID = InvoiceUtil.buildBPID(workitem.getItemValueString("dbtr.number"));
} }
invoice.setItemValue("partner.id", partnerID); workitem.setItemValue("partner.id", partnerID);
} }
if (partnerID == null || partnerID.isEmpty()) { if (partnerID == null || partnerID.isEmpty()) {
@ -172,40 +164,40 @@ public class BusinessPartnerService {
Integer.parseInt(partnerID); Integer.parseInt(partnerID);
// it is an int - get last 4 digits // it is an int - get last 4 digits
partnerID = "BP" + partnerID.substring(Math.max(0, partnerID.length() - 4)); partnerID = "BP" + partnerID.substring(Math.max(0, partnerID.length() - 4));
invoice.setItemValue("partner.id", partnerID); workitem.setItemValue("partner.id", partnerID);
businessPartner = getBusinessPartnerByID(partnerID); businessPartner = getBusinessPartnerByID(partnerID);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
/* not an int */ /* not an int */
} }
if (businessPartner == null) { if (businessPartner == null) {
invoice.removeItem("partner.id"); workitem.removeItem("partner.id");
logger.warning("Business Partner for Partner ID " + partnerID + " not found!"); logger.warning("Business Partner for Partner ID " + partnerID + " not found!");
return null; return null;
} }
} }
// because the method can be called multiple times within one workflow // because the method can be called multiple times within one worklfow
// processing cycle we need to load the object within the current transaction // processing cycle
// context // we need to load the object within the current transaction context
businessPartner = documentService.load(businessPartner.getUniqueID()); businessPartner = documentService.load(businessPartner.getUniqueID());
if (businessPartner != null) { if (businessPartner != null) {
// update partner id data // update partner id data
invoice.setItemValue("partner.id", partnerID); workitem.setItemValue("partner.id", partnerID);
invoice.setItemValue("partner.name", businessPartner.getItemValueString("partner.name")); workitem.setItemValue("partner.name", businessPartner.getItemValueString("partner.name"));
logger.info("check invoice type...."); logger.info("check invoice type....");
// Update Invoice Partner Meta Data // Update Invoice Partner Meta Data
if (InvoiceUtil.isDebitorInvoice(invoice)) { if (InvoiceUtil.isDebitorInvoice(workitem)) {
logger.info("...is debitor invoice"); logger.info("...is debitor invoice");
invoice.setItemValue("dbtr.number", businessPartner.getItemValueString("dbtr.number")); workitem.setItemValue("dbtr.number", businessPartner.getItemValueString("dbtr.number"));
invoice.setItemValue("dbtr.name", businessPartner.getItemValueString("partner.name")); workitem.setItemValue("dbtr.name", businessPartner.getItemValueString("partner.name"));
invoice.setItemValue("dbtr.mail", businessPartner.getItemValue("dbtr.mail")); workitem.setItemValue("dbtr.mail", businessPartner.getItemValueString("dbtr.mail"));
invoice.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country")); workitem.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
} }
logger.info("...is creditor invoice"); logger.info("...is creditor invoice");
if (InvoiceUtil.isCreditorInvoice(invoice)) { if (InvoiceUtil.isCreditorInvoice(workitem)) {
invoice.setItemValue("cdtr.name", businessPartner.getItemValueString("partner.name")); workitem.setItemValue("cdtr.name", businessPartner.getItemValueString("partner.name"));
invoice.setItemValue("cdtr.mail", businessPartner.getItemValue("cdtr.mail")); workitem.setItemValue("cdtr.mail", businessPartner.getItemValueString("cdtr.mail"));
invoice.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country")); workitem.setItemValue("invoice.country", businessPartner.getItemValueString("_vendor_country"));
/* /*
* Sonderfall - Frau Mahner 9.10.2025 * Sonderfall - Frau Mahner 9.10.2025
@ -213,25 +205,25 @@ public class BusinessPartnerService {
* ein alternatives Konto gewählt hat muss dieses gewinnen! * ein alternatives Konto gewählt hat muss dieses gewinnen!
* Ansonsten nehmen wir die cdtr.number * Ansonsten nehmen wir die cdtr.number
*/ */
if ("credit".equals(invoice.getItemValueString("payment.type"))) { if ("credit".equals(workitem.getItemValueString("payment.type"))) {
String bookingAccount = invoice.getItemValueString("payment.booking.account"); String bookingAccount = workitem.getItemValueString("payment.booking.account");
if (!bookingAccount.isBlank()) { if (!bookingAccount.isBlank()) {
invoice.setItemValue("cdtr.number", bookingAccount); workitem.setItemValue("cdtr.number", bookingAccount);
} else { } else {
invoice.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number")); workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
} }
} else { } else {
// default - cdtr.number // default - cdtr.number
invoice.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number")); workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number"));
} }
} }
// Validate Business Partner Status! // Validate Business Partner Status!
if (businessPartner.getTaskID() == TASK_VERIFICATION && !updateWhenVerification) { if (businessPartner.getTaskID() == TASK_VERIFICATION) {
throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_VERIFICATION, throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_VERIFICATION,
"Businesspartner is in verification. Invoice can't be processed!"); "Businesspartner is in verification. Invoice can't be processed!");
} }
if (businessPartner.getTaskID() == TASK_LOCKED && !updateWhenLocked) { if (businessPartner.getTaskID() == TASK_LOCKED) {
throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_LOCKED, throw new PluginException(InvoicePlugin.class.getName(), ERROR_BUSINESSPARTNER_LOCKED,
"Businesspartner is locked. Invoice can't be processed!"); "Businesspartner is locked. Invoice can't be processed!");
} }
@ -262,7 +254,6 @@ public class BusinessPartnerService {
* @return * @return
*/ */
public List<ItemCollection> findOutgoingInvoices(String _dbtrNumber) { public List<ItemCollection> findOutgoingInvoices(String _dbtrNumber) {
logger.info("search outgoing invoices....");
// Aus der dbtrNummer muss das führendde D entfernt werden // Aus der dbtrNummer muss das führendde D entfernt werden
String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*)"; String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*)";

View file

@ -76,7 +76,7 @@ public class CargosoftExportAdapter implements SignalAdapter {
@Override @Override
public ItemCollection execute(ItemCollection document, ItemCollection event) throws AdapterException { public ItemCollection execute(ItemCollection document, ItemCollection event) throws AdapterException {
logger.info("├── 📤 Cargosoft export..."); logger.info("......starting export...");
try { try {
// read the cargosoft export options // read the cargosoft export options
@ -84,14 +84,14 @@ public class CargosoftExportAdapter implements SignalAdapter {
if (evalItemCollection == null) { if (evalItemCollection == null) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), CONFIG_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), CONFIG_ERROR,
"missing cargosoft configuration in model event - please check model configuration"); "missign cargosoft configuration in model event - please check model configuration");
} }
String reportID = evalItemCollection.getItemValueString("report"); String reportID = evalItemCollection.getItemValueString("report");
ItemCollection report = reportService.findReport(reportID); ItemCollection report = reportService.findReport(reportID);
if (report == null) { if (report == null) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), CONFIG_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), CONFIG_ERROR,
"missing cargosoft report '" + reportID + "' - please check model configuration"); "missign cargosoft report '" + reportID + "' - please check model configuration");
} }
List<ItemCollection> sourceData = new ArrayList<ItemCollection>(); List<ItemCollection> sourceData = new ArrayList<ItemCollection>();
@ -106,6 +106,7 @@ public class CargosoftExportAdapter implements SignalAdapter {
// transfer file via FTP... // transfer file via FTP...
if (ftpServer.isPresent()) { if (ftpServer.isPresent()) {
logger.info("ftp transfer...");
ftpConnector.put(exportFile); ftpConnector.put(exportFile);
} }
@ -114,7 +115,7 @@ public class CargosoftExportAdapter implements SignalAdapter {
} catch (PluginException | IOException | jakarta.xml.bind.JAXBException } catch (PluginException | IOException | jakarta.xml.bind.JAXBException
| javax.xml.transform.TransformerException e) { | javax.xml.transform.TransformerException e) {
logger.severe("├── ⚠️ Cargosoft export failed: " + e.getMessage()); logger.severe("cargosoft export failed: " + e.getMessage());
document.setItemValue("cargosoft.error", e.getMessage()); document.setItemValue("cargosoft.error", e.getMessage());
document.event(EVENT_FAILURE); document.event(EVENT_FAILURE);
} }

View file

@ -82,12 +82,10 @@ public class FTPConnector {
Optional<String> ftpPassword; Optional<String> ftpPassword;
/** /**
* This method transfers a file to a FTP server using atomic upload. * This method transfers a snapshot to a ftp server.
* The file is first uploaded with a temporary name and then renamed
* to avoid race conditions with the receiver.
* *
* @param fileData object containing the file to upload * @param fileData object
* @throws PluginException if the upload fails * @throws PluginException
*/ */
public void put(FileData fileData) throws PluginException { public void put(FileData fileData) throws PluginException {
@ -97,8 +95,6 @@ public class FTPConnector {
} }
String fileName = fileData.getName(); String fileName = fileData.getName();
// Create temporary filename to avoid race conditions
String tempFileName = fileName + ".part";
// Compute file path // Compute file path
String ftpWorkingPath = ftpPath.get(); String ftpWorkingPath = ftpPath.get();
@ -112,11 +108,7 @@ public class FTPConnector {
FTPClient ftpClient = null; FTPClient ftpClient = null;
try { try {
logger.info("├── 🔜 uploading " + fileName + " to FTP server: " + ftpServer + " ..."); logger.finest("......put " + fileName + " to FTP server: " + ftpServer + "...");
logger.info("│ ├── port=" + ftpPort.get().intValue());
logger.info("│ ├── working directory=" + ftpWorkingPath);
logger.info("│ ├── user=" + ftpUser.get());
// logger.info("│ ├── password=" + ftpPassword.get());
ftpClient = new FTPSClient("TLS", false); ftpClient = new FTPSClient("TLS", false);
ftpClient.setBufferSize(8192); ftpClient.setBufferSize(8192);
ftpClient.connect(ftpServer.get(), ftpPort.get().intValue()); ftpClient.connect(ftpServer.get(), ftpPort.get().intValue());
@ -128,54 +120,38 @@ public class FTPConnector {
ftpClient.setFileType(FTP.ASCII_FILE_TYPE); ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
ftpClient.setControlEncoding("UTF-8"); ftpClient.setControlEncoding("UTF-8");
// Verify directories // verify directories
if (!ftpClient.changeWorkingDirectory(ftpWorkingPath)) { if (!ftpClient.changeWorkingDirectory(ftpWorkingPath)) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed: missing working directory '" + ftpWorkingPath + "' : " "FTP file transfer failed: missing working directory '" + ftpWorkingPath + "' : "
+ ftpClient.getReplyString()); + ftpClient.getReplyString());
} }
// Upload file to FTP server with temporary name // upload file to FTP server.
writer = new ByteArrayInputStream(fileData.getContent()); writer = new ByteArrayInputStream(fileData.getContent());
if (!ftpClient.storeFile(tempFileName, writer)) { if (!ftpClient.storeFile(fileName, writer)) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed: unable to write '" + ftpWorkingPath + tempFileName + "' : " "FTP file transfer failed: unable to write '" + ftpWorkingPath + fileName + "' : "
+ ftpClient.getReplyString()); + ftpClient.getReplyString());
} }
// Rename to final name - this is an atomic operation logger.finest("...." + ftpWorkingPath + fileName + " transfered successfull to " + ftpServer);
logger.info("│ ├── rename '" + tempFileName + "' to '" + fileName + " ...");
if (!ftpClient.rename(tempFileName, fileName)) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed: unable to rename '" + tempFileName + "' to '" + fileName + "' : "
+ ftpClient.getReplyString());
}
logger.info("│ └── ✓ ftp transfer completed."); } catch (IOException e) {
} catch (IOException | PluginException e) {
// Log the real cause immediately, before the finally block runs -
// otherwise a cleanup failure could overwrite/hide this exception.
logger.warning("│ ├── ⚠️ FTP connection error: " + e.getMessage());
if (e instanceof PluginException) {
throw (PluginException) e;
}
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed: " + e.getMessage(), e); "FTP file transfer failed: " + e.getMessage(), e);
} finally { } finally {
// Cleanup - never let a cleanup failure mask the primary exception // do logout....
try { try {
if (writer != null) { if (writer != null) {
writer.close(); writer.close();
} }
if (ftpClient != null && ftpClient.isConnected()) {
ftpClient.logout(); ftpClient.logout();
ftpClient.disconnect(); ftpClient.disconnect();
} } catch (IOException e) {
} catch (IOException cleanupException) {
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR, throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
"FTP file transfer failed during cleanup: " + cleanupException.getMessage(), "FTP file transfer failed: " + e.getMessage(), e);
cleanupException);
} }
} }
} }

View file

@ -11,8 +11,6 @@ import jakarta.inject.Inject;
* *
* Auch das feld _img wird in Abhängigkeit vom item 'invoice.protest' gesetzt * Auch das feld _img wird in Abhängigkeit vom item 'invoice.protest' gesetzt
* *
* Das Plugin ignoriert den Status des Business Partners.
*
* @author rsoika * @author rsoika
* @version 1.0 * @version 1.0
* *
@ -31,7 +29,7 @@ public class InvoiceOutgoingPlugin extends AbstractPlugin {
public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException { public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException {
// Update BUsiness Partner Data // Update BUsiness Partner Data
businessPartnerService.updateBusinessPartnerData(workitem, true, true); businessPartnerService.updateBusinessPartnerData(workitem);
// Update Invoice.positions // Update Invoice.positions
InvoiceUtil.updateInvoicePositions(workitem); InvoiceUtil.updateInvoicePositions(workitem);

View file

@ -39,10 +39,6 @@ import jakarta.inject.Inject;
* 26.4.25 - Das Plugin setzt nun auch partner.name und partner.id zusätzlich * 26.4.25 - Das Plugin setzt nun auch partner.name und partner.id zusätzlich
* processed es das BP Workitem * processed es das BP Workitem
* *
* <p>
* Das Plugin prüft den Status des Business Partners und wirft eine Exception
* wenn dieser in Verification oder Locked ist.
*
* @author rsoika * @author rsoika
* @version 1.0 * @version 1.0
* *
@ -87,7 +83,7 @@ public class InvoicePlugin extends AbstractPlugin {
public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException { public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException {
// Update BUsiness Partner Data // Update BUsiness Partner Data
ItemCollection businessPartner = businessPartnerService.updateBusinessPartnerData(workitem, false, false); ItemCollection businessPartner = businessPartnerService.updateBusinessPartnerData(workitem);
updateImg(workitem); updateImg(workitem);

View file

@ -77,22 +77,6 @@ public class InvoiceService {
@Inject @Inject
DocumentService documentService; DocumentService documentService;
public ItemCollection findOutboundInvoiceByNumber(String invoiceNumber) {
ItemCollection result = null;
try {
String query = "($modelversion:rechnungsausgang*) AND (invoice.number:" + invoiceNumber + ")";
List<ItemCollection> list;
list = documentService.find(query, 1, 0);
if (list != null && list.size() > 0) {
result = list.get(0);
}
} catch (QueryException e) {
e.printStackTrace();
}
return result;
}
/** /**
* Liefert die Liste der Ausgehenden Währungen * Liefert die Liste der Ausgehenden Währungen
* *
@ -118,7 +102,7 @@ public class InvoiceService {
* @throws PluginException * @throws PluginException
*/ */
public String getCurrenciesOutMain() throws PluginException { public String getCurrenciesOutMain() throws PluginException {
logger.info("Load currency Configuration....");
// ermittle die Hauptwährungen // ermittle die Hauptwährungen
ItemCollection configItemCollection = configService.loadConfiguration("AGL_CONFIGURATION"); ItemCollection configItemCollection = configService.loadConfiguration("AGL_CONFIGURATION");
List<String> currencyList = configItemCollection.getItemValue("currency.out"); List<String> currencyList = configItemCollection.getItemValue("currency.out");

View file

@ -38,12 +38,6 @@ public class InvoiceUtil {
return bd.doubleValue(); return bd.doubleValue();
} }
public static BigDecimal roundBigDecimal(double value) {
BigDecimal bd = BigDecimal.valueOf(value);
bd = bd.setScale(2, RoundingMode.HALF_UP);
return bd;
}
/** /**
* Rounds a Flat Value * Rounds a Flat Value
* *

View file

@ -51,8 +51,6 @@ public class OPListController implements Serializable {
private String lastCurrencyFilter = null; private String lastCurrencyFilter = null;
private List<ItemCollection> invoiceList = null; private List<ItemCollection> invoiceList = null;
private String currenciesOutMain = null;
private List<String> currenciesOut = null;
@Inject @Inject
protected WorkflowController workflowController; protected WorkflowController workflowController;
@ -185,7 +183,7 @@ public class OPListController implements Serializable {
/* /*
* Mahnlauf ? * Mahnlauf ?
* *
* Bei einem Mahnlauf selektieren wir alle Rechnungen immer vor. Das ist eine * Bei einem Mahnlauf selektieren wir alle Rechnungne immer vor. Das ist eine
* Anforderung von AGL Der Benutzer kann dann einzelne Rechnungen wieder * Anforderung von AGL Der Benutzer kann dann einzelne Rechnungen wieder
* abwählen. * abwählen.
* *
@ -291,7 +289,6 @@ public class OPListController implements Serializable {
*/ */
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
public void updateChildList(ItemCollection workitem) { public void updateChildList(ItemCollection workitem) {
long l = System.currentTimeMillis();
double paymentTotal = 0; double paymentTotal = 0;
List<Map> mapInvoiceItems = new ArrayList<Map>(); List<Map> mapInvoiceItems = new ArrayList<Map>();
logger.fine("Convert child items into Map..."); logger.fine("Convert child items into Map...");
@ -316,9 +313,6 @@ public class OPListController implements Serializable {
workitem.replaceItemValue(ZahlungseingangService.ITEM_PAYMENT_DETAILS, mapInvoiceItems); workitem.replaceItemValue(ZahlungseingangService.ITEM_PAYMENT_DETAILS, mapInvoiceItems);
// Update $workitemref // Update $workitemref
workitem.setItemValue("$workitemref", selectionList); workitem.setItemValue("$workitemref", selectionList);
// logger.info("update child list completed in " + (System.currentTimeMillis() -
// l) + "ms");
} }
/** /**
@ -444,26 +438,19 @@ public class OPListController implements Serializable {
} }
public List<String> getCurrenciesOut() { public List<String> getCurrenciesOut() {
if (currenciesOut == null) {
try { try {
currenciesOut = invoiceService.getCurrenciesOut(); return invoiceService.getCurrenciesOut();
} catch (PluginException e) { } catch (PluginException e) {
currenciesOut = new ArrayList<String>(); return new ArrayList<String>();
} }
} }
return currenciesOut;
}
public String getCurrenciesOutMain() { public String getCurrenciesOutMain() {
if (currenciesOutMain == null) {
try { try {
currenciesOutMain = invoiceService.getCurrenciesOutMain(); return invoiceService.getCurrenciesOutMain();
} catch (PluginException e) { } catch (PluginException e) {
currenciesOutMain = "undefined currency"; return "undefined currency";
} }
} }
return currenciesOutMain;
}
} }

View file

@ -26,7 +26,7 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.office.config.ConfigService;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.poi.POIUtil;
import org.imixs.workflow.util.XMLParser; import org.imixs.workflow.util.XMLParser;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -179,7 +179,7 @@ public class OPListExportAdapter extends POIFindReplaceAdapter {
int newColumns = (currencyList.size() - 1) * 1; int newColumns = (currencyList.size() - 1) * 1;
for (int i = 0; i < newColumns; i++) { for (int i = 0; i < newColumns; i++) {
logger.fine(".. add currency column..."); logger.fine(".. add currency column...");
XSSFUtil.insertColumn(sheet, 5, 6 + i); POIUtil.insertColumn(sheet, 5, 6 + i);
} }
// Beschriftungen eintragen // Beschriftungen eintragen
@ -400,14 +400,10 @@ public class OPListExportAdapter extends POIFindReplaceAdapter {
Map<String, List<ItemCollection>> result = new HashMap<>(); Map<String, List<ItemCollection>> result = new HashMap<>();
try { try {
String query = ""; List<ItemCollection> invoices = documentService.find(
if (spaceID == null || spaceID.isEmpty() || "-".equals(spaceID)) { "$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0,
// no space selection "invoice.number", false);
query = "$modelversion:rechnungsausgang-* AND type:workitem";
} else {
query = "$modelversion:rechnungsausgang-* AND type:workitem AND $uniqueidref:" + spaceID;
}
List<ItemCollection> invoices = documentService.find(query, 9999, 0, "invoice.number", false);
for (ItemCollection invoice : invoices) { for (ItemCollection invoice : invoices) {
String dbtrNumber = invoice.getItemValueString("dbtr.number"); String dbtrNumber = invoice.getItemValueString("dbtr.number");

View file

@ -37,7 +37,7 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.office.config.ConfigService; import org.imixs.workflow.office.config.ConfigService;
import org.imixs.workflow.poi.POIFindReplaceAdapter; import org.imixs.workflow.poi.POIFindReplaceAdapter;
import org.imixs.workflow.poi.XSSFUtil; import org.imixs.workflow.poi.POIUtil;
import org.imixs.workflow.util.XMLParser; import org.imixs.workflow.util.XMLParser;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -199,13 +199,13 @@ public class OPListExportAdapterByWeek extends POIFindReplaceAdapter {
int newColumns = (currencyList.size() * (spaces.size())) - 1; int newColumns = (currencyList.size() * (spaces.size())) - 1;
for (int i = 0; i < newColumns; i++) { for (int i = 0; i < newColumns; i++) {
logger.fine(".. add currency column..."); logger.fine(".. add currency column...");
XSSFUtil.insertColumn(sheet, 1, 2 + i); POIUtil.insertColumn(sheet, 1, 2 + i);
} }
// Total spalten einfuegen // Total spalten einfuegen
for (int i = 0; i < currencyList.size() - 1; i++) { for (int i = 0; i < currencyList.size() - 1; i++) {
logger.fine(".. add total column..."); logger.fine(".. add total column...");
XSSFUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i); POIUtil.insertColumn(sheet, 2 + newColumns, 3 + newColumns + i);
} }
newColumns = newColumns + currencyList.size(); newColumns = newColumns + currencyList.size();

Some files were not shown because too many files have changed in this diff Show more