Summe der Zuschläge und Logistikgebühren abstimmen

Fehler BR-FXEXT-CO-12 Factur-X

Absolutwert von (Summe der Zuschläge auf Dokumentenebene (BT-108) - Σ Beträge des Zuschlags auf Dokumentenebene (BT-99) - Σ Beträge der Servicegebühr (BT-x-272))<= 0,01 * (Anzahl der Beträge des Zuschlags auf Dokumentenebene (BT-99) + Anzahl der Beträge der Servicegebühr (BT-X-272)).

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

Der Betrag ram:ChargeTotalAmount muss der Summe der Zuschläge auf Dokumentenebene (BT-99) und der Logistikgebühren (BT-X-272) entsprechen. Die zulässige Abweichung beträgt höchstens 0,01 je erfasstem Zuschlag oder je Logistikgebühr; der Gesamtbetrag darf nicht fehlen, wenn solche Beträge vorhanden sind.

Was die Regel bedeutet

BT-108 stellt den Gesamtbetrag der Zuschläge auf Dokumentenebene dar. Dazu zählen die einzelnen Zuschläge BT-99 und die Logistikgebühren BT-X-272, jeweils innerhalb der festgelegten Rundungstoleranz.

Betroffene Felder BT-108 BT-99 BT-X-272
Bitte stimmen Sie die Summe der Zuschläge und Logistikgebühren ab

Der Gesamtbetrag der Zuschläge stimmt nicht ausreichend mit den dokumentenweiten Zuschlägen und Logistikgebühren überein oder der Gesamtbetrag fehlt. Gleichen Sie den Gesamtbetrag mit den erfassten Einzelbeträgen ab.

Was ist zu tun?
  1. Vergleichen Sie ram:ChargeTotalAmount mit den ram:ActualAmount-Werten der Zuschläge und den ram:AppliedAmount-Werten der Logistikgebühren.
  2. Prüfen Sie den Gesamtbetrag über ChargeTotalAmount und die Einzelbeträge über ActualAmount.
  3. Berücksichtigen Sie die zulässige Toleranz von 0,01 je Zuschlag oder Logistikgebühr.
  4. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
In FactoorSharp prüfen
  • FacturXInvoice.ChargeTotalAmount (BT-108)
  • AbstractTradeAllowanceCharge.ActualAmount (Document level charge: BT-99)
Technische Details

Der Test vergleicht ram:ChargeTotalAmount mit der gerundeten Summe von ram:ActualAmount für Zuschläge mit ram:ChargeIndicator/udt:Indicator='true' sowie ram:AppliedAmount aus ram:SpecifiedLogisticsServiceCharge. Die absolute Toleranz beträgt 0,01 multipliziert mit der Gesamtzahl dieser Einträge; ohne Einträge und ohne Gesamtbetrag ist die Bedingung ebenfalls erfüllt.

Wo die Regel greift

Gilt für den Zuschlagsgesamtbetrag in ram:SpecifiedTradeSettlementHeaderMonetarySummation, für dokumentenweite ram:SpecifiedTradeAllowanceCharge und für ram:SpecifiedLogisticsServiceCharge.

Originalmeldung aus dem Schematron
Absolute Value of (Sum of charges on document level (BT-108) - Σ Document level charge amounts (BT-99) - Σ Logistics Service fee amounts (BT-x-272))<= 0,01 * (Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)).
Kontext (rule/@context)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation
Prüfausdruck (assert/@test)
( not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='true']) and not (ram:ChargeTotalAmount) ) or ( for $calculatedAmount in xs:decimal(xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='true']/ ram:ActualAmount)* 100 ) div 100)+ xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100)), $totalAmount in xs:decimal(ram:ChargeTotalAmount), $nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/ udt:Indicator='true']) + count(../ram:SpecifiedLogisticsServiceCharge)), $tolerance in xs:decimal(0.01), $maxTolerance in $nbChargeItems * $tolerance, $diff in xs:decimal($totalAmount - $calculatedAmount), $abs in xs:decimal(abs($diff)) return $abs le $maxTolerance )