Brak produktów w koszyku.

KSeF — naprawa dekretacji („Nieokreślony błąd”)

KSeF — naprawa dekretacji („Nieokreślony błąd”)

Dekretacja jednej faktury kończy się komunikatem „Nieokreślony błąd", a pozostałe dokumenty przechodzą normalnie. Przyczyną są zdublowane wpisy w tabelach KSeF. Trzy skrypty: sprawdzenie bazy, naprawa i nocne sprzątanie, żeby problem nie wracał.

Co to robi

Znajduje dokumenty, do których w tabelach KSeF przypisano więcej niż jedno powiązanie, i usuwa nadmiarowy wpis wraz z jego zależnościami — tak, żeby dekretacja mogła przejść. Zostawia zawsze ten wpis, którego e-faktura ma numer KSeF. Kasowanie odbywa się w jednej operacji, która sama się weryfikuje i wycofuje w całości przy jakiejkolwiek niezgodności. Każdy przebieg zostaje zapisany w dzienniku w bazie.

Dla kogo

  • Serwisanci i wdrożeniowcy obsługujący Subiekta GT, Rewizora GT, Rachmistrza GT lub Navireo
  • Administratorzy IT w firmach, które księgują faktury pobrane z KSeF
  • Biura rachunkowe, u których część dokumentów nie daje się zadekretować
  • Wymagany dostęp do bazy SQL Server z uprawnieniami administracyjnymi

Zapytanie

Całość jest w pliku do pobrania — poniżej wersja do przejrzenia bez pobierania.

SQL · Microsoft SQL Server
-- Sprawdzenie, czy problem występuje. Tylko odczyt — niczego nie zmienia.
SELECT
    kh.ksefh_IdDokumentu,
    COUNT(*)                         AS wierszy,
    COUNT(f.ksef_NumerKSeF)          AS wierszyZNumeremKSeF,
    COUNT(DISTINCT f.ksef_NumerKSeF) AS roznychNumerowKSeF
FROM dbo.ksef_FakturyHandel kh WITH (NOLOCK)
LEFT JOIN dbo.ksef_Faktury f WITH (NOLOCK) ON f.ksef_Id = kh.ksefh_IdFaktury
WHERE kh.ksefh_IdDokumentu IS NOT NULL
GROUP BY kh.ksefh_IdDokumentu
HAVING COUNT(*) > 1;

-- Zero wierszy = problem nie występuje.
-- roznychNumerowKSeF = 0 lub 1 -> przypadek jednoznaczny, naprawa automatyczna.
-- roznychNumerowKSeF = 2 lub więcej -> do jednego dokumentu podpięto dwie różne
--    faktury KSeF; wymaga sprawdzenia w UPO, który numer jest prawdziwy.

Jak to uruchomić

  1. 1
    Zrób pełną kopię zapasową bazy — plik 2 kasuje dane
  2. 2
    W każdym skrypcie podmień NAZWA_BAZY na nazwę bazy swojej firmy
  3. 3
    Uruchom 1-sprawdz-baze.sql — sam odczyt, pokazuje czy problem Cię dotyczy
  4. 4
    Jeżeli wynik jest pusty, kończysz tutaj — przyczyna błędu jest inna
  5. 5
    Uruchom 2-napraw.sql — wykona przebieg kontrolny, który niczego nie kasuje
  6. 6
    Przejrzyj wynik przebiegu kontrolnego
  7. 7
    Uruchom naprawę na poważnie: EXEC dbo.ati_KsefDedupFakturyHandel @Commit = 1;
  8. 8
    Opcjonalnie uruchom 3-zadanie-nocne.sql, żeby duplikaty były sprzątane codziennie o 3:00
  9. 9
    Sprawdź efekt — dekretacja dokumentu powinna przejść

Uwagi i ryzyka

Przeczytaj, zanim uruchomisz
  • Skrypty sprawdzone na Navireo; w Subiekcie GT, Rewizorze GT i Rachmistrzu GT mechanizm obsługi KSeF jest wspólny, a ten sam objaw jest zgłaszany przez partnerów na wersjach 1.88 HF2–HF5 oraz 1.89
  • To jest leczenie skutku — przyczyna leży po stronie programu i nie jest jeszcze usunięta przez producenta, więc duplikaty wracają
  • Po wydaniu wersji naprawiającej przyczynę zadanie nocne należy wyłączyć
  • Dokumenty, do których podpięto dwie różne faktury KSeF, są świadomie pomijane — wymagają sprawdzenia w UPO, który numer jest prawdziwy
  • Bezpiecznik przerywa działanie, gdy duplikatów jest więcej niż 200 dokumentów — to znak, że dzieje się coś innego
  • Zadanie nocne wymaga SQL Server Agent, którego nie ma w wersji Express
  • Używasz na własną odpowiedzialność — kopia zapasowa przed uruchomieniem pliku 2 jest obowiązkowa

Materiał udostępniamy bezpłatnie i bez gwarancji. Przed uruchomieniem czegokolwiek na bazie produkcyjnej wykonaj kopię zapasową. Odpowiedzialność za użycie ponosi użytkownik.

Zapytaj o KSeF Zobacz wpisy na blogu o
KSeF 2.0