Invoice line grand total only once

Error FX-SCH-A-000340 Factur-X

Element 'ram:GrandTotalAmount' may occur at maximum 1 times.

Mandatory rule: As long as it is violated, the invoice is invalid and will be rejected by validators.
What is wrong

ram:GrandTotalAmount occurs more than once in ram:SpecifiedTradeSettlementLineMonetarySummation.

What the rule means

ram:GrandTotalAmount gives the grand total of the invoice line. Multiple occurrences would provide more than one grand total for the same summation.

Please include the invoice line grand total only once

The grand total appears more than once in an invoice line’s settlement. This element may occur there no more than once.

What to do
  1. Look for repeated ram:GrandTotalAmount elements in ram:SpecifiedTradeSettlementLineMonetarySummation.
  2. Make sure this element occurs there no more than once.
  3. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:SpecifiedTradeSettlementLineMonetarySummation>
  <ram:GrandTotalAmount>100.00</ram:GrandTotalAmount>
  <ram:GrandTotalAmount>120.00</ram:GrandTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
✓ Correct
<ram:SpecifiedTradeSettlementLineMonetarySummation>
  <ram:GrandTotalAmount>100.00</ram:GrandTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
Technical details

The XPath counts ram:GrandTotalAmount elements in the current ram:SpecifiedTradeSettlementLineMonetarySummation; the test passes when there is at most one.

Where the rule applies

The rule applies to the monetary summation in an invoice line’s settlement and checks ram:GrandTotalAmount there.

Context (rule/@context)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation
Test expression (assert/@test)
count(ram:GrandTotalAmount)<=1