Pole i to, co sprawdza AEAT
Pole nazywa się FechaHoraHusoGenRegistro i przechowuje datę, godzinę oraz strefę czasową chwili, w której system wygenerował rekord, w formacie RRRR-MM-DDThh:mm:ss plus przesunięcie względem UTC. Dokument walidacji AEAT stanowi, że musi być ono mniejsze lub równe dacie w systemie AEAT, z uwzględnieniem marginesu błędu. Jeśli go przekracza, AEAT zwraca ostrzeżenie bez odrzucenia.
Tekst błędu 2004 na liście AEAT brzmi: „El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:” i na tym się kończy: lista nie podaje, ile sekund lub minut wynosi ten margines.

Cztery kody dla tego pola
| Kod | Tekst AEAT | Skutek |
|---|---|---|
| 2004 | El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: | Zaakceptowany; AEAT nie żąda korekty. |
| 1243 | Error técnico al obtener el cálculo de la fecha del huso horario. | Odrzuca rekord z powodu błędu technicznego po stronie AEAT. |
| 1244 | El campo FechaHoraHusoGenRegistro tiene un formato incorrecto. | Odrzuca rekord. |
| 1268 | La longitud del campo FechaHoraHusoGenRegistro no cumple con las especificaciones. | Odrzuca rekord. |
Na swojej liście dopuszczalnych błędów AEAT oznacza ten przypadek jako jeden z dwóch, które nie wymagają korekty. Drugim jest puste pole ClaveRegimen przy podatku IPSI.
Skąd Odoo bierze godzinę
Moduł pobiera moment wygenerowania rekordu fakturowania, czyli chwilę zatwierdzenia faktury, wraz z jej przesunięciem względem UTC. Ten moment jest zapisywany i nie da się go później zmienić, podobnie jak skrót, ponieważ wchodzi w skład łańcucha. Format moduł buduje zawsze tak samo, więc błąd 1244 lub 1268 przy wysyłce z naszego modułu nie powinien się pojawić: jeśli się pojawi, prosimy o przesłanie go do nas.
W przypadku 2004 pytanie brzmi, czy zegar serwera Odoo spieszył się w chwili zatwierdzenia faktury. Moduł ma zadanie cron, Verifactu: Clock Drift Check, które co 1 godzinę porównuje czas Odoo z czasem bazy danych PostgreSQL, oraz przycisk do wykonania tego w dowolnym momencie. Nie porównuje z żadnym zegarem zewnętrznym: jeśli Odoo i baza danych działają na tej samej maszynie albo oba się spieszą, nie wyświetli ostrzeżenia. Rzeczywisty czas sprawdza się względem serwera NTP.

Co zrobić w każdym przypadku
- Przy 2004 nic nie trzeba robić z fakturą: jest zarejestrowana. Poproś osobę zarządzającą serwerem, by porównała jego czas z serwerem NTP i zsynchronizowała go, jeśli się spieszy. Check Clock Drift tu nie pomoże: porównuje tylko Odoo z jego bazą danych.
- Przy 1243 poczekaj: to techniczny błąd po stronie AEAT, a kolejka sama ponawia próby, z przerwami od 2 minut do 12 godzin, aż do szóstej próby.
- Przy 1244 lub 1268 napisz na comercial@flexigobe.com z odpowiedzią z wysyłki.
W Odoo błąd 2004 pozostawia rekord ze statusem „Aceptado con errores (subsanar)”, tą samą etykietą co wszystkie kody 2xxx. Dla tego konkretnego kodu AEAT stwierdza, że korekta nie jest potrzebna: możesz zostawić go bez zmian.
Czy zegar spóźniający się powoduje błąd?
Reguła AEAT sprawdza jedynie, czy Twój czas jest większy niż jej czas powiększony o margines. Rekord z czasem opóźnionym nie uruchamia tej kontroli.
Czytaj dalej
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach
Źródła
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Kod modułu: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Kod modułu: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Kod modułu: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_registro.py
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
- Kod modułu: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cadena.py
