Enddatum des Abrechnungszeitraums prüfen

Fehler BR-29 EN 16931

[BR-29] - Wenn sowohl das Anfangsdatum des Rechnungszeitraums (BT-73) als auch das Enddatum des Rechnungszeitraums (BT-74) angegeben sind, muss das Enddatum des Rechnungszeitraums (BT-74) nach dem Anfangsdatum des Rechnungszeitraums (BT-73) liegen oder diesem entsprechen.

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

Wenn sowohl ram:StartDateTime als auch ram:EndDateTime mit einem Datum im Format 102 angegeben sind, liegt das Enddatum vor dem Startdatum. Ein fehlendes Start- oder Enddatum löst diese Reihenfolgebedingung nicht aus.

Was die Regel bedeutet

Ein Abrechnungszeitraum kann nicht vor seinem eigenen Beginn enden. Die Reihenfolge der Datumsangaben beschreibt den Zeitraum, auf den sich die Rechnung bezieht.

Betroffene Felder BT-73 BT-74
Bitte geben Sie ein Enddatum nach oder am Startdatum an

Das Enddatum des Abrechnungszeitraums liegt vor seinem Startdatum. Passen Sie die Reihenfolge der beiden Datumsangaben an, wenn beide im Zeitraum angegeben sind.

Was ist zu tun?
  1. Vergleichen Sie das Datum in ram:StartDateTime mit dem Datum in ram:EndDateTime.
  2. Stellen Sie sicher, dass das Enddatum gleich dem Startdatum oder später ist.
  3. Prüfen Sie, ob beide Datumswerte im Format 102 angegeben sind.
  4. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
So sieht es aus
✗ Führt zur Meldung
<ram:BillingSpecifiedPeriod>
  <ram:StartDateTime>
    <udt:DateTimeString format="102">20250110</udt:DateTimeString>
  </ram:StartDateTime>
  <ram:EndDateTime>
    <udt:DateTimeString format="102">20250109</udt:DateTimeString>
  </ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
✓ In Ordnung
<ram:BillingSpecifiedPeriod>
  <ram:StartDateTime>
    <udt:DateTimeString format="102">20250109</udt:DateTimeString>
  </ram:StartDateTime>
  <ram:EndDateTime>
    <udt:DateTimeString format="102">20250110</udt:DateTimeString>
  </ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
In FactoorSharp prüfen
  • FacturXInvoice.BillingPeriodStart (BT-73)
  • FacturXInvoice.BillingPeriodEnd (BT-74)
Technische Details

Der XPath vergleicht die Datumswerte in ram:EndDateTime/udt:DateTimeString und ram:StartDateTime/udt:DateTimeString mit @format='102'. Die Bedingung gilt ebenfalls als erfüllt, wenn einer der beiden Datumscontainer fehlt.

Wo die Regel greift

Die Regel gilt für den Abrechnungszeitraum ram:BillingSpecifiedPeriod in der Zahlungsabwicklung auf Dokumentenebene. Sie vergleicht das Startdatum und das Enddatum des Zeitraums, sofern beide angegeben sind.

Originalmeldung aus dem Schematron
If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).
Kontext (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod
Prüfausdruck (assert/@test)
(ram:EndDateTime/udt:DateTimeString[@format = '102']) >= (ram:StartDateTime/ udt:DateTimeString[@format = '102']) or not (ram:EndDateTime) or not (ram:StartDateTime)