VRBL-INV-PT-2p1-15

Basic Info

Rule Legal Monetary Total Payable Amount = Legal Monetary Total Tax Inclusive Amount - Legal Monetary Total Prepaid Amount + Legal Monetary Total Payable Rounding Amount, with an acceptance range of 1.00 EURO (it does not mean that this tolerance is accepted by the customer).
Context /ubl:Invoice
Pattern vrbl-invoice-pt-2p1
Severity fatal

Implementation

(cac:LegalMonetaryTotal/cbc:PrepaidAmount and not(cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) 
			and (round((cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount - cac:LegalMonetaryTotal/cbc:PrepaidAmount) * 10 * 10) div 100) <= (cac:LegalMonetaryTotal/cbc:PayableAmount + 1.00) 
			and (round((cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount - cac:LegalMonetaryTotal/cbc:PrepaidAmount) * 10 * 10) div 100) >= (cac:LegalMonetaryTotal/cbc:PayableAmount - 1.00)) 
			or (not(cac:LegalMonetaryTotal/cbc:PrepaidAmount) and not(cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) 
			and cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount <= (cac:LegalMonetaryTotal/cbc:PayableAmount + 1.00) 
			and cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount >= (cac:LegalMonetaryTotal/cbc:PayableAmount - 1.00)) 
			or (cac:LegalMonetaryTotal/cbc:PrepaidAmount and cac:LegalMonetaryTotal/cbc:PayableRoundingAmount 
			and ((round((cac:LegalMonetaryTotal/cbc:PayableAmount - cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) * 10 * 10) div 100) <= ((round((cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount - cac:LegalMonetaryTotal/cbc:PrepaidAmount) * 10 * 10) div 100) + 1.00)) 
			and ((round((cac:LegalMonetaryTotal/cbc:PayableAmount - cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) * 10 * 10) div 100) >= ((round((cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount - cac:LegalMonetaryTotal/cbc:PrepaidAmount) * 10 * 10) div 100) - 1.00))) 
			or (not(cac:LegalMonetaryTotal/cbc:PrepaidAmount) and cac:LegalMonetaryTotal/cbc:PayableRoundingAmount 
			and (round((cac:LegalMonetaryTotal/cbc:PayableAmount - cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) * 10 * 10) div 100) <= (cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount + 1.00) 
			and (round((cac:LegalMonetaryTotal/cbc:PayableAmount - cac:LegalMonetaryTotal/cbc:PayableRoundingAmount) * 10 * 10) div 100) >= (cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount - 1.00))