fixed KSeF Upload
This commit is contained in:
parent
082f0f609d
commit
9024ee2e38
10 changed files with 482 additions and 115 deletions
|
|
@ -173,6 +173,8 @@ The implementation uses `PluginException` for error handling with two error type
|
||||||
- [Facture Details](https://github.com/CIRFMF/ksef-docs/blob/main/sesja-interaktywna.md#2-wys%C5%82anie-faktury)
|
- [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)
|
- [XML Invoice Example](https://github.com/CIRFMF/ksef-docs/blob/main/faktury/weryfikacja-faktury.md)
|
||||||
|
|
||||||
|
- [Github Discussions](https://github.com/CIRFMF/ksef-docs/issues/351#issuecomment-3538013805)
|
||||||
|
|
||||||
# Validate XML
|
# Validate XML
|
||||||
|
|
||||||
To validate XML results use xmllint. To install run:
|
To validate XML results use xmllint. To install run:
|
||||||
|
|
@ -242,14 +244,6 @@ Invoice that corrects a previously issued invoice (VAT, ZAL, or ROZ).
|
||||||
<P_15>-628.00</P_15> <!-- Difference in Total -->
|
<P_15>-628.00</P_15> <!-- Difference in Total -->
|
||||||
```
|
```
|
||||||
|
|
||||||
⚠️ **Important:**
|
|
||||||
|
|
||||||
- KOR uses different P_13/P_14 fields than VAT
|
|
||||||
- `P_13_1`, `P_14_1` → Used in VAT invoices
|
|
||||||
- `P_13_6_1`, `P_13_7`, etc. → Used in KOR invoices (for 0% rate, exempt, etc.)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## DaneFaKorygowanej Element
|
## DaneFaKorygowanej Element
|
||||||
|
|
||||||
**Required in KOR invoices** - Must appear AFTER `<RodzajFaktury>KOR</RodzajFaktury>`
|
**Required in KOR invoices** - Must appear AFTER `<RodzajFaktury>KOR</RodzajFaktury>`
|
||||||
|
|
@ -296,3 +290,12 @@ Invoice that corrects a previously issued invoice (VAT, ZAL, or ROZ).
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -70,7 +70,7 @@ public class KSeFAPIService {
|
||||||
public void uploadInvoice(ItemCollection workitem, String fileName) throws PluginException {
|
public void uploadInvoice(ItemCollection workitem, String fileName) throws PluginException {
|
||||||
|
|
||||||
// First open an interactive session (reuses existing if valid)
|
// First open an interactive session (reuses existing if valid)
|
||||||
kseFAuthManager.openSession();
|
kseFAuthManager.openSession(workitem);
|
||||||
|
|
||||||
logger.info("├── 📤 Upload Invoice...");
|
logger.info("├── 📤 Upload Invoice...");
|
||||||
|
|
||||||
|
|
@ -190,20 +190,32 @@ public class KSeFAPIService {
|
||||||
|
|
||||||
// Status abfragen
|
// Status abfragen
|
||||||
// Now we need to wait until auth/{AuthRef} will return 200
|
// Now we need to wait until auth/{AuthRef} will return 200
|
||||||
|
int code = -1;
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
long timeout = 20_000; // 20 Sekunden
|
long timeout = 20_000; // 20 Sekunden
|
||||||
|
boolean timeoutStatus = true;
|
||||||
while (System.currentTimeMillis() - start < timeout) {
|
while (System.currentTimeMillis() - start < timeout) {
|
||||||
int code = kseFAuthManager.checkSessionStatus();
|
code = kseFAuthManager.checkSessionStatus(workitem);
|
||||||
|
|
||||||
if (code >= 200) {
|
if (code >= 200) {
|
||||||
break; // ok or borken
|
timeoutStatus = false;
|
||||||
|
break; // ok or broken
|
||||||
}
|
}
|
||||||
|
|
||||||
// kleine Pause, um CPU zu schonen
|
// kleine Pause, um CPU zu schonen
|
||||||
kseFAuthManager.waitSomeTime(500);
|
kseFAuthManager.waitSomeTime(500);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (timeoutStatus) {
|
||||||
|
logger.severe("├── ⚠️ Status timeout");
|
||||||
|
}
|
||||||
|
|
||||||
|
// In case we have an error we print out the reason...
|
||||||
|
if (code > 200) {
|
||||||
|
kseFAuthManager.checkSessionStatusInvoices();
|
||||||
|
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
||||||
|
"Failed to process invoice: " + response.statusCode());
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.severe("├── ⚠️ Invoice upload failed: " + e.getMessage());
|
logger.severe("├── ⚠️ Invoice upload failed: " + e.getMessage());
|
||||||
|
|
||||||
|
|
@ -217,96 +229,6 @@ public class KSeFAPIService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Poll Invoice Status
|
|
||||||
*
|
|
||||||
* https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1api~1v2~1sessions~1%7BreferenceNumber%7D/get
|
|
||||||
*
|
|
||||||
* @param workitem
|
|
||||||
* @return
|
|
||||||
* @throws PluginException
|
|
||||||
*/
|
|
||||||
private int xxxgetInvoiceStatus(ItemCollection workitem) throws PluginException {
|
|
||||||
|
|
||||||
logger.info("├── 🔎 Get Invoice Status...");
|
|
||||||
|
|
||||||
// Validate session
|
|
||||||
if (kseFAuthManager.getAccessToken() == null) {
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"API Error - missing AccessToken!");
|
|
||||||
}
|
|
||||||
if (kseFAuthManager.getSessionRefNumber() == null) {
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"API Error - missing SessionRefNumber!");
|
|
||||||
}
|
|
||||||
if (kseFAuthManager.getSessionEncryption() == null) {
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"API Error - missing Session Encryption!");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
String referenceNumber = workitem.getItemValueString("ksef.referenceNumber");
|
|
||||||
if (referenceNumber.isBlank()) {
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"API Error - missing invoice referenceNumber!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate hashes
|
|
||||||
|
|
||||||
// Send upload request
|
|
||||||
String uri = kseFAuthManager.getBaseURI() + "/sessions/" + kseFAuthManager.getSessionRefNumber();
|
|
||||||
|
|
||||||
logger.info("│ ├── GET: " + uri);
|
|
||||||
|
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
|
||||||
.uri(URI.create(uri))
|
|
||||||
.header("Content-Type", "application/json")
|
|
||||||
.header("Authorization", "Bearer " + kseFAuthManager.getAccessToken())
|
|
||||||
.GET()
|
|
||||||
.build();
|
|
||||||
|
|
||||||
HttpResponse<String> response = kseFAuthManager.getHttpClient().send(
|
|
||||||
request, HttpResponse.BodyHandlers.ofString());
|
|
||||||
|
|
||||||
logger.info("│ ├── HTTP Response: " + response.statusCode());
|
|
||||||
|
|
||||||
logger.info("│ ├── Response Body: " + response.body());
|
|
||||||
|
|
||||||
int statusCode = -1;
|
|
||||||
String statusDescription = "";
|
|
||||||
try (Jsonb jsonb = JsonbBuilder.create()) {
|
|
||||||
JsonObject jsonObject = jsonb.fromJson(response.body(), JsonObject.class);
|
|
||||||
|
|
||||||
// Status Code aus dem status-Objekt extrahieren
|
|
||||||
if (jsonObject.containsKey("status")) {
|
|
||||||
JsonObject statusObject = jsonObject.getJsonObject("status");
|
|
||||||
if (statusObject.containsKey("code")) {
|
|
||||||
statusCode = statusObject.getInt("code");
|
|
||||||
statusDescription = statusObject.getString("description");
|
|
||||||
logger.info("│ ├── Status Code: " + statusCode);
|
|
||||||
logger.info("│ ├── Status Description: " + statusDescription);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.severe("├── ⚠️ Error parsing JSON response: " + e.getMessage());
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"Error parsing JSON response: " + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
workitem.setItemValue("ksef.status.code", statusCode);
|
|
||||||
workitem.setItemValue("ksef.status.description", statusDescription);
|
|
||||||
return statusCode;
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.severe("├── ⚠️ Get Invoice status failed: " + e.getMessage());
|
|
||||||
|
|
||||||
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
|
||||||
"Invoice upload failed: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encrypt invoice XML with the session encryption keys
|
* Encrypt invoice XML with the session encryption keys
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import javax.crypto.spec.OAEPParameterSpec;
|
||||||
import javax.crypto.spec.PSource;
|
import javax.crypto.spec.PSource;
|
||||||
|
|
||||||
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
||||||
|
import org.imixs.workflow.ItemCollection;
|
||||||
import org.imixs.workflow.exceptions.InvalidAccessException;
|
import org.imixs.workflow.exceptions.InvalidAccessException;
|
||||||
import org.imixs.workflow.exceptions.PluginException;
|
import org.imixs.workflow.exceptions.PluginException;
|
||||||
|
|
||||||
|
|
@ -182,7 +183,7 @@ public class KSeFAuthManager {
|
||||||
*
|
*
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
public void openSession() throws PluginException {
|
public void openSession(ItemCollection workitem) throws PluginException {
|
||||||
logger.info("├── open Session...");
|
logger.info("├── open Session...");
|
||||||
if (!hasValidSession()) {
|
if (!hasValidSession()) {
|
||||||
|
|
||||||
|
|
@ -203,7 +204,7 @@ public class KSeFAuthManager {
|
||||||
|
|
||||||
this.openInteractiveSession();
|
this.openInteractiveSession();
|
||||||
|
|
||||||
this.waitForSessionStatus();
|
this.waitForSessionStatus(workitem);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
logger.warning("│ ├── ! Session already exists - reuse existing KSeF Session...");
|
logger.warning("│ ├── ! Session already exists - reuse existing KSeF Session...");
|
||||||
|
|
@ -497,7 +498,7 @@ public class KSeFAuthManager {
|
||||||
*
|
*
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
public void waitForSessionStatus() throws PluginException {
|
public void waitForSessionStatus(ItemCollection workitem) throws PluginException {
|
||||||
logger.info("├── 🔜 Waiting for Session status 200...");
|
logger.info("├── 🔜 Waiting for Session status 200...");
|
||||||
|
|
||||||
// Now we need to wait until auth/{AuthRef} will return 200
|
// Now we need to wait until auth/{AuthRef} will return 200
|
||||||
|
|
@ -505,7 +506,7 @@ public class KSeFAuthManager {
|
||||||
long timeout = 120_000; // 120 Sekunden
|
long timeout = 120_000; // 120 Sekunden
|
||||||
|
|
||||||
while (System.currentTimeMillis() - start < timeout) {
|
while (System.currentTimeMillis() - start < timeout) {
|
||||||
int status = this.checkSessionStatus();
|
int status = this.checkSessionStatus(workitem);
|
||||||
|
|
||||||
// Status 100 = Session opened and ready for uploads!
|
// Status 100 = Session opened and ready for uploads!
|
||||||
if (status == 100 || status == 200) {
|
if (status == 100 || status == 200) {
|
||||||
|
|
@ -638,7 +639,7 @@ public class KSeFAuthManager {
|
||||||
String jsonPayload = String.format(
|
String jsonPayload = String.format(
|
||||||
"{" +
|
"{" +
|
||||||
"\"formCode\": {" +
|
"\"formCode\": {" +
|
||||||
" \"systemCode\": \"FA (2)\"," +
|
" \"systemCode\": \"FA (3)\"," +
|
||||||
" \"schemaVersion\": \"1-0E\"," +
|
" \"schemaVersion\": \"1-0E\"," +
|
||||||
" \"value\": \"FA\"" +
|
" \"value\": \"FA\"" +
|
||||||
"}," +
|
"}," +
|
||||||
|
|
@ -862,8 +863,8 @@ public class KSeFAuthManager {
|
||||||
* @return Session Status Code
|
* @return Session Status Code
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
public int checkSessionStatus() throws PluginException {
|
public int checkSessionStatus(ItemCollection workitem) throws PluginException {
|
||||||
logger.info("├── ↩️ KSeF API check session status...");
|
logger.info("├── ↩️ KSeF API check session status...");
|
||||||
String uri = baseURI + "/sessions/" + this.sessionRefNumber;
|
String uri = baseURI + "/sessions/" + this.sessionRefNumber;
|
||||||
int httpResponse = -1;
|
int httpResponse = -1;
|
||||||
int statusCode = -1;
|
int statusCode = -1;
|
||||||
|
|
@ -898,6 +899,8 @@ public class KSeFAuthManager {
|
||||||
statusCode = statusObject.getInt("code");
|
statusCode = statusObject.getInt("code");
|
||||||
logger.info("│ ├── Status Code: " + statusCode);
|
logger.info("│ ├── Status Code: " + statusCode);
|
||||||
logger.info("│ ├── Status Description: " + statusObject.getString("description"));
|
logger.info("│ ├── Status Description: " + statusObject.getString("description"));
|
||||||
|
workitem.setItemValue("ksef.status.code", statusCode);
|
||||||
|
workitem.setItemValue("ksef.status.description", statusObject.getString("description"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -910,6 +913,44 @@ public class KSeFAuthManager {
|
||||||
return statusCode;
|
return statusCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method verifies the actual status of the status of all invoices
|
||||||
|
*
|
||||||
|
* The method returns the aut status code (not the HTTP Response code!)
|
||||||
|
*
|
||||||
|
* https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1api~1v2~1sessions~1%7BreferenceNumber%7D/get
|
||||||
|
*
|
||||||
|
* @return Session Status Code
|
||||||
|
* @throws PluginException
|
||||||
|
*/
|
||||||
|
public void checkSessionStatusInvoices() throws PluginException {
|
||||||
|
logger.info("├── ↩️ KSeF API check session status invoices...");
|
||||||
|
String uri = baseURI + "/sessions/" + this.sessionRefNumber + "/invoices";
|
||||||
|
int httpResponse = -1;
|
||||||
|
int statusCode = -1;
|
||||||
|
logger.info("│ ├── GET: " + uri);
|
||||||
|
HttpResponse<String> response = null;
|
||||||
|
try {
|
||||||
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
|
.uri(URI.create(uri))
|
||||||
|
.header("Accept", "application/json")
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.header("Authorization", "Bearer " + this.accessToken)
|
||||||
|
.GET()
|
||||||
|
.build();
|
||||||
|
response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
|
} catch (IOException | InterruptedException e) {
|
||||||
|
throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API,
|
||||||
|
"API Error: Unable to request auth status: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
httpResponse = response.statusCode();
|
||||||
|
logger.info("│ ├── HTTP Response: " + httpResponse);
|
||||||
|
|
||||||
|
logger.info("│ ├── " + response.body());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns all active auth sessions
|
* This method returns all active auth sessions
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import java.util.logging.Logger;
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
|
import org.imixs.workflow.ItemCollection;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.jupiter.api.DisplayName;
|
||||||
import org.junit.jupiter.api.MethodOrderer;
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
|
@ -90,7 +91,7 @@ public class KSeFAuthManagerTest {
|
||||||
|
|
||||||
manager.openInteractiveSession();
|
manager.openInteractiveSession();
|
||||||
|
|
||||||
manager.waitForSessionStatus();
|
manager.waitForSessionStatus(new ItemCollection());
|
||||||
|
|
||||||
assertNotNull(manager.getAccessToken(), "AccessToken fehlt");
|
assertNotNull(manager.getAccessToken(), "AccessToken fehlt");
|
||||||
// assertNotNull(manager.getRefNumber(), "ReferenceNumber fehlt");
|
// assertNotNull(manager.getRefNumber(), "ReferenceNumber fehlt");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"
|
||||||
|
xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<Naglowek>
|
||||||
|
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
|
||||||
|
<WariantFormularza>3</WariantFormularza>
|
||||||
|
<DataWytworzeniaFa>2025-11-26T20:54:14.666080555Z</DataWytworzeniaFa>
|
||||||
|
<SystemInfo>Imixs eInvoice</SystemInfo>
|
||||||
|
</Naglowek>
|
||||||
|
<!-- Seller (Your Polish Company - Pre-filled) -->
|
||||||
|
<Podmiot1>
|
||||||
|
<DaneIdentyfikacyjne>
|
||||||
|
<NIP>9552521552</NIP>
|
||||||
|
<Nazwa>Alexander Global Logistics</Nazwa>
|
||||||
|
</DaneIdentyfikacyjne>
|
||||||
|
<Adres>
|
||||||
|
<KodKraju>PL</KodKraju>
|
||||||
|
<AdresL1>Gdanska 36</AdresL1>
|
||||||
|
<AdresL2>70-660 Szczecin</AdresL2>
|
||||||
|
</Adres>
|
||||||
|
<DaneKontaktowe>
|
||||||
|
<Email>MBudas@alexander-logistics.com</Email>
|
||||||
|
</DaneKontaktowe>
|
||||||
|
</Podmiot1>
|
||||||
|
<!-- Buyer (Customer - Empty, to be filled) -->
|
||||||
|
<Podmiot2>
|
||||||
|
<DaneIdentyfikacyjne>
|
||||||
|
<!-- NIP falls eine PL Ust Vorliegt
|
||||||
|
ansonsten NrID - geht immer -->
|
||||||
|
<!-- <Nazwa>#Customer Name#</Nazwa> -->
|
||||||
|
<NrID>TR3830419015</NrID>
|
||||||
|
<Nazwa>Evolog Nakliyat ve Lojistik Hizmetleri</Nazwa>
|
||||||
|
</DaneIdentyfikacyjne>
|
||||||
|
<Adres>
|
||||||
|
<KodKraju>TR</KodKraju>
|
||||||
|
<AdresL1>Caddesi,No. 56 Halkali, Kucukcekmece,</AdresL1>
|
||||||
|
<AdresL2>34303 Istanbul</AdresL2>
|
||||||
|
</Adres>
|
||||||
|
<!---
|
||||||
|
Contact information from buyer can be left
|
||||||
|
<DaneKontaktowe>
|
||||||
|
<Email></Email>
|
||||||
|
<Telefon></Telefon>
|
||||||
|
</DaneKontaktowe>
|
||||||
|
-->
|
||||||
|
<NrKlienta>D21578</NrKlienta>
|
||||||
|
<JST>2</JST>
|
||||||
|
<!-- fixed -->
|
||||||
|
<GV>2</GV>
|
||||||
|
<!-- fixed -->
|
||||||
|
</Podmiot2>
|
||||||
|
<!-- Invoice Data -->
|
||||||
|
<Fa>
|
||||||
|
<KodWaluty>EUR</KodWaluty>
|
||||||
|
<P_1>2025-10-27</P_1>
|
||||||
|
<!-- Invoice Date -->
|
||||||
|
<P_2>6210</P_2>
|
||||||
|
<!-- Invoice Number -->
|
||||||
|
<P_6>2025-11-26</P_6>
|
||||||
|
<!-- Due Date -->
|
||||||
|
<!-- Totals -->
|
||||||
|
<P_13_1>150.00</P_13_1>
|
||||||
|
<!-- Total Net -->
|
||||||
|
<P_14_1>0.00</P_14_1>
|
||||||
|
<!-- Total VAT -->
|
||||||
|
<P_15>150.00</P_15>
|
||||||
|
<!-- Total Gross -->
|
||||||
|
<Adnotacje>
|
||||||
|
<!-- 1 yes - 2 no -->
|
||||||
|
<P_16>2</P_16>
|
||||||
|
<!-- Keine Selbstfakturierung -->
|
||||||
|
<P_17>2</P_17>
|
||||||
|
<!-- Kein Reverse Charge -->
|
||||||
|
<P_18>2</P_18>
|
||||||
|
<!-- Kein Split Payment (Rechnung unter 15.000 PLN/EUR) -->
|
||||||
|
<P_18A>2</P_18A>
|
||||||
|
<!-- Keine Steuerbefreiung -->
|
||||||
|
<Zwolnienie>
|
||||||
|
<P_19N>1</P_19N>
|
||||||
|
</Zwolnienie>
|
||||||
|
<!-- Keine neuen Verkehrsmittel -->
|
||||||
|
<NoweSrodkiTransportu>
|
||||||
|
<P_22N>1</P_22N>
|
||||||
|
</NoweSrodkiTransportu>
|
||||||
|
<!-- Kein vereinfachtes Verfahren nach Art. 135 -->
|
||||||
|
<P_23>2</P_23>
|
||||||
|
<!-- Keine Margenregelung -->
|
||||||
|
<PMarzy>
|
||||||
|
<P_PMarzyN>1</P_PMarzyN>
|
||||||
|
</PMarzy>
|
||||||
|
</Adnotacje>
|
||||||
|
<!-- Invoice Type (VAT) -->
|
||||||
|
<RodzajFaktury>VAT</RodzajFaktury>
|
||||||
|
<!-- Invoice Positions: FaWiersz -->
|
||||||
|
<FaWiersz>
|
||||||
|
<NrWierszaFa>1</NrWierszaFa>
|
||||||
|
<UU_ID>d8c66c5e-dc09-45be-b986-a2cc298f4195</UU_ID>
|
||||||
|
<P_7>EX-GDY-2509-010</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>100.00</P_9A>
|
||||||
|
<P_11>100.00</P_11>
|
||||||
|
<P_12>0 KR</P_12> <!-- 0% explizit angegeben -->
|
||||||
|
</FaWiersz>
|
||||||
|
<FaWiersz>
|
||||||
|
<NrWierszaFa>2</NrWierszaFa>
|
||||||
|
<UU_ID>e8f02172-9b2a-4dcb-84b5-632e5c2a52b6</UU_ID>
|
||||||
|
<P_7>EX-GDY-2509-010</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>50.00</P_9A>
|
||||||
|
<P_11>50.00</P_11>
|
||||||
|
<P_12>0 KR</P_12> <!-- 0% explizit angegeben -->
|
||||||
|
</FaWiersz>
|
||||||
|
</Fa>
|
||||||
|
</Faktura>
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"invoices": [
|
||||||
|
{
|
||||||
|
"ordinalNumber": 1,
|
||||||
|
"referenceNumber": "20251126-EE-481F863000-7F510C2298-8A",
|
||||||
|
"invoiceHash": "tR5z/LEg2accg3AKWoibxJF9Xoht15Pf8T1lT6S3WLc=",
|
||||||
|
"invoicingDate": "2025-11-26T21:00:26.5956823+00:00",
|
||||||
|
"status": {
|
||||||
|
"code": 450,
|
||||||
|
"description": "Błąd weryfikacji semantyki dokumentu faktury",
|
||||||
|
"details": [
|
||||||
|
"Could not find schema information for the element 'http://crd.gov.pl/wzor/2025/06/25/13775/:Faktura'."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Faktura
|
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
|
||||||
xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
|
xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
|
||||||
xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/">
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
|
||||||
<Naglowek>
|
<Naglowek>
|
||||||
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
|
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
|
||||||
<WariantFormularza>3</WariantFormularza>
|
<WariantFormularza>3</WariantFormularza>
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,8 @@ th { font-weight: bold;}
|
||||||
<bpmn2:flowNodeRef>gateway_H0SvJw</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>gateway_H0SvJw</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>task_awoe6g</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>task_awoe6g</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>event_UOQyTg</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>event_UOQyTg</bpmn2:flowNodeRef>
|
||||||
|
<bpmn2:flowNodeRef>event_uWaQ1A</bpmn2:flowNodeRef>
|
||||||
|
<bpmn2:flowNodeRef>event_wYot0Q</bpmn2:flowNodeRef>
|
||||||
</bpmn2:lane>
|
</bpmn2:lane>
|
||||||
<bpmn2:lane id="Lane_6" name="Buchhaltung">
|
<bpmn2:lane id="Lane_6" name="Buchhaltung">
|
||||||
<bpmn2:documentation id="documentation_N3gEbw"/>
|
<bpmn2:documentation id="documentation_N3gEbw"/>
|
||||||
|
|
@ -168,6 +170,7 @@ th { font-weight: bold;}
|
||||||
<bpmn2:flowNodeRef>ExclusiveGateway_3</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>ExclusiveGateway_3</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>dataObject_V0KVQg</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>dataObject_V0KVQg</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>event_w96sOg</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>event_w96sOg</bpmn2:flowNodeRef>
|
||||||
|
<bpmn2:flowNodeRef>event_hOBFVQ</bpmn2:flowNodeRef>
|
||||||
</bpmn2:lane>
|
</bpmn2:lane>
|
||||||
</bpmn2:laneSet>
|
</bpmn2:laneSet>
|
||||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Due date]">
|
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Due date]">
|
||||||
|
|
@ -494,6 +497,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
||||||
<bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
|
||||||
<bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming>
|
<bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>sequenceFlow_I5jpvQ</bpmn2:outgoing>
|
<bpmn2:outgoing>sequenceFlow_I5jpvQ</bpmn2:outgoing>
|
||||||
|
<bpmn2:outgoing>sequenceFlow_4Wq8Vw</bpmn2:outgoing>
|
||||||
</bpmn2:task>
|
</bpmn2:task>
|
||||||
<bpmn2:endEvent id="EndEvent_1" name="Ende">
|
<bpmn2:endEvent id="EndEvent_1" name="Ende">
|
||||||
<bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
|
||||||
|
|
@ -1413,7 +1417,9 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
||||||
<bpmn2:incoming>sequenceFlow_sO35Dg</bpmn2:incoming>
|
<bpmn2:incoming>sequenceFlow_sO35Dg</bpmn2:incoming>
|
||||||
<bpmn2:incoming>sequenceFlow_jpNRMg</bpmn2:incoming>
|
<bpmn2:incoming>sequenceFlow_jpNRMg</bpmn2:incoming>
|
||||||
<bpmn2:incoming>sequenceFlow_ui7tJg</bpmn2:incoming>
|
<bpmn2:incoming>sequenceFlow_ui7tJg</bpmn2:incoming>
|
||||||
|
<bpmn2:incoming>sequenceFlow_1T6Vew</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>sequenceFlow_2BSFNw</bpmn2:outgoing>
|
<bpmn2:outgoing>sequenceFlow_2BSFNw</bpmn2:outgoing>
|
||||||
|
<bpmn2:outgoing>sequenceFlow_hN7cDg</bpmn2:outgoing>
|
||||||
</bpmn2:task>
|
</bpmn2:task>
|
||||||
<bpmn2:intermediateCatchEvent id="event_sGMk3g" imixs:activityid="200" name="[create E-Invoice]">
|
<bpmn2:intermediateCatchEvent id="event_sGMk3g" imixs:activityid="200" name="[create E-Invoice]">
|
||||||
<bpmn2:extensionElements>
|
<bpmn2:extensionElements>
|
||||||
|
|
@ -2194,6 +2200,7 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
||||||
</bpmn2:sequenceFlow>
|
</bpmn2:sequenceFlow>
|
||||||
<bpmn2:exclusiveGateway default="sequenceFlow_Tp8LKg" gatewayDirection="Diverging" id="gateway_S4b22A" name="">
|
<bpmn2:exclusiveGateway default="sequenceFlow_Tp8LKg" gatewayDirection="Diverging" id="gateway_S4b22A" name="">
|
||||||
<bpmn2:documentation id="documentation_k0Mbug"/>
|
<bpmn2:documentation id="documentation_k0Mbug"/>
|
||||||
|
<bpmn2:incoming>sequenceFlow_AdA0GA</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>sequenceFlow_DCA0Tw</bpmn2:outgoing>
|
<bpmn2:outgoing>sequenceFlow_DCA0Tw</bpmn2:outgoing>
|
||||||
<bpmn2:outgoing>sequenceFlow_2th1MQ</bpmn2:outgoing>
|
<bpmn2:outgoing>sequenceFlow_2th1MQ</bpmn2:outgoing>
|
||||||
<bpmn2:outgoing>sequenceFlow_Tp8LKg</bpmn2:outgoing>
|
<bpmn2:outgoing>sequenceFlow_Tp8LKg</bpmn2:outgoing>
|
||||||
|
|
@ -2388,6 +2395,167 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
||||||
<bpmn2:sequenceFlow id="sequenceFlow_ui7tJg" sourceRef="gateway_k00hrA" targetRef="task_nKKaIg">
|
<bpmn2:sequenceFlow id="sequenceFlow_ui7tJg" sourceRef="gateway_k00hrA" targetRef="task_nKKaIg">
|
||||||
<bpmn2:documentation id="documentation_guvIKA"/>
|
<bpmn2:documentation id="documentation_guvIKA"/>
|
||||||
</bpmn2:sequenceFlow>
|
</bpmn2:sequenceFlow>
|
||||||
|
<bpmn2:intermediateThrowEvent id="event_hOBFVQ" name="KSEF">
|
||||||
|
<bpmn2:incoming>sequenceFlow_4Wq8Vw</bpmn2:incoming>
|
||||||
|
<bpmn2:linkEventDefinition id="linkEventDefinition_FX1s0Q" name="Link Event Definition 5"/>
|
||||||
|
<bpmn2:documentation id="documentation_90gY9Q"/>
|
||||||
|
</bpmn2:intermediateThrowEvent>
|
||||||
|
<bpmn2:sequenceFlow id="sequenceFlow_4Wq8Vw" sourceRef="Task_1" targetRef="event_hOBFVQ">
|
||||||
|
<bpmn2:documentation id="documentation_JBOF3w"/>
|
||||||
|
</bpmn2:sequenceFlow>
|
||||||
|
<bpmn2:intermediateCatchEvent id="event_uWaQ1A" imixs:activityid="10" name="Save">
|
||||||
|
<bpmn2:extensionElements>
|
||||||
|
<imixs:item name="keylogtimeformat" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyarchive" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtmailsubject" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyaccessmode" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyscheduledactivity" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="rtfmailbody" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyversion" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="numnextactivityid" type="xs:int">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyfollowup" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keypublicresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[1]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keylogdateformat" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyownershipfields" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="numnextid" type="xs:int">
|
||||||
|
<imixs:value><![CDATA[5000]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtnextprocesstree" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtactivityresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtname" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[Speichern]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyownershipmode" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="rtfresultlog" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||||
|
<imixs:value>false</imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
</bpmn2:extensionElements>
|
||||||
|
<bpmn2:documentation id="documentation_fjA9Bg"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
|
||||||
|
<bpmn2:outgoing>sequenceFlow_1T6Vew</bpmn2:outgoing>
|
||||||
|
</bpmn2:intermediateCatchEvent>
|
||||||
|
<bpmn2:sequenceFlow id="sequenceFlow_1T6Vew" sourceRef="event_uWaQ1A" targetRef="task_nKKaIg">
|
||||||
|
<bpmn2:documentation id="documentation_961bZA"/>
|
||||||
|
</bpmn2:sequenceFlow>
|
||||||
|
<bpmn2:intermediateCatchEvent id="event_wYot0Q" imixs:activityid="207" name="[Export KSeF]">
|
||||||
|
<bpmn2:extensionElements>
|
||||||
|
<imixs:item name="keylogtimeformat" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyarchive" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtmailsubject" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyaccessmode" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyscheduledactivity" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="rtfmailbody" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyversion" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="numnextactivityid" type="xs:int">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyfollowup" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keypublicresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[1]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keylogdateformat" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[2]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyownershipfields" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="numnextid" type="xs:int">
|
||||||
|
<imixs:value><![CDATA[5000]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtnextprocesstree" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtactivityresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[<ksef name="EXPORT">
|
||||||
|
<debug>true</debug>
|
||||||
|
</ksef> ]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtname" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[Speichern]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyownershipmode" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="rtfresultlog" type="xs:string">
|
||||||
|
<imixs:value/>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||||
|
<imixs:value>false</imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
</bpmn2:extensionElements>
|
||||||
|
<bpmn2:documentation id="documentation_QA74Ag"/>
|
||||||
|
<bpmn2:incoming>sequenceFlow_hN7cDg</bpmn2:incoming>
|
||||||
|
<bpmn2:outgoing>sequenceFlow_AdA0GA</bpmn2:outgoing>
|
||||||
|
<bpmn2:signalEventDefinition id="signalEventDefinition_O7abkQ" signalRef="signal_11"/>
|
||||||
|
</bpmn2:intermediateCatchEvent>
|
||||||
|
<bpmn2:sequenceFlow id="sequenceFlow_hN7cDg" sourceRef="task_nKKaIg" targetRef="event_wYot0Q">
|
||||||
|
<bpmn2:documentation id="documentation_MXhwpg"/>
|
||||||
|
</bpmn2:sequenceFlow>
|
||||||
|
<bpmn2:sequenceFlow id="sequenceFlow_AdA0GA" sourceRef="event_wYot0Q" targetRef="gateway_S4b22A">
|
||||||
|
<bpmn2:documentation id="documentation_bun7fw"/>
|
||||||
|
</bpmn2:sequenceFlow>
|
||||||
</bpmn2:process>
|
</bpmn2:process>
|
||||||
<bpmn2:process id="process_2" name="Default Process" processType="Public">
|
<bpmn2:process id="process_2" name="Default Process" processType="Public">
|
||||||
<bpmn2:documentation id="documentation_J67Rkw"/>
|
<bpmn2:documentation id="documentation_J67Rkw"/>
|
||||||
|
|
@ -2759,6 +2927,24 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
||||||
<dc:Bounds height="20.0" width="100.0" x="2325.0" y="396.0"/>
|
<dc:Bounds height="20.0" width="100.0" x="2325.0" y="396.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape bpmnElement="event_hOBFVQ" id="BPMNShape_lp0cJw">
|
||||||
|
<dc:Bounds height="36.0" width="36.0" x="1300.0" y="1260.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_Nfu0Cw">
|
||||||
|
<dc:Bounds height="20.0" width="100.0" x="1268.0" y="1299.0"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape bpmnElement="event_uWaQ1A" id="BPMNShape_SQwkDA">
|
||||||
|
<dc:Bounds height="36.0" width="36.0" x="977.0" y="557.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_M5uthw">
|
||||||
|
<dc:Bounds height="20.0" width="100.0" x="945.0" y="596.0"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape bpmnElement="event_wYot0Q" id="BPMNShape_c1U2mw">
|
||||||
|
<dc:Bounds height="36.0" width="36.0" x="1297.0" y="387.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_x2CXZA">
|
||||||
|
<dc:Bounds height="20.0" width="100.0" x="1265.0" y="426.0"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_33" id="BPMNEdge_SequenceFlow_34" sourceElement="BPMNShape_ExclusiveGateway_1">
|
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_33" id="BPMNEdge_SequenceFlow_34" sourceElement="BPMNShape_ExclusiveGateway_1">
|
||||||
<di:waypoint x="910.0" y="835.0"/>
|
<di:waypoint x="910.0" y="835.0"/>
|
||||||
<di:waypoint x="1130.0" y="835.0"/>
|
<di:waypoint x="1130.0" y="835.0"/>
|
||||||
|
|
@ -3101,6 +3287,29 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
||||||
<di:waypoint x="921.0" y="527.0"/>
|
<di:waypoint x="921.0" y="527.0"/>
|
||||||
<di:waypoint x="921.0" y="490.0"/>
|
<di:waypoint x="921.0" y="490.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4Wq8Vw" id="BPMNEdge_YLr5gA" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_lp0cJw">
|
||||||
|
<di:waypoint x="1240.0" y="1375.0"/>
|
||||||
|
<di:waypoint x="1270.0" y="1375.0"/>
|
||||||
|
<di:waypoint x="1270.0" y="1278.0"/>
|
||||||
|
<di:waypoint x="1300.0" y="1278.0"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1T6Vew" id="BPMNEdge_NI9PQQ" sourceElement="BPMNShape_SQwkDA" targetElement="BPMNShape_ksu2zQ">
|
||||||
|
<di:waypoint x="977.0" y="575.0"/>
|
||||||
|
<di:waypoint x="964.0" y="575.0"/>
|
||||||
|
<di:waypoint x="964.0" y="465.0"/>
|
||||||
|
<di:waypoint x="950.0" y="465.0"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_hN7cDg" id="BPMNEdge_d0uNUg" sourceElement="BPMNShape_ksu2zQ" targetElement="BPMNShape_c1U2mw">
|
||||||
|
<di:waypoint x="894.0" y="440.0"/>
|
||||||
|
<di:waypoint x="894.0" y="409.0"/>
|
||||||
|
<di:waypoint x="1297.0" y="409.0"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_AdA0GA" id="BPMNEdge_ZdEobw" sourceElement="BPMNShape_c1U2mw" targetElement="BPMNShape_whGktg">
|
||||||
|
<di:waypoint x="1333.0" y="409.0"/>
|
||||||
|
<di:waypoint x="1420.0" y="409.0"/>
|
||||||
|
<di:waypoint x="1420.0" y="465.0"/>
|
||||||
|
<di:waypoint x="1500.0" y="465.0"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||||
<dc:Font name="arial" size="9.0"/>
|
<dc:Font name="arial" size="9.0"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue