Przejdź do głównej zawartości

Źródła danych

Źródła danych (Data Sources) definiują skąd profil mapowania pobiera informacje potrzebne do wygenerowania XML faktury KSeF.

Zapytanie OData do SAP Business One Service Layer.

Invoices({DocEntry})?$select=DocNum,DocDate,DocDueDate,TaxDate,CardCode,CardName,DocTotal,DocCurrency

Zalety:

  • Nie wymaga bezpośredniego dostępu do bazy danych
  • Dane są przetworzone przez logikę SAP (np. uprawnienia, walidacje)
  • Działa z każdym typem bazy (HANA i MSSQL)

Wady:

  • Wolniejsze niż bezpośredni SQL
  • Ograniczenia OData (np. brak złożonych JOIN-ów)

Bezpośrednie zapytanie SQL do Microsoft SQL Server.

SELECT T0."DocNum", T0."DocDate", T0."TaxDate",
T1."ItemCode", T1."Dscription", T1."Quantity", T1."Price"
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocEntry" = {DocEntry}

Zalety:

  • Pełna elastyczność SQL (JOIN, subquery, CASE, funkcje)
  • Szybsze dla złożonych zapytań

Wady:

  • Wymaga bezpośredniego dostępu do bazy (connection string)
  • Specyficzne dla MS SQL — nie przenośne na HANA

Bezpośrednie zapytanie SQL do SAP HANA.

SELECT T0."DocNum", T0."DocDate", T0."TaxDate",
T1."ItemCode", T1."Dscription", T1."Quantity", T1."Price"
FROM "OINV" T0
INNER JOIN "INV1" T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocEntry" = {DocEntry}

Alias to nazwa identyfikująca źródło danych w profilach. Używa się go w mapowaniach pól:

AliasTypowe zastosowanie
invoiceGłówne dane faktury (nagłówek)
invoice_fcDane walutowe faktury
sellerDane sprzedawcy (NIP, adres firmy)
buyerDane nabywcy (kontrahent)
country_infoInformacja o kraju nabywcy (UE/poza UE)
buyer_euRozszerzone dane nabywcy UE
paymentWarunki płatności
payment_termsRozszerzone informacje o płatności
bankKonto bankowe sprzedawcy
bank_infoSzczegóły banku (SWIFT, nazwa)
linesPozycje faktury (tablica)
vat_summaryPodsumowanie VAT (tablica)

Aliasy mogą być dowolne — powyższe to konwencja, nie wymóg systemu.

Placeholdery pozwalają odwoływać się do wyników wcześniejszych źródeł:

{alias.pole}

Przykład:

Źródło invoice (sort_order: 1) zwraca m.in. CardCode = "C00001". Źródło buyer (sort_order: 2) może użyć:

BusinessPartners('{invoice.CardCode}')

System automatycznie podstawi C00001 w miejsce {invoice.CardCode}.

Pole sort_order określa kolejność wykonania źródeł. Źródło o niższym sort_order wykonuje się wcześniej i jego wyniki są dostępne dla późniejszych źródeł.

sort_order: 1 → invoice (brak zależności)
sort_order: 2 → buyer (zależy od invoice.CardCode)
sort_order: 3 → country_info (zależy od buyer.Country)
sort_order: 4 → lines (zależy od invoice.DocEntry)

Źródła z flagą is_array: true zwracają wiele wierszy. Każdy wiersz generuje osobny element w XML.

Źródło lines zwraca:

VisualOrderItemDescriptionQuantityPriceGrossTotal
1Usługa wdrożeniowa10500.006150.00
2Licencja roczna112000.0014760.00

Każdy wiersz generuje element Faktura.Fa.FaWiersz w XML:

<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>Usługa wdrożeniowa</P_7>
<P_8B>10</P_8B>
<P_9A>500.00</P_9A>
<P_11>5000.00</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>2</NrWierszaFa>
<P_7>Licencja roczna</P_7>
<P_8B>1</P_8B>
<P_9A>12000.00</P_9A>
<P_11>12000.00</P_11>
<P_12>23</P_12>
</FaWiersz>

Źródło vat_summary zwraca podsumowanie VAT pogrupowane po stawce:

VATPercentNetTotalVATAmountGrossTotal
2317000.003910.0020910.00

Generuje elementy P_13_1 do P_13_11 w zależności od stawki VAT.