Korrektur der Polnischen KSeF Verarbeitung

This commit is contained in:
Ralph Soika 2026-04-16 06:22:06 +02:00
parent d11099e8a3
commit 9884a3cd00
2 changed files with 29 additions and 6 deletions

View file

@ -136,7 +136,7 @@ public class KSeFAdapter implements SignalAdapter {
} }
/** /**
* THis method updates an e-invoice template with the data stored in the * This method updates an e-invoice template with the data stored in the
* workitem. * workitem.
* *
* First the method loads an EInvoiceModel based on the provided XML Template * First the method loads an EInvoiceModel based on the provided XML Template
@ -345,6 +345,13 @@ public class KSeFAdapter implements SignalAdapter {
/** /**
* Parses the data list of an invoice line and returns a TradeLineItem object. * Parses the data list of an invoice line and returns a TradeLineItem object.
* The order of the list items must be exactly! * The order of the list items must be exactly!
*
* # 16.04.2026
* Laut Herrn Grzegorz Grzelczyk dürfen in den Rechnungspositionen nur netto
* werte eingetragen sein. Siehe buildTradeLineItem()
*
* Des weiteren soll anstatt datev.text (pos nummer) der original billing text
* ausgewiesen werden
*/ */
private TradeLineItem buildTradeLineItem(ItemCollection orderItem, int pos) { private TradeLineItem buildTradeLineItem(ItemCollection orderItem, int pos) {
if (orderItem == null) { if (orderItem == null) {
@ -357,16 +364,27 @@ public class KSeFAdapter implements SignalAdapter {
// invoices! // invoices!
TradeLineItem tradeLineItem = new TradeLineItem(pos + ""); TradeLineItem tradeLineItem = new TradeLineItem(pos + "");
tradeLineItem.setName(orderItem.getItemValueString("datev.text")); // Herrn Grzegorz Grzelczyk möchte hier BillingText
// tradeLineItem.setName(orderItem.getItemValueString("datev.text"));
tradeLineItem.setName(orderItem.getItemValueString("billingtext"));
tradeLineItem.setQuantity(1); tradeLineItem.setQuantity(1);
double vat = orderItem.getItemValueDouble("datev.vatrate"); // 23.00 double vat = orderItem.getItemValueDouble("datev.vatrate"); // 23.00
double netto = orderItem.getItemValueDouble("datev.umsatz"); // 970.00 double netto = orderItem.getItemValueDouble("datev.umsatz"); // 970.00
double brutto = netto * (1 + (vat / 100));
double steuer = brutto - netto; // # 16.04.2026
// Der total bezieht sich laut Herrn Grzegorz Grzelczyk ausschließlich auf den
// Nettowert x Menge.
// Der Brutto Wert ist hier falsch! Da die Menge immer 1 ist ist das beide male
// der selbe wert
// WRONG: tradeLineItem.setTotal(brutto);
// double brutto = netto * (1 + (vat / 100));
// double steuer = brutto - netto;
tradeLineItem.setTaxRate(vat); tradeLineItem.setTaxRate(vat);
tradeLineItem.setNetPrice(netto); tradeLineItem.setNetPrice(netto);
tradeLineItem.setTotal(brutto); tradeLineItem.setTotal(netto); // menge x netto
return tradeLineItem; return tradeLineItem;
} }

View file

@ -332,6 +332,8 @@ public class CargosoftXMLInvoiceImportService {
* Creates and processes a new workitem with a given xml information from the * Creates and processes a new workitem with a given xml information from the
* fileData * fileData
* *
* Hier wird das Corgosoft XML geparst und die Felder in Imixs gefüllt. Z.b.
* werden hier auch die ChildItems angelegt.
* *
* @return * @return
* @throws ModelException * @throws ModelException
@ -628,7 +630,10 @@ public class CargosoftXMLInvoiceImportService {
XPathExpression billingCodeExpr = xPath.compile("BillingCode/Codes/Code"); XPathExpression billingCodeExpr = xPath.compile("BillingCode/Codes/Code");
String billingCode = (String) billingCodeExpr.evaluate(rowNode, XPathConstants.STRING); String billingCode = (String) billingCodeExpr.evaluate(rowNode, XPathConstants.STRING);
// skip row wenn billing code = "WÄHRUNG" // skip row wenn billing code = "WÄHRUNG"
if ("WÄHRUNG".equals(billingCode)) { // # Ergänzung 16.4.2026
// Da dieses flag von Cargosoft machmachmal auch 'KURS' lautet müssen wir das
// auch berücksichtigen.
if ("WÄHRUNG".equals(billingCode) || "KURS".equals(billingCode)) {
continue; // skip this row! continue; // skip this row!
} }
// Get the FileNumber value // Get the FileNumber value