XSDHub

BR-CO-17: TVA din defalcare nu corespunde bazei și cotei

TVA din defalcare nu corespunde bazei și cotei — cauză, câmp XML, corecție și probe complete.

Ce înseamnă și cum corectezi

Pentru fiecare grup din defalcarea TVA, valoarea taxei BT-117 trebuie să corespundă bazei impozabile BT-116 înmulțite cu procentul BT-119, potrivit expresiei de rotunjire și toleranței implementate în pachet. În factura fictivă, baza este 100,00 RON, procentul este 21, iar valoarea corectă a TVA este 21,00 RON. Proba greșită schimbă TaxSubtotal/TaxAmount în 23,00. Nu confundăm această valoare cu TaxTotal/TaxAmount, care însumează taxa întregului document. Ambele elemente se numesc TaxAmount, iar alegerea părintelui este esențială când modifici exportul. Varianta corectată repară doar valoarea taxei din grup, astfel încât efectul mutației să poată fi urmărit. La diagnosticarea unei facturi reale, verifică întâi dacă baza include exact liniile și ajustările aceleiași categorii și cote. O bază greșită poate produce un calcul de TVA aparent coerent cu ea, dar incompatibil cu restul documentului. Consultă predicatul publicat mai jos pentru formula efectivă; nu presupune o regulă generică de toleranță din alt validator. Cota din exemplu ilustrează mecanismul numeric și nu stabilește cota legală pentru fiecare tranzacție. După recalcularea grupurilor, verifică și totalul TVA, valoarea totală cu TVA și suma rămasă de plată.

Câmpul și condiția din sursă

Mutația pentru BR-CO-17 vizează calea /*/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount.

[
  {
    "file": "expanded.sch (generated from original ANAF includes)",
    "kind": "assert",
    "context": "cac:TaxTotal/cac:TaxSubtotal",
    "test": "(round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) = 0 and (round(xs:decimal(cbc:TaxAmount)) = 0)) or (round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) != 0 and ((abs(xs:decimal(cbc:TaxAmount)) - 1 < round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(cbc:TaxAmount)) + 1 > round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 )))  or (not(exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent))) and (round(xs:decimal(cbc:TaxAmount)) = 0))",
    "message": "[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals."
  }
]

Fragment greșit

<cbc:TaxAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 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" currencyID="RON">23.00</cbc:TaxAmount>

Fragment corectat

<cbc:TaxAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 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" currencyID="RON">21.00</cbc:TaxAmount>

Reproducere cu motorul fixat

Fișierul br-co-17-bad.xml nu trece verificarea și produce 3 diagnostice de eroare în această probă. Perechea corectată trece etapele XSD și regulile de afaceri din pachetul ANAF. Câmpul modificat este cel indicat mai sus; restul datelor fictive sunt păstrate.

XML greșit complet · XML corectat complet

[
  {
    "code": "BR-CO-17",
    "message": "[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.",
    "path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:TaxTotal[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]/*:TaxSubtotal[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]",
    "svrl_kind": "failed-assert"
  }
]

Alte mesaje în aceeași probă

În acest test BR-CO-17 apare împreună cu BR-CO-14, BR-S-09.

Aceste rezultate descriu facturile sintetice publicate, nu frecvența erorilor din facturile vizitatorilor.

Verifică propriul XML · Înapoi la index · Surse, metodă și limite