BR-CO-10: Suma valorilor nete ale liniilor este incorectă
Suma valorilor nete ale liniilor este incorectă — cauză, câmp XML, corecție și probe complete.
Ce înseamnă și cum corectezi
BT-106 reprezintă suma valorilor nete ale tuturor liniilor facturii. În UBL, valoarea de la nivelul documentului se află în LegalMonetaryTotal/LineExtensionAmount, iar valorile însumate se află în InvoiceLine/LineExtensionAmount. Numele local identic nu înseamnă că cele două elemente au aceeași funcție. Urmărește părintele din calea raportată, ca să nu modifici accidental valoarea unei linii corecte. Factura de test conține o singură linie netă de 100,00 RON. În varianta greșită, suma documentului devine 100,01 RON, deși linia rămâne neschimbată. Varianta corectată readuce totalul liniilor la 100,00. Nu adăuga TVA la acest subtotal și nu scădea avansul: acestea apar în alte relații de calcul. Într-o factură cu mai multe poziții, însumează sumele nete exportate efectiv, după calculul fiecărei linii, folosind precizie zecimală. Nu calcula independent totalul dintr-o valoare afișată cu altă rotunjire. Deducerile și taxele suplimentare de la nivelul întregului document influențează totalul fără TVA, nu transformă BT-106 în total de plată. Dacă raportul arată și alte totaluri inconsistente, corectează întâi suma liniilor și recalculează relațiile dependente. Regula nu verifică dacă serviciul a fost prestat sau dacă prețul comercial este justificat.
Câmpul și condiția din sursă
Mutația pentru BR-CO-10 vizează calea /*/cac:LegalMonetaryTotal/cbc:LineExtensionAmount.
[
{
"file": "expanded.sch (generated from original ANAF includes)",
"kind": "assert",
"context": "cac:LegalMonetaryTotal",
"test": "(xs:decimal(cbc:LineExtensionAmount) = xs:decimal(round(sum(//(cac:InvoiceLine|cac:CreditNoteLine)/xs:decimal(cbc:LineExtensionAmount)) * 10 * 10) div 100))",
"message": "[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131)."
}
]Fragment greșit
<cbc:LineExtensionAmount 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">100.01</cbc:LineExtensionAmount>Fragment corectat
<cbc:LineExtensionAmount 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">100.00</cbc:LineExtensionAmount>Reproducere cu motorul fixat
Fișierul br-co-10-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-10",
"message": "[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).",
"path": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:LegalMonetaryTotal[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-10 apare împreună cu BR-CO-13.
Aceste rezultate descriu facturile sintetice publicate, nu frecvența erorilor din facturile vizitatorilor.
Verifică propriul XML · Înapoi la index · Surse, metodă și limite