Message

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

Context
/ubl:OrderChange/cac:AllowanceCharge |/ubl:OrderChange/cac:OrderLine/cac:LineItem/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:OrderChange / cac:AllowanceCharge / cbc:Amount
/ ubl:OrderChange / cac:OrderLine / cac:LineItem / cac:AllowanceCharge / cbc:Amount