Le format de date 102 doit suivre le modèle YYYYMMDD

Erreur CII-DT-097 Syntaxe (UBL/CII)

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

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 avec format 102 ne correspond pas au modèle attendu : quatre chiffres pour l’année, un mois de 01 à 12 et un jour de 01 à 31. Le test autorise également des espaces avant et après la date.

Ce que signifie la règle

Le format 102 représente une date dans l’ordre année, mois, jour. Ce modèle fixe permet de transmettre la valeur de date de manière uniforme.

Veuillez écrire la date au format YYYYMMDD

Une date dans udt:DateTimeString avec format 102 ne correspond pas au modèle attendu. Indiquez quatre chiffres pour l’année, suivis du mois et du jour, afin de respecter le format.

Que faire ?
  1. Repérez l’élément udt:DateTimeString concerné avec format 102.
  2. Indiquez la valeur avec quatre chiffres pour l’année, un mois à deux chiffres et un jour à deux chiffres.
  3. Générez à nouveau la facture et vérifiez-la.
À quoi cela ressemble
✗ Déclenche le message
<udt:DateTimeString format="102">2024-10-03</udt:DateTimeString>
✓ Correct
<udt:DateTimeString format="102">20241003</udt:DateTimeString>
Détails techniques

L’expression régulière vérifie huit chiffres dans l’ordre YYYYMMDD et limite le mois et le jour aux plages 01–12 et 01–31. Le test ne vérifie pas complètement la validité de la date dans le calendrier.

Où la règle s'applique

La règle s’applique à chaque élément udt:DateTimeString dont l’attribut format vaut 102.

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