Nettobetrag der Zwischensumme

Fehler BR-FXEXT-08 Factur-X

Wenn der „Untertyp der Rechnungsposition“ (BT-X-8) den Wert „Zwischensumme“ (GROUP) hat und der „Nettobetrag der Rechnungsposition“ (BT-131) angegeben ist, muss er der Summe der BT-131 der nächstniedrigeren Ebenen entsprechen, für die der „Untertyp der Rechnungsposition“ (BT-X-8) den Wert „Normale Rechnungsposition (Standardfall)“ (DETAIL) oder „Zwischensumme“ (GROUP) hat. Infolgedessen müssen alle niedrigeren Ebenen einen BT-131-Wert enthalten, wenn BT-X-8 den Wert DETAIL oder GROUP hat.

Pflichtregel: Solange sie verletzt ist, ist die Rechnung ungültig und wird von Validatoren abgewiesen.
Was nicht stimmt

Wenn LineStatusReasonCode den Wert GROUP hat und LineTotalAmount angegeben ist, muss dieser Betrag der Summe der LineTotalAmount-Werte der direkt zugeordneten Positionen mit dem Untertyp DETAIL oder GROUP entsprechen. Der Test berechnet die Summe auf zwei Dezimalstellen gerundet.

Was die Regel bedeutet

Der Nettobetrag einer Zwischensumme muss mit den Nettobeträgen der zugehörigen untergeordneten Rechnungspositionen übereinstimmen. Dadurch wird die rechnerische Konsistenz der Positionshierarchie gewahrt.

Betroffene Felder BT-X-8 BT-131
Bitte gleichen Sie den Nettobetrag der Zwischensumme ab

Der Nettobetrag einer als GROUP gekennzeichneten Rechnungsposition stimmt nicht mit den Beträgen ihrer direkt untergeordneten Positionen überein. Passen Sie den Betrag oder die zugehörigen Positionsbeträge an.

Was ist zu tun?
  1. Prüfen Sie bei der Zwischensumme den Wert von LineTotalAmount.
  2. Vergleichen Sie ihn mit den LineTotalAmount-Werten der direkt zugeordneten Positionen mit DETAIL oder GROUP.
  3. Prüfen Sie, dass jede dieser Positionen einen Nettobetrag enthält.
  4. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
So sieht es aus
✗ Führt zur Meldung
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>1</ram:LineID>
    <ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>10.00</ram:LineTotalAmount>
    </ram:SpecifiedTradeSettlementLineMonetarySummation>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>2</ram:LineID>
    <ram:ParentLineID>1</ram:ParentLineID>
    <ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>4.00</ram:LineTotalAmount>
    </ram:SpecifiedTradeSettlementLineMonetarySummation>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
✓ In Ordnung
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>1</ram:LineID>
    <ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>4.00</ram:LineTotalAmount>
    </ram:SpecifiedTradeSettlementLineMonetarySummation>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>2</ram:LineID>
    <ram:ParentLineID>1</ram:ParentLineID>
    <ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>4.00</ram:LineTotalAmount>
    </ram:SpecifiedTradeSettlementLineMonetarySummation>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
In FactoorSharp prüfen
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • LineStatusReasonCodes (BT-X-8)
  • TradeLineItem.LineTotalAmount (BT-131)
Technische Details

Der Test vergleicht den LineTotalAmount-Wert einer Position mit dem auf zwei Dezimalstellen gerundeten Summenwert der Positionen, deren ParentLineID der LineID dieser Position entspricht und deren LineStatusReasonCode DETAIL oder GROUP ist.

Wo die Regel greift

Die Regel gilt für Rechnungspositionen in IncludedSupplyChainTradeLineItem. Sie prüft den Betrag einer als GROUP gekennzeichneten Position im Verhältnis zu den direkt untergeordneten Positionen.

Originalmeldung aus dem Schematron
If the "Subtype of invoice item" (BT-X-8) has the value "Subtotal" (GROUP) and the "Net amount of the invoice item" (BT-131) is specified, it must correspond to the sum of the BT-131 of the next lower levels for which the "Subtype of the invoice item" (BT-X-8) has the value "Regular item (standard case)" (DETAIL) or "Subtotal" (GROUP). As a consequence, all lower levels shall contain a BT-131 value, when BT-X-8 has the value DETAIL or GROUP.
Kontext (rule/@context)
//ram:IncludedSupplyChainTradeLineItem
Prüfausdruck (assert/@test)
every $item in //ram:IncludedSupplyChainTradeLineItem[ ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'GROUP' and normalize-space(ram:SpecifiedLineTradeSettlement/ ram:SpecifiedTradeSettlementLineMonetarySummation/ ram:LineTotalAmount) != '' ] satisfies number(normalize-space($item/ram:SpecifiedLineTradeSettlement/ ram:SpecifiedTradeSettlementLineMonetarySummation/ ram:LineTotalAmount)) = round(sum( for $child in //ram:IncludedSupplyChainTradeLineItem[ normalize-space(ram:AssociatedDocumentLineDocument/ram:ParentLineID) = normalize-space($item/ ram:AssociatedDocumentLineDocument/ram:LineID) and ( ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'GROUP' ) ] return number(normalize-space( $child/ram:SpecifiedLineTradeSettlement/ ram:SpecifiedTradeSettlementLineMonetarySummation/ ram:LineTotalAmount)) )*100) div 100