Co robi przy każdym przebiegu
Zadanie wyszukuje aktywne łańcuchy i dla każdego z nich wywołuje weryfikację integralności. Wszystko, co ważne, dzieje się wewnątrz tej weryfikacji: przelicza skrót każdego rekordu i porównuje go z zapisanym. Skrót to SHA-256 rekordu powiązanego z poprzednim, a AEAT przelicza go na własną rękę: jeśli się nie zgadza, przyjmuje rekord z błędem, który trzeba naprawić.
Zadanie istnieje we wszystkich opublikowanych gałęziach modułu (17.0, 18.0, 19.0 i 20.0), który jest opublikowany w Odoo Apps dla tych czterech wersji. Ten schemat podsumowuje zadanie oraz menu, z którego otwiera się łańcuchy:

Szczegóły, których nie widać na karcie
Sprawdza tylko aktywne łańcuchy, jeden po drugim
Zadanie nie przegląda wszystkich istniejących łańcuchów: szuka wyłącznie aktywnych i uruchamia weryfikację każdego z osobna. Każdy łańcuch należy do jednej firmy. Na karcie All Chain States (Asesoría) masz pole Company, aby wiedzieć, której firmy dotyczy.
Czyta cały łańcuch przy każdym przebiegu
Weryfikacja wykonuje zapytanie, które łączy rekordy rejestracji i anulowania firmy i sortuje je według numeru rekordu. Następnie przechodzi je od początku do końca. Kod nie startuje od punktu pośredniego: każdy przebieg zaczyna się od pierwszego rekordu.
Przelicza każdy skrót na podstawie zapisanych danych
Dla każdego rekordu rejestracji kod odtwarza skrót z tych zapisanych danych: NIF wystawcy, numer seryjny, data wystawienia, typ faktury (F1, jeśli puste), łączna kwota podatku obliczona z podstaw opodatkowania, kwota całkowita, skrót poprzedniego rekordu oraz data i godzina wygenerowania ze strefą czasową. Pierwszy rekord zaczyna od pustego skrótu poprzedniego.
NIF wystawcy jest używany bez prefiksu ES. Jeśli firma ma własny NIF dla Verifactu, kod woli go od ogólnego numeru VAT. Zmiana któregokolwiek z tych danych po wygenerowaniu rekordu sprawia, że przeliczony skrót przestaje się zgadzać z zapisanym.
Anulowania liczone są z innymi etykietami
Rekordy anulowania używają własnego wzoru: nie mają typu faktury, kwoty podatku ani kwoty całkowitej, a ich etykiety pochodzą z anulowanej faktury. Kod akceptuje także anulowania wygenerowane przed wersją 1.3.4 modułu, które liczono z etykietami rekordów rejestracji: jeśli zapisany skrót zgadza się z tym dawnym obliczeniem, uznaje go za poprawny.
Zatrzymuje się na pierwszym zerwaniu i ostrzega
Gdy tylko zapisany skrót nie zgadza się z przeliczonym, weryfikacja się zatrzymuje: nie przechodzi do kolejnych rekordów tego łańcucha. Zwraca, ile rekordów sprawdziła do tego momentu, oraz pierwszy zerwany rekord, z jego numerem rekordu, numerem seryjnym, oczekiwanym skrótem i zapisanym skrótem.
Ten sam krok wysyła alert o zerwaniu łańcucha dla firmy, z numerem rekordu i numerem seryjnym, w którym nastąpiło zerwanie. Jeśli cały łańcuch się zgadza, weryfikacja zwraca, że przeszła pomyślnie, wraz z łączną liczbą sprawdzonych rekordów.
Częstotliwość to raz dziennie, a w Odoo 17 powtarza się bez końca
Zadanie działa raz dziennie i jest aktywne po instalacji. W Odoo 17.0 jest dodatkowo skonfigurowane tak, aby powtarzało się bez końca.
Jeśli wydaje się, że nic nie robi
Zanim zaczniesz podejrzewać zadanie, sprawdź to:
- Czy jest jakiś aktywny łańcuch? Jeśli nie ma żadnego, wyszukiwanie niczego nie zwraca i nie ma czego weryfikować.
- Czy zadanie nadal jest aktywne? Po instalacji jest aktywne, więc jeśli nie działa, sprawdź, czy wciąż jest aktywne.
- Czego można oczekiwać od poprawnego przebiegu? Zadanie jedynie wywołuje weryfikację każdego łańcucha, a nienaruszony łańcuch zwraca, że przeszedł pomyślnie, wraz z łączną liczbą sprawdzonych rekordów. Dopiero zerwanie wysyła alert o zerwaniu łańcucha.
- Czy widzisz menu? Karty poszczególnych łańcuchów otwierasz z
Verifactu / SIF › Compliance Records › Chain State. Każdy poziom wymaga innych uprawnień.

Uprawnienia menu, poziom po poziomie
Jeśli nie masz uprawnienia do danego poziomu, tego poziomu nie widzisz. Oto te, których wymaga każdy z nich:
| Poziom menu | Uprawnienia, które go pokazują |
|---|---|
Verifactu / SIF | Accountant, Asesoría Operator, Auditor (read-only), Privacy Officer, SIF Manager |
Compliance Records | Accountant, Auditor (read-only), SIF Manager |
Chain State | Auditor (read-only), SIF Manager |
Tylko z uprawnieniem Accountant widać dwa pierwsze poziomy, ale nie Chain State. Jeśli ktoś mówi, że nie może znaleźć menu, najpierw sprawdź jego uprawnienia.
Więcej lektury i pomoc
Jeśli wdrażasz Odoo i chcesz, aby VeriFactu dobrze współgrało z Twoim fakturowaniem, FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie. Moduł znajdziesz na jego karcie w Odoo Apps.
Czytaj dalej
Sprawdzone w kodzie źródłowym modułu (wersja 17.0 i 20.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigo_spain_verifactu 20.0 (1fdc980f): data/verifactu_crons.xml
- Kod modułu: flexigo_spain_verifactu 17.0 (8d43d727): data/verifactu_crons.xml
- Kod modułu: flexigo_spain_verifactu 20.0 (1fdc980f): models/verifactu_cadena.py
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- flexigotech.com/en/services.html
