Valeur de date et d’heure au format 205

Erreur BR-FXEXT-CII-DT-097a Factur-X

La chaîne de date-heure avec l'attribut de format 205 doit être YYYYMMDDHHMMSS.

Règle obligatoire : tant qu'elle n'est pas respectée, la facture est invalide et sera rejetée par les validateurs.
Ce qui ne va pas

Le contenu de udt:DateTimeString ne correspond pas au motif vérifié pour l’année, le mois, le jour, l’heure et les minutes. Le texte du message indique toutefois le format YYYYMMDDHHMMSS ; le test vérifie en réalité un motif de 12 chiffres sans secondes.

Ce que signifie la règle

Selon le message, l’identifiant de format 205 désigne une valeur de date et d’heure. L’écart entre le format indiqué avec secondes et le motif testé est important, car la vérification rejette les valeurs comportant des secondes.

Veuillez vérifier la valeur de date et d’heure au format 205

La valeur de udt:DateTimeString ne correspond pas au motif numérique attendu par cette vérification. Notez que le motif vérifié diffère du format avec secondes indiqué dans le texte du message.

Que faire ?
  1. Vérifiez le contenu de udt:DateTimeString avec format="205".
  2. Comparez la valeur au motif testé, qui attend 12 chiffres pour l’année, le mois, le jour, l’heure et les minutes.
  3. Tenez compte du fait que le texte du message exige également les secondes, contrairement au test actuel.
  4. Générez à nouveau la facture et vérifiez-la de nouveau.
À quoi cela ressemble
✗ Déclenche le message
<udt:DateTimeString format="205">20240131123045</udt:DateTimeString>
✓ Correct
<udt:DateTimeString format="205">202401311230</udt:DateTimeString>
Détails techniques

Le test utilise matches() avec une expression régulière qui autorise les espaces autour de la valeur et vérifie le mois, le jour, l’heure et les minutes au moyen de plages de chiffres. L’expression ne contient aucun groupe pour les secondes et ne valide pas le jour du calendrier selon le mois.

Où la règle s'applique

La règle s’applique aux éléments udt:DateTimeString ayant l’attribut format="205".

Message d'origine du Schematron
Date time string with format attribute 205 shall be YYYYMMDDHHMMSS.
Contexte (rule/@context)
//udt:DateTimeString[@format = '205']
Expression de contrôle (assert/@test)
matches(., '^\s*(\d{4})(1[0-2]|0[1-9])(3[01]|[12][0-9]|0[1-9])([01][0-9]|2[0-3])[0-5][0-9]\s*$')