The line-level BasisAmount in SpecifiedTradeAllowanceCharge must equal
the value the percentage is applied to (BT-137/BT-142 semantic
definition, EN 16931-1:2017+A1:2019). For an item with basisQuantity != 1
that value is (price / basisQuantity) * quantity = the line subtotal, not
the per-unit price/basisQuantity value.
Also matches the line-net formula confirmed for EN 16931-1:2026 (BR-67,
ConnectingEurope/eInvoicing-EN16931 issue #445).
- ZUGFeRD2PullProvider.getItemTotalAllowanceChargeStr: emit
currencyFormat(item.getValue().multiply(item.getQuantity())).
- getAllowanceChargeStr (product-level, BG-29 GrossPrice path) is
intentionally NOT changed: there BasisAmount is the gross unit price
per BT-148, which is per-unit by definition.
- CalculationTest: two new XML-level regression tests asserting
BasisAmount and ActualAmount in emitted CII XML for allowance and
charge cases with basisQuantity != 1 (Extended profile).
Fixes#925 (Extended profile), related to #948.
Made-with: Cursor