Message

Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

Context
ubl-invoice:Invoice/cac:AllowanceCharge | ubl-invoice:Invoice/cac:InvoiceLine/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:CreditNoteLine/cac:AllowanceCharge
Test
not(cbc:MultiplierFactorNumeric and cbc:BaseAmount) or u:slack(if (cbc:Amount) then cbc:Amount else 0, (xs:decimal(cbc:BaseAmount) * xs:decimal(cbc:MultiplierFactorNumeric)) div 100, 0.02)
Usage
/ ubl:Invoice / cac:AllowanceCharge / cbc:Amount
/ ubl:Invoice / cac:InvoiceLine / cac:AllowanceCharge / cbc:Amount
/ ubl:CreditNote / cac:AllowanceCharge / cbc:Amount
/ ubl:CreditNote / cac:CreditNoteLine / cac:AllowanceCharge / cbc:Amount