BR-CO-15: Totalul cu TVA nu corespunde bazei și taxei
Totalul cu TVA nu corespunde bazei și taxei — cauză, câmp XML, corecție și probe complete.
Ce înseamnă și cum corectezi
BT-112 este valoarea totală a facturii cu TVA. Relația verificată compară această valoare cu totalul fără TVA BT-109 și cu valoarea TVA BT-110 în moneda facturii. În UBL, totalurile fără și cu TVA se găsesc în LegalMonetaryTotal, iar valoarea taxei se află în TaxTotal. Aceste elemente nu se află toate sub același părinte, deși sunt afișate adesea împreună în aplicația contabilă. În exemplul nostru, 100,00 RON fără TVA plus 21,00 RON TVA dau 121,00 RON cu TVA. Proba greșită schimbă numai TaxInclusiveAmount în 121,01. Corecția readuce exact acest total la 121,00, lăsând suma de plată și valorile liniilor neschimbate. O diferență de un ban nu devine automat admisă pentru că programul folosește altă rotunjire internă. Aplică relația și precizia cerute de pachet valorilor exportate efectiv. Nu substitui suma rămasă de plată după avansuri: aceasta este BT-115 și are altă formulă. Dacă factura conține o a doua monedă pentru contabilizarea TVA, identifică mai întâi TaxTotal relevant pentru moneda documentului. O corecție făcută doar pe PDF nu schimbă XML și nu înlătură eroarea. Repară calculul totalului în sursa de date, apoi verifică toate relațiile dependente.
Câmpul și condiția din sursă
Mutația pentru BR-CO-15 vizează calea /*/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount.
[
{
"file": "expanded.sch (generated from original ANAF includes)",
"kind": "assert",
"context": "/ubl:Invoice | /cn:CreditNote",
"test": "every $Currency in cbc:DocumentCurrencyCode satisfies (count(cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) eq 1) and (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxInclusiveAmount) = round( (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxExclusiveAmount) + cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) * 10 * 10) div 100)",
"message": "[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110)."
}
]Fragment greșit
<cbc:TaxInclusiveAmount 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">121.01</cbc:TaxInclusiveAmount>Fragment corectat
<cbc:TaxInclusiveAmount 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">121.00</cbc:TaxInclusiveAmount>Reproducere cu motorul fixat
Fișierul br-co-15-bad.xml nu trece verificarea și produce 2 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-15",
"message": "[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).",
"path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]",
"svrl_kind": "failed-assert"
}
]Alte mesaje în aceeași probă
În acest test BR-CO-15 apare împreună cu BR-CO-16.
Aceste rezultate descriu facturile sintetice publicate, nu frecvența erorilor din facturile vizitatorilor.
Verifică propriul XML · Înapoi la index · Surse, metodă și limite