diff --git a/doc/KSeF/FEEDBACK.md b/doc/KSeF/FEEDBACK.md new file mode 100644 index 0000000..47b90b5 --- /dev/null +++ b/doc/KSeF/FEEDBACK.md @@ -0,0 +1,25 @@ +# Feedback zum PDF FIle + +## 1. Podmiot 1 — Daten des Rechnungsausstellers (AGLP) + +- `` FIXED +- `` FIXED +- `PL` FIXED + +## 2. Podmiot 2 — Daten des Rechnungsempfängers + +- ` ` - ALREADY IMPLEMENTED +- EU-Rechnungsempfänger - UNCLEAR! +- Anschrift des Rechnungsempfängers - CARGOSOFT TOPIC + +## 3. Abschnitt — Rechnungskopf (außer Standardfelder P_1, P_2, P_6) + +- `` - FIXED +- `` - FIXED + +# 4. Rechnungspositionen — Pflichtfelder je Position + +- `` - FIXED +- `` - IGNORED - NOT FIXED! + +ab `` wird es krimminell diff --git a/doc/KSeF/Feld-Mapping Cargo Soft zu KSeF (DE).pdf b/doc/KSeF/Feld-Mapping Cargo Soft zu KSeF (DE).pdf new file mode 100644 index 0000000..f308a26 Binary files /dev/null and b/doc/KSeF/Feld-Mapping Cargo Soft zu KSeF (DE).pdf differ diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java index 91b33e9..24dee1d 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/einvoice/KSeFAdapter.java @@ -292,6 +292,26 @@ public class KSeFAdapter implements SignalAdapter { */ model.setGrandTotalAmount(workitem.getItemValueDouble("invoice.total")); + /* + * KursWalutyZ + * + * Für Rechnungen in Fremdwährung obligatorisch. Anzuwenden ist der NBP- + * Durchschnittskurs des Tages vor Entstehen der Steuerpflicht (Art. 31a + * UStG-PL). + * Dezimalformat mit Punkt. + */ + String currency = workitem.getItemValueString("invoice.currency"); + if (!currency.isBlank() && !"PLN".equals(currency)) { + Element p15 = model.findChildNode(elementFa, EInvoiceNS.KSEF, "P_15"); + if (p15 != null) { + Double rate = workitem.getItemValueDouble("invoice.rate"); + logger.info("│ ├── set KursWalutyZ = " + rate); + Element element = model.findOrCreateChildNodeAfter(elementFa, EInvoiceNS.KSEF, "KursWalutyZ", + "P_15"); + element.setTextContent(rate.toString()); + } + } + // finally set the due date at the end of the XML tree model.setDueDateTime(workitem.getItemValueLocalDate("invoice.duedate")); @@ -460,7 +480,18 @@ public class KSeFAdapter implements SignalAdapter { // Herrn Grzegorz Grzelczyk möchte hier BillingText // tradeLineItem.setName(orderItem.getItemValueString("datev.text")); - tradeLineItem.setName(orderItem.getItemValueString("billingtext")); + // tradeLineItem.setName(orderItem.getItemValueString("billingtext")); + // Herr Grzelczyk will das alle billing texte aus der liste, verkettet + // ausgegeben werden. + List billingTexts = orderItem.getItemValue("billingtext"); + String billingTextName = billingTexts == null + ? "" + : String.join(", ", billingTexts); + final int MAX_LENGTH = 512; + if (billingTextName.length() > MAX_LENGTH) { + billingTextName = billingTextName.substring(0, MAX_LENGTH); + } + tradeLineItem.setName(billingTextName); tradeLineItem.setQuantity(1); diff --git a/workflow/pl/e-invoice/templates/ksef.xml b/workflow/pl/e-invoice/templates/ksef.xml index 76e0401..5f80b0d 100644 --- a/workflow/pl/e-invoice/templates/ksef.xml +++ b/workflow/pl/e-invoice/templates/ksef.xml @@ -13,14 +13,14 @@ + PL 9552521552 - Alexander Global Logistics + ALEXANDER GLOBAL LOGISTICS POLAND sp. z o.o. PL - Gdanska 36 - 70-660 Szczecin + ul. Gdańska 36, 70-660 Szczecin MBudas@alexander-logistics.com @@ -57,6 +57,7 @@ #CURRENCY# + Szczecin diff --git a/workflow/pl/rechnungsausgang-pl-1.1.1.bpmn b/workflow/pl/rechnungsausgang-pl-1.1.1.bpmn index 82bcfb2..fb10538 100644 --- a/workflow/pl/rechnungsausgang-pl-1.1.1.bpmn +++ b/workflow/pl/rechnungsausgang-pl-1.1.1.bpmn @@ -2878,7 +2878,8 @@ AGL Poland Team - ]]> + +home]]> @@ -3193,13 +3194,13 @@ AGL Poland Team - + - + @@ -3301,7 +3302,7 @@ AGL Poland Team - +