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