Dwa kody
- 4113
- „El XML no cumple con el esquema: se ha superado el límite permitido de registros para el bloque.” Blok XML zawiera więcej powtórzeń, niż dopuszcza.
- 4114
- „El XML no cumple con el esquema: se ha superado el límite máximo permitido de facturas a registrar.” Żądanie zawiera więcej faktur, niż jest dozwolone.
Oba należą do części, która odrzuca całą wysyłkę. Według dokumentu walidacji AEAT blok RegistroFactura powtarza się od 1 do 1000 razy w każdym żądaniu, a rejestracje i anulowania mogą iść razem, każde we własnym RegistroFactura.

Jak Odoo dzieli wysyłki
Kolejka modułu uruchamia się co 1 minutę i przy każdym przebiegu łączy oczekujące rekordy każdej firmy w jedno żądanie, w kolejności łańcucha. Żądanie nigdy nie przekracza 1000 rekordów:
- Parametr verifactu.max_envelope_records określa, ile rekordów wychodzi w każdym przebiegu; jeśli nikt go nie zmienia, wynosi 1000.
- To, co się nie mieści, zostaje w kolejce na następny przebieg.
- Gdyby jakąś drogą miano wysłać więcej niż 1000, klient modułu zatrzyma się przed wysyłką komunikatem „The AEAT accepts at most 1000 records per request.”.
Wewnątrz każdego rekordu moduł także dopasowuje bloki do ich limitów: rozbicie podatku przycinane jest do 12 wierszy, bez ostrzeżenia, a wymiana faktur uproszczonych obejmuje do 1000 zastępowanych faktur.

Tempo narzucone przez AEAT
Oprócz rozmiaru AEAT narzuca tempo. Każda odpowiedź zawiera TiempoEsperaEnvio, czyli liczbę sekund oczekiwania przed kolejną wysyłką, i moduł to respektuje. Jest jeden wyjątek: jeśli oczekuje już 1000 rekordów, nie czeka, bo żądanie jest pełne. Jeśli AEAT odpowie HTTP 429 z powodu zbyt wielu żądań, moduł czeka tyle, ile wskazuje nagłówek Retry-After, a jeśli nic nie wskazuje, 60 sekund.
Jeśli pojawi się jeden z nich
Przy wartości parametru ustawionej tak, jak trzeba, błąd 4113 lub 4114 nie powinien wystąpić. Jeśli ktoś podniósł verifactu.max_envelope_records powyżej 1000, przywróć 1000 lub pozostaw pole puste. Następnie wyślij ponownie wysyłki w statusie Failed z menu Envío a AEAT › Errores AEAT, używając Reintentar Selección: kolejka rozłoży je na żądania o właściwym rozmiarze.
Czy rejestracje i anulowania idą w tym samym żądaniu?
Tak. AEAT na to pozwala, o ile każde idzie we własnym RegistroFactura, a kolejka modułu wysyła razem oczekujące rejestracje i anulowania firmy, w kolejności łańcucha.
Czy warto obniżyć parametr?
Nie ma takiej potrzeby. Mniej rekordów na żądanie oznacza więcej żądań, a każde musi czekać na TiempoEsperaEnvio ustalone przez AEAT.
Jeśli przy parametrze ustawionym na 1000 pojawi się jeden z tych kodów, napisz na comercial@flexigobe.com, podając odpowiedź z wysyłki.
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): data/verifactu_crons.xml
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/Sis
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
