Integracja KSeF
KSeF (Krajowy System e-Faktur) to obecnie dominujący obszar zmian w EVAN. Integracja jest dwukierunkowa i w pełni asynchroniczna:
- Wysyłka faktur sprzedażowych → KSeF (wsadowo
BATCHlub pojedynczoONLINE). - Pobieranie faktur zakupowych ← KSeF (asynchronicznie:
Init→Status→Fetch). - Weryfikacja statusu wysłanych dokumentów (UPO).
- Koszyk do ręcznego rozliczania pobranych faktur i dopasowania do zleceń.
- Korekty — zarówno przychodzące, jak i wysyłane.
Pakiety
| Pakiet | Rola |
|---|---|
KSEF_SEND_PKG | wysyłka dokumentów sprzedażowych: zbieranie danych, weryfikacja XML, archiwum, upload, zamknięcie sesji |
KSEF_SEND_BATCH_PKG | orkiestracja wsadowej wysyłki (etapy, statusy, harmonogram) |
KSEF_SEND_ONLINE_PKG | wysyłka pojedynczych dokumentów online (bez szyfrowanego archiwum) |
KSEF_SEND_STATUS_PKG / KSEF_SEND_STAT_BATCH_PKG | weryfikacja statusu wysyłki, pobieranie UPO |
KSEF_AUTH_PKG | autentykacja, tokeny (challenge/redeem, JWT, certyfikaty) |
KSEF_INV_FETCH_PKG / KSEF_INV_FETCH_BATCH_PKG | asynchroniczne pobieranie faktur zakupowych, deszyfrowanie |
KSEF_KOSZYK_PKG | parsowanie XML, weryfikacja, dopasowanie do zleceń, samofakturowanie, korekty |
KSEF_UTIL_PKG | kontekst kryptograficzny, certyfikaty publiczne, hashing, mapowanie JSON |
Funkcje kryptograficzne (RSA/AES, częściowo w Javie): f_ksef_rsa_base64, f_java_ksef_encrypt, f_java_ksef_decrypt, f_ksef_ECQSS_decrypt_encrypt i pochodne.
Kluczowe tabele
Sesje i autoryzacja
KSEF_SESJA,KSEF_SESJA_JWT— sesje (token, numer referencyjny, klucz AES, wektor inicjujący).KSEF_AUTH_TOKEN,KSEF_AUTH_TOKEN_JWT— tokeny dostępu/odświeżania.KSEF_AUTH_CERT,KSEF_PUBLIC_CERT,KSEF_ECQSS— certyfikaty i dane podpisu.
Wysyłka
KSEF_SEND_BATCH_PROC/_DET/_CNF/_SUBPROC— proces wsadowy, dokumenty, konfiguracja, wielowątkowość.KSEF_SEND_ONLINE_PROC/_Q/_DET— wysyłka online i jej kolejka.FAKTURA_KSEF_SEND,FAKTURA_TRA_KSEF_SEND— status wysyłki (hash, numer KSeF, kod przetwarzania, QR, metoda).FAKTURA_KSEF_XML_ERR,FAKTURA_TRA_KSEF_XML_ERR,*_OSTRZEZENIA— błędy i ostrzeżenia XML.
Pobieranie i koszyk
KSEF_INV_FETCH_PROC/_DET/_CNF— proces pobierania.KSEF_XML_FILE— surowe XML pobrane z KSeF (xml_datajakoXMLType,subject_type, hash, środowisko).KSEF_KOSZYK,KSEF_KOSZYK_DOPASOWANIE— koszyk faktur i ich powiązanie ze zleceniami/sekcjami.FAKTURA_KSEF,FAKTURA_SPEC_KSEF— nagłówek i pozycje faktury przychodzącej.
Słowniki
S_KSEF_STATUS, S_KSEF_WERYFIKACJA, S_KSEF_REZUTLAT_WERYFIKACJI, S_KSEF_TYP_DOKUMENTU, S_KSEF_STAWKA_VAT, KSEF_STAWKA_VAT_MAPOWANIE, S_KSEF_FORMA_PLATNOSCI.
Przepływ: wysyłka faktury sprzedażowej (BATCH)
Sterowana przez KSEF_SEND_BATCH_PKG; dokumenty wybiera widok KSEF_SEND_V (UNION FAKTURA_TRA + FAKTURA).
p_create_proc→ utworzenie procesu wKSEF_SEND_BATCH_PROC.p_add_data→ zebranie dokumentów doKSEF_SEND_BATCH_DET.- blokada edycji dokumentów (
KSEF_STATUS := 'WAITING'). p_check_data→ weryfikacja XML względem schematu XSD.- utworzenie archiwum ZIP → podział na paczki + szyfrowanie AES-256.
p_init_batch→ autentykacja (KSEF_AUTH_PKG) iapi/batch/Init→ numer referencyjny.p_upload_batch→api/batch/Upload(paczki),p_close_batch→api/batch/Finish.- odpytywanie statusu (
common/Status,session/Status) →VERIFY_STATUS=UPOlubREJECTED. - zapis numeru KSeF i statusu na fakturze + metadanych w
FAKTURA_TRA_KSEF_SEND.
Alternatywa: online — KSEF_SEND_ONLINE_PKG → api/online/Invoice/Send (bez archiwum/szyfrowania).
Przepływ: pobieranie faktury zakupowej (ASYNC)
Sterowane przez KSEF_INV_FETCH_BATCH_PKG:
- utworzenie procesu (
KSEF_INV_FETCH_PROC). - przygotowanie kontekstu kryptograficznego (certyfikaty publiczne wg
subject_type). online/Query/Invoice/Async/Init(zdateFrom/dateTo) → numer referencyjny elementu.online/Query/Invoice/Async/Status/{ref}→OK/WAIT/ERROR.online/Query/Invoice/Async/Fetch/...→ zapis ZIP doKSEF_XML_FILE.- deszyfrowanie (AES + IV z
KSEF_SESJA) i ekstrakcja XML z ZIP. - parsowanie do
KSEF_KOSZYK(KSEF_KOSZYK_PKG.p_parse_xml_file).
Korekty
- Zakupowa (z KSeF):
KSEF_KOSZYKz typem korekty;f_check_corrected_invoice_statusustala, czy faktura korygowana istnieje w EVAN (0 = brak / 1 = w koszyku / 2 = w EVAN); powiązanie przezKSEF_KOSZYK_DOPASOWANIEiPOWIAZANY_DOKUMENT_ID. Gałąźkorekta_zakupowa_KSEFdodaje m.in. obsługę braku numeru konta na fakturze korygowanej. - Sprzedażowa (wysyłka):
FAKTURA_TRAz typemKORE, licznik korekt, powiązanie z dokumentem bazowym; dalej jak zwykła faktura sprzedażowa.
ksef_data_sprzedazy_walidacja (bieżąca robocza) dotyczy walidacji daty sprzedaży pobieranej z KSeF — gdy DATA_SPRZEDAZY jest NULL, podstawiana jest DATA_WYSTAWIENIA.Pojęcia domenowe
| Pojęcie | Znaczenie |
|---|---|
| Numer KSeF | identyfikator faktury nadany przez KSeF |
| UPO | Urzędowe Poświadczenie Odbioru — status „przyjęte” |
| subject_type | SUBJECT1 = zakupowe, SUBJECT2 = sprzedażowe, SUBJECT3 = inne |
| Środowisko | TEST / PREPROD / PROD |
| invoice_hash | hash dokumentu (SHA-256, Base64) do weryfikacji |
| QR link | link do weryfikacji faktury w KSeF |
| Metoda wysyłki | BATCH / ONLINE / OFFLINE |
| ECQSS | certyfikat kwalifikowany wykorzystywany do podpisu |
| Klucz AES / wektor inicjujący | parametry szyfrowania danej sesji |
Powiązane widoki
KSEF_SEND_V (dokumenty do wysłania), KSEF_XML_FILE_*_V (parsing XML: nagłówki, pozycje, konta, terminy), KSEF_KOSZYK_SEKCJA_V / KSEF_KOSZYK_NIEDOPASOWANY_V (dopasowanie), KSEF_VAN_ZLECENIE_*_V / KSEF_VAN_AMOUNTS_*_V (powiązanie ze zleceniami i kwotami).