Przejdź do głównej treści
EN 16931 · wiersze

Błąd UBL-SR-48: wiersz faktury z dwoma podatkami albo bez żadnego

W europejskiej fakturze elektronicznej każdy wiersz ma kategorię VAT, i tylko jedną. W Odoo wiersz może mieć kilka podatków albo żadnego, więc konflikt zdarza się często: w pliku to UBL-SR-48, a Odoo zatrzymuje go przed generowaniem własnym komunikatem. W tej samej grupie są BR-CO-04, BR-25 i BR-16.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 4 listopada 2026

Najważniejsze

Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 17.0 i 20.0 · w źródłach podanych na końcu
Czas czytania
3 min

Co mówi każda reguła

Wszystkie cztery są błędami krytycznymi w Schematronie EN 16931 (validation-1.3.17):

UBL-SR-48
„Invoice lines shall have one and only one classified tax category.” Reguła składni UBL: jeden wiersz, jedna kategoria.
BR-CO-04
„Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).” Druga strona: żaden wiersz bez kategorii.
BR-25
„Each Invoice line (BG-25) shall contain the Item name (BT-153).” Każdy wiersz z nazwą.
BR-16
„An Invoice shall have at least one Invoice line (BG-25)” Co najmniej jeden wiersz.
Karta reguły UBL-SR-48 z EN 16931
Jedna kategoria VAT na wiersz (BT-151), z BR-CO-04, BR-25 i BR-16.

Komunikat Odoo

Odoo nie czeka na walidator. Przed wygenerowaniem UBL przegląda wiersze i jeśli któryś nie ma dokładnie jednego podatku, zatrzymuje się z komunikatem: „Each invoice line shall have one and only one tax.” Dzieje się tak we wszystkich czterech wersjach, z niuansem:

  • Odoo 17: liczy podatki wiersza pomijając te o stałej kwocie, jak opłaty ekologiczne; musi pozostać jeden.
  • Odoo 18, 19 i 20: liczy kategorie podatku, które zostaną zapisane w wierszu pliku; musi być jedna.

W tym samym kroku sprawdza BR-25: wiersz bez produktu i bez opisu zatrzymuje się z komunikatem „Each invoice line should have a product or a label.”

Przypadki, które to wywołują

Przypadek w OdooCo zrobić
Wiersz bez podatku, na przykład przefakturowany wydatekPrzypisz właściwy podatek, także jeśli to 0 % lub zwolnienie.
Dwa podatki VAT w tym samym wierszuZostaw jeden: jeśli to dwie różne stawki, podziel wiersz.
VAT plus dopłata lub potrącenie w wierszuSprawdź, czy ten drugi podatek ma trafić do faktury elektronicznej jako podatek, czy inaczej; poprawna odpowiedź zależy od kraju.
Wiersz tekstowy bez produktu i opisuWpisz opis albo zamień go na notatkę.

Sekcje i notatki Odoo nie liczą się jako wiersze, więc nie wywołują komunikatu.

Z naszym modułem XRechnung i ZUGFeRD

Moduł generuje XML własnym kodem i nie wykonuje sprawdzenia Odoo: wiersz bez podatku albo z dwoma trafia do pliku taki, jaki jest. Sprawdziliśmy to walidatorem KoSIT:

  • Wiersz bez podatku: wychodzi bez kategorii VAT. W XRechnung UBL daje UBL-SR-48, BR-CO-04 i BR-Z-08; w XRechnung CII, domyślnym formacie modułu, BR-CO-04, BR-Z-01 i BR-Z-08.
  • Wiersz z dwoma podatkami: w UBL zapisywany jest tylko pierwszy podatek z procentem, ale suma z VAT zawiera oba i pojawia się BR-CO-15. W CII oba trafiają do wiersza, a suma VAT nie zgadza się z rozbiciem i pojawia się BR-CO-14.
  • Wiersz z podatkiem 0 %: w UBL wychodzi jako Z i KoSIT go akceptuje. W CII wychodzi jako S, a KoSIT zgłasza BR-S-05, oraz BR-Z-01 i BR-Z-08.

Przed generowaniem przejrzyj podatki każdego wiersza.

Faktura w Odoo 20 z zakładką XRechnung / ZUGFeRD modułu
Wynik walidacji i Ready to send na fakturze. Zrzut ekranu Odoo 20 z danymi demonstracyjnymi; raport na zrzucie jest testowy.

W Odoo 18, 19 i 20, z subskrypcją FlexigoTech Cloud, każdy XRechnung i każdy ZUGFeRD EN 16931 jest walidowany regułami KoSIT, a reguły, które nie przechodzą, zostają pod Validation Errors. W Odoo 17 opublikowana wersja nie waliduje: te pliki wychodzą bez ostrzeżenia.

Kroki

  1. Przeczytaj komunikat: mówi, czy chodzi o podatek, czy o nazwę wiersza.
  2. Otwórz fakturę w wersji roboczej i sprawdź kolumnę podatków wiersz po wierszu.
  3. Popraw, zatwierdź i wygeneruj plik ponownie.

Czytaj dalej

Błędy BR-E-10, BR-AE-10, BR-IC-10 i BR-G-10: powód zwolnienia z VATBR-E-10, BR-AE-10, BR-IC-10, BR-G-10 i BR-O-10 wymagają powodu zwolnienia z VAT; BR-S-10 i BR-Z-10 go zabraniają. Jak Odoo 17, 18, 19 i 20 go ustawia i gdzie to zmienić.Błąd BR-CL-23: jednostka miary pozycji nie jest kodem UN/ECEBR-CL-23 wymaga kodów UN/ECE dla jednostki każdej pozycji, BR-23 jej obecności, a PEPPOL-EN16931-R130 zgodności z jednostką ceny. Skąd Odoo 17, 18, 19 i 20 ją bierze.Błąd BR-CO-15 w e-fakturze: wartość brutto nie jest netto plus VATBR-CO-15, BR-CO-14, BR-CO-16 i BR-CO-17 sprawdzają, czy sumy e-faktury się zgadzają. Co sumuje każda z nich i które zawodzą przez jeden grosz.
Sprawdzone w kodzie źródłowym modułu (wersja 17.0 i 20.0) i w podlinkowanych źródłach

Źródła