Treść każdej reguły
Wszystkie są błędami krytycznymi w Schematronie EN 16931 (validation-1.3.17) i Peppol BIS, XRechnung oraz Factur-X stosują je tak samo:
- BR-08: „An Invoice shall contain the Seller postal address.”
- BR-09: „The Seller postal address (BG-5) shall contain a Seller country code (BT-40).”
- BR-10: „An Invoice shall contain the Buyer postal address (BG-8).”
- BR-11: „The Buyer postal address shall contain a Buyer country code (BT-55).”
- BR-CL-14: „Country codes in an invoice MUST be coded using ISO code list 3166-1”
W obrębie adresu reguły EN 16931 wymagają tylko kraju. Niektóre formaty żądają więcej: XRechnung wymaga też miasta i kodu pocztowego sprzedawcy (BR-DE-3 i BR-DE-4) oraz nabywcy (BR-DE-8 i BR-DE-9).

Co mówi Odoo
We wszystkich czterech wersjach Odoo sprawdza BR-09 i BR-11, zanim wygeneruje plik UBL. Jeśli brakuje kraju w danych Twojej firmy lub klienta, komunikat brzmi: „The country is required for the %s.”, a w miejscu luki pojawia się „supplier” albo „customer”. W Odoo 17 kontrola znajduje się w eksporcie Peppol BIS (i w tych, które z niego dziedziczą, jak XRechnung); w 18, 19 i 20 jest we wspólnej warstwie EN 16931.
Komunikat wskazuje, którą kartę otworzyć: „supplier” to Twoja firma, ta z faktury; „customer” to kontakt do fakturowania klienta.
Dlaczego w Odoo brakuje kraju
| Sytuacja | Gdzie sprawdzić |
|---|---|
| Firma założona w pośpiechu, bez adresu | Ustawienia firmy: ulica, miasto, kod pocztowy i kraj. |
| Klient zaimportowany z arkusza kalkulacyjnego | Kolumna kraju pusta albo wpisana ręcznie zamiast wybrana. |
| Faktura dla kontaktu podrzędnego | Adres do fakturowania kontaktu, który trafia na fakturę, a nie tylko adres jego firmy. |
| Klient indywidualny ze sklepu internetowego | Zamówienie przyszło z adresem bez kraju albo z krajem spoza listy. |
Ponieważ kraj w Odoo wybiera się z listy, a nie wpisuje, BR-CL-14 prawie nigdy nie pochodzi z faktury z Odoo: dwuliterowy kod wynika z samego kraju. Jeśli się pojawi, sprawdź, czy plik przeszedł wcześniej przez inny program, zanim trafił do klienta.
Z naszym modułem XRechnung i ZUGFeRD

Moduł nie ostrzega o kraju. Jeśli brakuje go w firmie lub u klienta, wpisuje DE, kod Niemiec, w UBL i w CII, a jego kontrola przed generowaniem tego pola nie sprawdza. Plik spełnia BR-09 i BR-11, a walidator KoSIT go akceptuje (sprawdziliśmy), ale adres podaje Niemcy, nawet gdy klient jest w innym kraju. Przed wygenerowaniem sprawdź kraj każdego klienta.
W Odoo 18, 19 i 20, przy subskrypcji FlexigoTech Cloud, każdy XRechnung i każdy ZUGFeRD EN 16931 generowany przez moduł jest walidowany regułami KoSIT. Jeśli u klienta brakuje miasta lub kodu pocztowego, to się pokaże: BR-DE-8 i BR-DE-9 pozostają w Validation Errors, a faktura nie dostaje statusu Ready to send. Wersja opublikowana dla Odoo 17 generuje pliki, ale ich nie waliduje.
Kroki
- Przeczytaj komunikat: „supplier” albo „customer”.
- Otwórz tę kartę i wybierz kraj z listy; uzupełnij ulicę, miasto i kod pocztowy, nawet jeśli EN 16931 ich nie wymaga.
- Jeśli fakturujesz kontakt firmy, sprawdź adres tego kontaktu.
- Wygeneruj plik ponownie.
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_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Kod modułu: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Kod modułu: flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.py
- Kod modułu: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
