update - added test
This commit is contained in:
parent
fc69af8bd5
commit
1a614564a8
6 changed files with 512 additions and 113 deletions
|
|
@ -146,7 +146,7 @@ public class KSeFAdapter implements SignalAdapter {
|
||||||
* @param workitem
|
* @param workitem
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
private void updateEInvoice(FileData fileDataXMLTemplate, ItemCollection workitem) throws PluginException {
|
public void updateEInvoice(FileData fileDataXMLTemplate, ItemCollection workitem) throws PluginException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
EInvoiceModel model = EInvoiceModelFactory.read(new ByteArrayInputStream(fileDataXMLTemplate.getContent()));
|
EInvoiceModel model = EInvoiceModelFactory.read(new ByteArrayInputStream(fileDataXMLTemplate.getContent()));
|
||||||
|
|
|
||||||
|
|
@ -426,8 +426,11 @@ public class KSeFAPIService {
|
||||||
// Base64URL ohne Padding
|
// Base64URL ohne Padding
|
||||||
String base64Url = Base64.getUrlEncoder().withoutPadding().encodeToString(decoded);
|
String base64Url = Base64.getUrlEncoder().withoutPadding().encodeToString(decoded);
|
||||||
|
|
||||||
// https://ksef-test.mf.gov.pl/api/v2 -> https://ksef-test.mf.gov.pl/client-app/
|
// Die Client App URL muss angepasst werden. Das /v2/ element aus der Basis URL
|
||||||
baseURL = baseURL.replace("/api/v2", "/client-app/invoice");
|
// muss mit 'client-app/invoice' ausgetauscht werden.
|
||||||
|
// Es entsteht dann https://api-test.ksef.mf.gov.pl/client-app/invoice/
|
||||||
|
|
||||||
|
baseURL = baseURL.replace("/v2", "/client-app/invoice");
|
||||||
// Build verification URL
|
// Build verification URL
|
||||||
workitem.setItemValue("ksef.VerificationUrl",
|
workitem.setItemValue("ksef.VerificationUrl",
|
||||||
baseURL + "/" + kseFAuthManager.getKsefNip() + "/" + invoiceDate + "/"
|
baseURL + "/" + kseFAuthManager.getKsefNip() + "/" + invoiceDate + "/"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,170 @@
|
||||||
|
package com.alexanderlogistics.ksef.api;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.imixs.workflow.FileData;
|
||||||
|
import org.imixs.workflow.ItemCollection;
|
||||||
|
import org.imixs.workflow.engine.DocumentService;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import com.alexanderlogistics.BusinessPartnerService;
|
||||||
|
import com.alexanderlogistics.InvoiceService;
|
||||||
|
import com.alexanderlogistics.TestLoggerConfig;
|
||||||
|
import com.alexanderlogistics.einvoice.KSeFAdapter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Der KSeFAdapterTest prüft die Umwandlung einer Rechnung in die KSeF XML
|
||||||
|
* Struktur.
|
||||||
|
*
|
||||||
|
* Der Test simuliert eine Invoice und ruft dann den KSeFAdapter an um ein
|
||||||
|
* Output File zu erzeugen.
|
||||||
|
* <p>
|
||||||
|
* Zum validieren kann man dann den validate_xml.sh Script hernehmen
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class KSeFAdapterTest {
|
||||||
|
|
||||||
|
private static Logger logger = Logger.getLogger(KSeFAdapterTest.class.getName());
|
||||||
|
|
||||||
|
private static final String TEMPLATE_FILE = "ksef/ksef.xml";
|
||||||
|
private static final String OUTPUT_FILE = "ksef-output.xml";
|
||||||
|
|
||||||
|
ItemCollection workitem;
|
||||||
|
ItemCollection businessPartner;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private BusinessPartnerService businessPartnerService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private DocumentService documentService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private InvoiceService invoiceService;
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private KSeFAdapter adapter;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setup() throws Exception {
|
||||||
|
|
||||||
|
TestLoggerConfig.setupTestLogger();
|
||||||
|
// Prepare a workitem with typical invoice data
|
||||||
|
workitem = new ItemCollection();
|
||||||
|
workitem.setItemValue("invoice.number", "FV/2025/001");
|
||||||
|
workitem.setItemValue("invoice.date", LocalDate.of(2025, 2, 10));
|
||||||
|
workitem.setItemValue("invoice.duedate", LocalDate.of(2025, 3, 10));
|
||||||
|
workitem.setItemValue("invoice.currency", "PLN");
|
||||||
|
workitem.setItemValue("invoice.total.net", 10000.00);
|
||||||
|
workitem.setItemValue("invoice.total.tax", 23.0);
|
||||||
|
workitem.setItemValue("invoice.total", 12300.00);
|
||||||
|
workitem.setItemValue("invoice.correction", "false");
|
||||||
|
workitem.setItemValue("invoice.CorrectionInvoiceNumber", "");
|
||||||
|
workitem.setItemValue("partner.id", "BP-001");
|
||||||
|
workitem.setItemValue("partner.vat", "PL1234567890");
|
||||||
|
|
||||||
|
// Prepare child items (invoice line items)
|
||||||
|
List<Object> childItems = new ArrayList<>();
|
||||||
|
ItemCollection lineItem1 = new ItemCollection();
|
||||||
|
lineItem1.setItemValue("numpos", "1");
|
||||||
|
lineItem1.setItemValue("datev.text", "Transport Berlin - Warsaw");
|
||||||
|
lineItem1.setItemValue("datev.umsatz", 6000.00);
|
||||||
|
childItems.add(lineItem1.getAllItems());
|
||||||
|
|
||||||
|
ItemCollection lineItem2 = new ItemCollection();
|
||||||
|
lineItem2.setItemValue("numpos", "2");
|
||||||
|
lineItem2.setItemValue("datev.text", "Customs handling");
|
||||||
|
lineItem2.setItemValue("datev.umsatz", 4000.00);
|
||||||
|
childItems.add(lineItem2.getAllItems());
|
||||||
|
|
||||||
|
workitem.setItemValue("_childitems", childItems);
|
||||||
|
|
||||||
|
// Prepare mock business partner
|
||||||
|
businessPartner = new ItemCollection();
|
||||||
|
businessPartner.setItemValue("partner.name", "Test Sp. z o.o.");
|
||||||
|
businessPartner.setItemValue("partner.country", "PL");
|
||||||
|
businessPartner.setItemValue("partner.city", "Warszawa");
|
||||||
|
businessPartner.setItemValue("partner.zip", "00-001");
|
||||||
|
businessPartner.setItemValue("partner.address", "ul. Testowa 1");
|
||||||
|
businessPartner.setItemValue("partner.vat", "PL1234567890");
|
||||||
|
businessPartner.setItemValue("dbtr.number", "D-12345");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erzeugt ein lokales XML File zum testen
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@DisplayName("Test Transform")
|
||||||
|
public void testTransform() throws Exception {
|
||||||
|
logger.info("==> Test: Upload Invoice XML");
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
when(businessPartnerService.getBusinessPartnerByID("BP-001"))
|
||||||
|
.thenReturn(businessPartner);
|
||||||
|
|
||||||
|
FileData xmlTemplate = loadTemplateFromResources(TEMPLATE_FILE);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
adapter.updateEInvoice(xmlTemplate, workitem);
|
||||||
|
|
||||||
|
// Assert - basic checks
|
||||||
|
assertNotNull(xmlTemplate.getContent(), "XML content should not be null after update");
|
||||||
|
assertTrue(xmlTemplate.getContent().length > 0, "XML content should not be empty");
|
||||||
|
|
||||||
|
// Write output for manual inspection
|
||||||
|
writeOutputToResources(xmlTemplate, OUTPUT_FILE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Helper methods ──────────────────────────────────────────────
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the KSeF XML template from src/test/resources.
|
||||||
|
*/
|
||||||
|
private FileData loadTemplateFromResources(String filename) {
|
||||||
|
try (InputStream is = getClass().getClassLoader().getResourceAsStream(filename)) {
|
||||||
|
if (is == null) {
|
||||||
|
fail("Template file not found in test resources: " + filename
|
||||||
|
+ "\nPlease place your KSeF XML template at: src/test/resources/" + filename);
|
||||||
|
}
|
||||||
|
byte[] content = is.readAllBytes();
|
||||||
|
return new FileData(filename, content, "application/xml", null);
|
||||||
|
} catch (IOException e) {
|
||||||
|
fail("Failed to read template: " + e.getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the resulting XML to src/test/resources/output/ for manual inspection.
|
||||||
|
*/
|
||||||
|
private void writeOutputToResources(FileData fileData, String filename) throws IOException {
|
||||||
|
Path outputDir = Paths.get("src", "test", "resources", "output");
|
||||||
|
Files.createDirectories(outputDir);
|
||||||
|
Path outputPath = outputDir.resolve(filename);
|
||||||
|
Files.write(outputPath, fileData.getContent());
|
||||||
|
System.out.println("──────────────────────────────────────────────");
|
||||||
|
System.out.println("Output written to: " + outputPath.toAbsolutePath());
|
||||||
|
System.out.println("──────────────────────────────────────────────");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
<?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-19T16:43:15.545220735Z</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 -->
|
||||||
|
<!-- <NIP></NIP> -->
|
||||||
|
<Nazwa>REGESTA Spolka Akcyjna</Nazwa>
|
||||||
|
</DaneIdentyfikacyjne>
|
||||||
|
<Adres>
|
||||||
|
<KodKraju>PL</KodKraju>
|
||||||
|
<AdresL1>ul. Nowowiejska 52a</AdresL1>
|
||||||
|
<AdresL2>28-400 Pinczow</AdresL2>
|
||||||
|
</Adres>
|
||||||
|
<!---
|
||||||
|
Contact information from buyer can be left
|
||||||
|
<DaneKontaktowe>
|
||||||
|
<Email></Email>
|
||||||
|
<Telefon></Telefon>
|
||||||
|
</DaneKontaktowe>
|
||||||
|
-->
|
||||||
|
<NrKlienta>D15231</NrKlienta>
|
||||||
|
<JST>2</JST>
|
||||||
|
<!-- fixed -->
|
||||||
|
<GV>2</GV>
|
||||||
|
<!-- fixed -->
|
||||||
|
</Podmiot2>
|
||||||
|
<!-- Invoice Data -->
|
||||||
|
<Fa>
|
||||||
|
<KodWaluty>EUR</KodWaluty>
|
||||||
|
<P_1>2024-04-03</P_1>
|
||||||
|
<!-- Invoice Date -->
|
||||||
|
<P_2>216525</P_2>
|
||||||
|
<!-- Invoice Number -->
|
||||||
|
<P_6>2024-06-02</P_6>
|
||||||
|
<!-- Due Date -->
|
||||||
|
<!-- Line Items will be added here -->
|
||||||
|
<!-- Totals -->
|
||||||
|
<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 -->
|
||||||
|
<FaWiersz>
|
||||||
|
<NrWierszaFa>1</NrWierszaFa>
|
||||||
|
<UU_ID>2b141c75-7867-4975-846a-a2c2683e1fc5</UU_ID>
|
||||||
|
<P_7>R IM-ZEL-2403-259</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>4128.00</P_9A>
|
||||||
|
<P_11>4128.00</P_11>
|
||||||
|
<P_12>0</P_12>
|
||||||
|
</FaWiersz>
|
||||||
|
<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>
|
||||||
|
<!-- Normale Rechnung (VAT) -->
|
||||||
|
<RodzajFaktury>VAT | ??? </RodzajFaktury>
|
||||||
|
<!-- Invoice Poitions
|
||||||
|
<FaWiersz>
|
||||||
|
<NrWierszaFa>1</NrWierszaFa>
|
||||||
|
<UU_ID>f980444d-2cca-4fde-bf67-a08551f0dbd8</UU_ID>
|
||||||
|
<P_7>R IM-ZEL-2403-259</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>4128.00</P_9A>
|
||||||
|
<P_11>4128.00</P_11>
|
||||||
|
<P_12>23</P_12>
|
||||||
|
</FaWiersz>
|
||||||
|
-->
|
||||||
|
</Fa>
|
||||||
|
</Faktura>
|
||||||
|
|
@ -1,119 +1,108 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"
|
<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:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
<Naglowek>
|
|
||||||
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
|
<Naglowek>
|
||||||
<WariantFormularza>3</WariantFormularza>
|
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
|
||||||
<DataWytworzeniaFa>2025-11-19T16:43:15.545220735Z</DataWytworzeniaFa>
|
<WariantFormularza>3</WariantFormularza>
|
||||||
<SystemInfo>Imixs eInvoice</SystemInfo>
|
<DataWytworzeniaFa>2026-06-05T02:45:33.422866Z</DataWytworzeniaFa>
|
||||||
</Naglowek>
|
<SystemInfo>Imixs eInvoice</SystemInfo>
|
||||||
<!-- Seller (Your Polish Company - Pre-filled) -->
|
</Naglowek>
|
||||||
<Podmiot1>
|
|
||||||
<DaneIdentyfikacyjne>
|
<!-- Seller (Your Polish Company - Pre-filled) -->
|
||||||
<NIP>9552521552</NIP>
|
<Podmiot1>
|
||||||
<Nazwa>Alexander Global Logistics</Nazwa>
|
<DaneIdentyfikacyjne>
|
||||||
</DaneIdentyfikacyjne>
|
<NIP>9552521552</NIP>
|
||||||
<Adres>
|
<Nazwa>Alexander Global Logistics</Nazwa>
|
||||||
<KodKraju>PL</KodKraju>
|
</DaneIdentyfikacyjne>
|
||||||
<AdresL1>Gdanska 36</AdresL1>
|
<Adres>
|
||||||
<AdresL2>70-660 Szczecin</AdresL2>
|
<KodKraju>PL</KodKraju>
|
||||||
</Adres>
|
<AdresL1>Gdanska 36</AdresL1>
|
||||||
<DaneKontaktowe>
|
<AdresL2>70-660 Szczecin</AdresL2>
|
||||||
<Email>MBudas@alexander-logistics.com</Email>
|
</Adres>
|
||||||
</DaneKontaktowe>
|
<DaneKontaktowe>
|
||||||
</Podmiot1>
|
<Email>MBudas@alexander-logistics.com</Email>
|
||||||
<!-- Buyer (Customer - Empty, to be filled) -->
|
</DaneKontaktowe>
|
||||||
<Podmiot2>
|
</Podmiot1>
|
||||||
<DaneIdentyfikacyjne>
|
|
||||||
<!-- NIP falls eine PL Ust Vorliegt
|
<!-- Buyer (Customer - Empty, to be filled) -->
|
||||||
|
<Podmiot2>
|
||||||
|
<DaneIdentyfikacyjne>
|
||||||
|
<!-- NIP falls eine PL Ust Vorliegt
|
||||||
ansonsten NrID - geht immer -->
|
ansonsten NrID - geht immer -->
|
||||||
<!-- <NIP></NIP> -->
|
<!-- <Nazwa>#Customer Name#</Nazwa> -->
|
||||||
<Nazwa>REGESTA Spolka Akcyjna</Nazwa>
|
</DaneIdentyfikacyjne>
|
||||||
</DaneIdentyfikacyjne>
|
<Adres>
|
||||||
<Adres>
|
<KodKraju></KodKraju>
|
||||||
<KodKraju>PL</KodKraju>
|
<AdresL1></AdresL1>
|
||||||
<AdresL1>ul. Nowowiejska 52a</AdresL1>
|
<AdresL2></AdresL2>
|
||||||
<AdresL2>28-400 Pinczow</AdresL2>
|
</Adres>
|
||||||
</Adres>
|
|
||||||
<!---
|
<!---
|
||||||
Contact information from buyer can be left
|
Contact information from buyer can be left
|
||||||
<DaneKontaktowe>
|
<DaneKontaktowe>
|
||||||
<Email></Email>
|
<Email></Email>
|
||||||
<Telefon></Telefon>
|
<Telefon></Telefon>
|
||||||
</DaneKontaktowe>
|
</DaneKontaktowe>
|
||||||
-->
|
-->
|
||||||
<NrKlienta>D15231</NrKlienta>
|
<NrKlienta>#CDTR-NUMBER#</NrKlienta>
|
||||||
<JST>2</JST>
|
<JST>2</JST> <!-- fixed -->
|
||||||
<!-- fixed -->
|
<GV>2</GV> <!-- fixed -->
|
||||||
<GV>2</GV>
|
</Podmiot2>
|
||||||
<!-- fixed -->
|
|
||||||
</Podmiot2>
|
<!-- Invoice Data -->
|
||||||
<!-- Invoice Data -->
|
<Fa>
|
||||||
<Fa>
|
<KodWaluty>#CURRENCY#</KodWaluty>
|
||||||
<KodWaluty>EUR</KodWaluty>
|
|
||||||
<P_1>2024-04-03</P_1>
|
<P_1></P_1> <!-- Invoice Date -->
|
||||||
<!-- Invoice Date -->
|
<P_2></P_2> <!-- Invoice Number -->
|
||||||
<P_2>216525</P_2>
|
<P_6></P_6> <!-- Due Date -->
|
||||||
<!-- Invoice Number -->
|
|
||||||
<P_6>2024-06-02</P_6>
|
<!-- Totals will only be computed by the EInvoiceModelKSeF Class-->
|
||||||
<!-- Due Date -->
|
<!--
|
||||||
<!-- Line Items will be added here -->
|
<P_13_1>0.00</P_13_1>
|
||||||
<!-- Totals -->
|
<P_14_1>0.00</P_14_1>
|
||||||
<P_13_1>4128.00</P_13_1>
|
<P_15>0.00</P_15>
|
||||||
<!-- Total Net -->
|
-->
|
||||||
<P_14_1>0.00</P_14_1>
|
|
||||||
<!-- Total VAT -->
|
<Adnotacje>
|
||||||
<P_15>4128.00</P_15>
|
<!-- 1 yes - 2 no -->
|
||||||
<!-- Total Gross -->
|
<P_16>2</P_16>
|
||||||
<FaWiersz>
|
|
||||||
<NrWierszaFa>1</NrWierszaFa>
|
<!-- Keine Selbstfakturierung -->
|
||||||
<UU_ID>2b141c75-7867-4975-846a-a2c2683e1fc5</UU_ID>
|
<P_17>2</P_17>
|
||||||
<P_7>R IM-ZEL-2403-259</P_7>
|
|
||||||
<P_8A>szt.</P_8A>
|
<!-- Kein Reverse Charge -->
|
||||||
<P_8B>1</P_8B>
|
<P_18>2</P_18>
|
||||||
<P_9A>4128.00</P_9A>
|
|
||||||
<P_11>4128.00</P_11>
|
<!-- Kein Split Payment (Rechnung unter 15.000 PLN/EUR) -->
|
||||||
<P_12>0</P_12>
|
<P_18A>2</P_18A>
|
||||||
</FaWiersz>
|
|
||||||
<Adnotacje>
|
<!-- Keine Steuerbefreiung -->
|
||||||
<!-- 1 yes - 2 no -->
|
<Zwolnienie>
|
||||||
<P_16>2</P_16>
|
<P_19N>1</P_19N>
|
||||||
<!-- Keine Selbstfakturierung -->
|
</Zwolnienie>
|
||||||
<P_17>2</P_17>
|
|
||||||
<!-- Kein Reverse Charge -->
|
<!-- Keine neuen Verkehrsmittel -->
|
||||||
<P_18>2</P_18>
|
<NoweSrodkiTransportu>
|
||||||
<!-- Kein Split Payment (Rechnung unter 15.000 PLN/EUR) -->
|
<P_22N>1</P_22N>
|
||||||
<P_18A>2</P_18A>
|
</NoweSrodkiTransportu>
|
||||||
<!-- Keine Steuerbefreiung -->
|
|
||||||
<Zwolnienie>
|
<!-- Kein vereinfachtes Verfahren nach Art. 135 -->
|
||||||
<P_19N>1</P_19N>
|
<P_23>2</P_23>
|
||||||
</Zwolnienie>
|
|
||||||
<!-- Keine neuen Verkehrsmittel -->
|
<!-- Keine Margenregelung -->
|
||||||
<NoweSrodkiTransportu>
|
<PMarzy>
|
||||||
<P_22N>1</P_22N>
|
<P_PMarzyN>1</P_PMarzyN>
|
||||||
</NoweSrodkiTransportu>
|
</PMarzy>
|
||||||
<!-- Kein vereinfachtes Verfahren nach Art. 135 -->
|
</Adnotacje>
|
||||||
<P_23>2</P_23>
|
<!-- Invoice Type (VAT) -->
|
||||||
<!-- Keine Margenregelung -->
|
<RodzajFaktury>VAT</RodzajFaktury>
|
||||||
<PMarzy>
|
|
||||||
<P_PMarzyN>1</P_PMarzyN>
|
|
||||||
</PMarzy>
|
<!-- Invoice Positions: FaWiersz -->
|
||||||
</Adnotacje>
|
|
||||||
<!-- Normale Rechnung (VAT) -->
|
</Fa>
|
||||||
<RodzajFaktury>VAT | ??? </RodzajFaktury>
|
|
||||||
<!-- Invoice Poitions
|
|
||||||
<FaWiersz>
|
|
||||||
<NrWierszaFa>1</NrWierszaFa>
|
|
||||||
<UU_ID>f980444d-2cca-4fde-bf67-a08551f0dbd8</UU_ID>
|
|
||||||
<P_7>R IM-ZEL-2403-259</P_7>
|
|
||||||
<P_8A>szt.</P_8A>
|
|
||||||
<P_8B>1</P_8B>
|
|
||||||
<P_9A>4128.00</P_9A>
|
|
||||||
<P_11>4128.00</P_11>
|
|
||||||
<P_12>23</P_12>
|
|
||||||
</FaWiersz>
|
|
||||||
-->
|
|
||||||
</Fa>
|
|
||||||
</Faktura>
|
</Faktura>
|
||||||
|
|
@ -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>2026-02-10T12:46:08.366684Z</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> -->
|
||||||
|
<NIP>1234567890</NIP>
|
||||||
|
<Nazwa>Test Sp. z o.o.</Nazwa>
|
||||||
|
</DaneIdentyfikacyjne>
|
||||||
|
<Adres>
|
||||||
|
<KodKraju>PL</KodKraju>
|
||||||
|
<AdresL1>ul. Testowa 1</AdresL1>
|
||||||
|
<AdresL2>00-001 Warszawa</AdresL2>
|
||||||
|
</Adres>
|
||||||
|
<!---
|
||||||
|
Contact information from buyer can be left
|
||||||
|
<DaneKontaktowe>
|
||||||
|
<Email></Email>
|
||||||
|
<Telefon></Telefon>
|
||||||
|
</DaneKontaktowe>
|
||||||
|
-->
|
||||||
|
<NrKlienta>D-12345</NrKlienta>
|
||||||
|
<JST>2</JST>
|
||||||
|
<!-- fixed -->
|
||||||
|
<GV>2</GV>
|
||||||
|
<!-- fixed -->
|
||||||
|
</Podmiot2>
|
||||||
|
<!-- Invoice Data -->
|
||||||
|
<Fa>
|
||||||
|
<KodWaluty>PLN</KodWaluty>
|
||||||
|
<P_1>2025-02-10</P_1>
|
||||||
|
<!-- Invoice Date -->
|
||||||
|
<P_2>FV/2025/001</P_2>
|
||||||
|
<!-- Invoice Number -->
|
||||||
|
<P_6>2025-03-10</P_6>
|
||||||
|
<!-- Due Date -->
|
||||||
|
<!-- Totals will only be computed by the EInvoiceModelKSeF Class-->
|
||||||
|
<!--
|
||||||
|
<P_13_1>0.00</P_13_1>
|
||||||
|
<P_14_1>0.00</P_14_1>
|
||||||
|
<P_15>0.00</P_15>
|
||||||
|
-->
|
||||||
|
<P_13_1>10000.00</P_13_1>
|
||||||
|
<P_14_1>2300.00</P_14_1>
|
||||||
|
<P_15>12300.00</P_15>
|
||||||
|
<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>5a2dd34c-6592-40aa-aafc-80bac9c9b9c4</UU_ID>
|
||||||
|
<P_7>Transport Berlin - Warsaw</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>6000.00</P_9A>
|
||||||
|
<P_11>6000.00</P_11>
|
||||||
|
</FaWiersz>
|
||||||
|
<FaWiersz>
|
||||||
|
<NrWierszaFa>2</NrWierszaFa>
|
||||||
|
<UU_ID>d44bf6a0-758b-415b-b45a-d83052a2f2aa</UU_ID>
|
||||||
|
<P_7>Customs handling</P_7>
|
||||||
|
<P_8A>szt.</P_8A>
|
||||||
|
<P_8B>1</P_8B>
|
||||||
|
<P_9A>4000.00</P_9A>
|
||||||
|
<P_11>4000.00</P_11>
|
||||||
|
</FaWiersz>
|
||||||
|
</Fa>
|
||||||
|
</Faktura>
|
||||||
Loading…
Reference in a new issue