XSDHub

BR-22 — Nedostaje obračunata količina

Uzrok, popravak i reproducirani XML primjer za BR-22 u hrvatskom eRačunu.

Značenje i popravak

Svaka stavka treba obračunatu količinu. Za račun se koristi InvoicedQuantity, a za odobrenje CreditedQuantity. Broj stavke, količina u opisu i jedinična količina cijene imaju druge uloge i ne popunjavaju taj podatak. Uz brojčanu vrijednost važna je jedinica mjere, koja se prenosi atributom unitCode.

U pogrešnom primjeru uklanjamo cijeli InvoicedQuantity iz jedne stavke. Ispravljena inačica vraća vrijednost 1 s jedinicom C62. Ne mijenjamo Price/BaseQuantity, koji također postoji u našem računu. Taj detalj pokazuje zašto se naziv količine mora čitati zajedno s putanjom: osnovica cijene može ostati prisutna dok obračunata količina nedostaje. Motor treba vratiti BR-22, a ispravljeni dokument proći sve aktivne faze. Pregledaj mapiranje količine u izvoznom modulu, osobito za usluge koje su u programu unesene samo kao paušalni iznos. Nemoj dodati proizvoljnu jedinicu ako nije usklađena s načinom iskazivanja cijene. Hrvatska pravila dodatno uspoređuju jedinicu obračunate količine s jedinicom osnovice cijene kada je ona navedena. Nakon popravka ponovno provjeri neto iznos stavke i ukupne iznose. Dodavanje količine bez odgovarajuće cijene moglo bi ukloniti ovaj nalaz, ali ostaviti račun aritmetički nedosljednim. Primjer služi tehničkoj provjeri strukture, a ne određivanju stvarno isporučene količine.

Polje koje mijenja test

Za BR-22 mijenja se samo /*/cac:InvoiceLine/cbc:InvoicedQuantity. Uklanja se jedan element sa svim pripadajućim atributima i sadržajem.

Reproducirani rezultat

Negativna datoteka: BR-22, BR-23.

Ispravljena datoteka prolazi XSD i oba skupa poslovnih pravila. Upozorenja osnovnog profila ostaju vidljiva: UBL-CR-006, UBL-CR-200, UBL-CR-412.

{
  "bad": {
    "ok": false,
    "stage": "Business rules",
    "rules": "HR-CIUS/EXT 2025 1.0.0, 13.3.2026 (primjena 15.3.2026) + EN16931 1.3.16",
    "syntax": "UBL",
    "engine": "SaxonC-HE 13.1 / saxonche 13.1.1",
    "errors": [
      {
        "code": "BR-22",
        "message": "[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:InvoiceLine[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]"
      },
      {
        "code": "BR-23",
        "message": "[BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:InvoiceLine[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]"
      }
    ],
    "warnings": [
      {
        "code": "UBL-CR-006",
        "message": "[UBL-CR-006]-A UBL invoice should not include the IssueTime",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      },
      {
        "code": "UBL-CR-200",
        "message": "[UBL-CR-200]-A UBL invoice should not include the AccountingSupplierParty SellerContact",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      },
      {
        "code": "UBL-CR-412",
        "message": "[UBL-CR-412]-A UBL invoice should not include the PaymentMeans PaymentDueDate",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      }
    ],
    "truncated": false
  },
  "good": {
    "ok": true,
    "stage": "Business rules",
    "rules": "HR-CIUS/EXT 2025 1.0.0, 13.3.2026 (primjena 15.3.2026) + EN16931 1.3.16",
    "syntax": "UBL",
    "engine": "SaxonC-HE 13.1 / saxonche 13.1.1",
    "errors": [],
    "warnings": [
      {
        "code": "UBL-CR-006",
        "message": "[UBL-CR-006]-A UBL invoice should not include the IssueTime",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      },
      {
        "code": "UBL-CR-200",
        "message": "[UBL-CR-200]-A UBL invoice should not include the AccountingSupplierParty SellerContact",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      },
      {
        "code": "UBL-CR-412",
        "message": "[UBL-CR-412]-A UBL invoice should not include the PaymentMeans PaymentDueDate",
        "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
      }
    ],
    "truncated": false
  }
}

Izmišljeni XML za preuzimanje

Preuzmi pogrešan XML · Preuzmi ispravljeni XML

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cn="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:mfin.gov.hr:cius-2025:1.0#conformant#urn:mfin.gov.hr:ext-2025:1.0</cbc:CustomizationID>
  <cbc:ProfileID>P1</cbc:ProfileID>
  <cbc:ID>TEST-HR-2026-001</cbc:ID>
  <cbc:IssueDate>2026-11-03</cbc:IssueDate>
  <cbc:IssueTime>12:34:56</cbc:IssueTime>
  <cbc:DueDate>2026-11-30</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9934">12345678903</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Izmišljena ulica 1</cbc:StreetName>
        <cbc:CityName>Zagreb</cbc:CityName>
        <cbc:PostalZone>10000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>HR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>HR12345678903</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>XSDHub izmišljeni prodavatelj</cbc:RegistrationName>
        <cbc:CompanyID>12345678903</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
    <cac:SellerContact>
      <cbc:ID>12345678903</cbc:ID>
      <cbc:Name>Testni operater</cbc:Name>
    </cac:SellerContact>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9934">98765432106</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Izmišljena ulica 1</cbc:StreetName>
        <cbc:CityName>Zagreb</cbc:CityName>
        <cbc:PostalZone>10000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>HR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>HR98765432106</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>XSDHub izmišljeni kupac</cbc:RegistrationName>
        <cbc:CompanyID>98765432106</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>10</cbc:PaymentMeansCode>
    <cbc:PaymentDueDate>2026-11-30</cbc:PaymentDueDate>
  </cac:PaymentMeans>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>25</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">125.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">125.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Izmišljena usluga za provjeru</cbc:Name>
      <cac:CommodityClassification>
        <cbc:ItemClassificationCode listID="CG">62.10.11</cbc:ItemClassificationCode>
      </cac:CommodityClassification>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>25</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
      <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cn="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:mfin.gov.hr:cius-2025:1.0#conformant#urn:mfin.gov.hr:ext-2025:1.0</cbc:CustomizationID>
  <cbc:ProfileID>P1</cbc:ProfileID>
  <cbc:ID>TEST-HR-2026-001</cbc:ID>
  <cbc:IssueDate>2026-11-03</cbc:IssueDate>
  <cbc:IssueTime>12:34:56</cbc:IssueTime>
  <cbc:DueDate>2026-11-30</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9934">12345678903</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Izmišljena ulica 1</cbc:StreetName>
        <cbc:CityName>Zagreb</cbc:CityName>
        <cbc:PostalZone>10000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>HR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>HR12345678903</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>XSDHub izmišljeni prodavatelj</cbc:RegistrationName>
        <cbc:CompanyID>12345678903</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
    <cac:SellerContact>
      <cbc:ID>12345678903</cbc:ID>
      <cbc:Name>Testni operater</cbc:Name>
    </cac:SellerContact>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9934">98765432106</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Izmišljena ulica 1</cbc:StreetName>
        <cbc:CityName>Zagreb</cbc:CityName>
        <cbc:PostalZone>10000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>HR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>HR98765432106</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>XSDHub izmišljeni kupac</cbc:RegistrationName>
        <cbc:CompanyID>98765432106</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>10</cbc:PaymentMeansCode>
    <cbc:PaymentDueDate>2026-11-30</cbc:PaymentDueDate>
  </cac:PaymentMeans>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>25</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">125.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">125.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Izmišljena usluga za provjeru</cbc:Name>
      <cac:CommodityClassification>
        <cbc:ItemClassificationCode listID="CG">62.10.11</cbc:ItemClassificationCode>
      </cac:CommodityClassification>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>25</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
      <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

Uvjet iz izvornih pravila

[
  {
    "source": "EN16931 1.3.16 expanded source",
    "kind": "assert",
    "context": "cac:InvoiceLine | cac:CreditNoteLine",
    "test": "exists(cbc:InvoicedQuantity) or exists(cbc:CreditedQuantity)",
    "message": "[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129)."
  }
]

UBL 2.1 Invoice / CreditNote · EN16931 1.3.16 · HR-CIUS/EXT 13.3.2026, primjena 15.3.2026 · XSD + Schematron #ALL

Provjeri vlastiti XML · Sva pravila

Porezna uprava: dokumentacija · Izvori / Sources · JSON: testovi · Metoda i granice (Hrvatski)