Źródła danych
Źródła danych (Data Sources) definiują skąd profil mapowania pobiera informacje potrzebne do wygenerowania XML faktury KSeF.
Typy źródeł danych
Dział zatytułowany „Typy źródeł danych”ServiceLayer
Dział zatytułowany „ServiceLayer”Zapytanie OData do SAP Business One Service Layer.
Invoices({DocEntry})?$select=DocNum,DocDate,DocDueDate,TaxDate,CardCode,CardName,DocTotal,DocCurrencyZalety:
- 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)
SqlMssql
Dział zatytułowany „SqlMssql”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 T0INNER 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
SqlHana
Dział zatytułowany „SqlHana”Bezpośrednie zapytanie SQL do SAP HANA.
SELECT T0."DocNum", T0."DocDate", T0."TaxDate", T1."ItemCode", T1."Dscription", T1."Quantity", T1."Price"FROM "OINV" T0INNER 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:
| Alias | Typowe zastosowanie |
|---|---|
invoice | Główne dane faktury (nagłówek) |
invoice_fc | Dane walutowe faktury |
seller | Dane sprzedawcy (NIP, adres firmy) |
buyer | Dane nabywcy (kontrahent) |
country_info | Informacja o kraju nabywcy (UE/poza UE) |
buyer_eu | Rozszerzone dane nabywcy UE |
payment | Warunki płatności |
payment_terms | Rozszerzone informacje o płatności |
bank | Konto bankowe sprzedawcy |
bank_info | Szczegóły banku (SWIFT, nazwa) |
lines | Pozycje faktury (tablica) |
vat_summary | Podsumowanie VAT (tablica) |
Aliasy mogą być dowolne — powyższe to konwencja, nie wymóg systemu.
Placeholdery i zależności
Dział zatytułowany „Placeholdery i zależności”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}.
Kolejność wykonania
Dział zatytułowany „Kolejność wykonania”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 tablicowe
Dział zatytułowany „Źródła tablicowe”Źródła z flagą is_array: true zwracają wiele wierszy. Każdy wiersz generuje osobny element w XML.
Przykład: pozycje faktury
Dział zatytułowany „Przykład: pozycje faktury”Źródło lines zwraca:
| VisualOrder | ItemDescription | Quantity | Price | GrossTotal |
|---|---|---|---|---|
| 1 | Usługa wdrożeniowa | 10 | 500.00 | 6150.00 |
| 2 | Licencja roczna | 1 | 12000.00 | 14760.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>Przykład: podsumowanie VAT
Dział zatytułowany „Przykład: podsumowanie VAT”Źródło vat_summary zwraca podsumowanie VAT pogrupowane po stawce:
| VATPercent | NetTotal | VATAmount | GrossTotal |
|---|---|---|---|
| 23 | 17000.00 | 3910.00 | 20910.00 |
Generuje elementy P_13_1 do P_13_11 w zależności od stawki VAT.