Types de documents¶
Les types de documents (DocumentType) constituent le pivot central du système documentaire.
Ils permettent de relier un document à sa finalité métier, à son objet cible, et à l’ensemble des règles applicables tout au long de son cycle de vie.
Un DocumentType ne décrit donc pas uniquement ce qu’est un document, mais surtout comment il doit être traité.
Rôle d’un DocumentType¶
Un DocumentType permet de déterminer, de manière programmatique :
- la nature fonctionnelle d’un document,
- l’entité métier cible à laquelle il se rattache,
- le schéma de données attendu (
json_schema), - les règles de validation à appliquer,
- les règles d’intégration et d’enregistrement,
- l’organisation documentaire par défaut (dossier logique).
Il constitue ainsi le point d’entrée unique pour tous les mécanismes de traitement liés à un document.
Lien entre DocumentType et entités métier¶
Un DocumentType peut être associé explicitement à une classe métier cible via la propriété :
object_class
Cette association permet :
- de savoir quel type d’objet doit être créé ou alimenté lors de l’import,
- de router correctement les règles de validation et d’intégration,
- de garantir une cohérence entre le document et son usage métier.
Exemple typique :
- un document de type
invoiceest associé à une entitéPurchaseInvoice, - un document de type
bank_statementest associé à une entitéBankStatement.
👉 Cette relation est déterminante dans le cadre du DocumentProcess.
Organisation documentaire et folder_code¶
Chaque DocumentType définit un folder_code, qui indique l’emplacement logique par défaut des documents de ce type.
Important :
- ce dossier sert uniquement à l’organisation et à la lisibilité,
- il ne constitue jamais un mécanisme fonctionnel,
- la recherche et l’exploitation des documents ne reposent jamais sur les dossiers.
L’organisation par dossier est donc une conséquence, pas une règle métier.
Schéma JSON et structure des données¶
Lorsqu’un json_schema est défini pour un DocumentType, il sert à :
- valider la structure du
document_json, - garantir la présence des champs attendus,
- normaliser les données exploitées par le système.
Ce schéma constitue la base technique de la complétude des documents, mais ne remplace pas la validation métier, qui intervient ultérieurement via les règles de validation.
Sous-types de documents (DocumentSubtype)¶
Certains types de documents nécessitent une spécialisation plus fine, exprimée via des DocumentSubtype.
Un sous-type permet notamment :
- d’affiner les règles de validation,
- de différencier les stratégies d’intégration,
- d’adapter les règles d’étiquetage ou de classement.
Les sous-types sont toujours rattachés à un DocumentType et n’existent jamais de manière autonome.
Exemples courants :
- factures d’acompte, notes de crédit, factures de régularisation,
- procès-verbaux d’assemblées ordinaires ou extraordinaires,
- attestations spécifiques au sein des pièces justificatives.
DocumentType et règles associées¶
Un DocumentType peut être associé à plusieurs familles de règles, chacune jouant un rôle distinct :
Règles de validation (ValidationRule)¶
Définissent les contrôles métier bloquants à appliquer avant toute intégration.
Ces règles sont décrites en détail dans
document-validation.md.
Règles d’enregistrement (RecordingRule)¶
Définissent comment un document validé est :
- converti en écritures comptables,
- ou transformé en entités opérationnelles.
Elles déterminent notamment :
- les comptes utilisés,
- les mouvements générés,
- les liens entre objets.
Règles d’étiquetage (LabelingRule)¶
Définissent les libellés, catégories ou marqueurs appliqués au document, indépendamment de son traitement comptable ou juridique.
Usage programmatique des DocumentType¶
Grâce à cette structuration, il est possible de :
- déterminer automatiquement quelles règles appliquer à un document,
- exécuter les validations appropriées sans logique conditionnelle dispersée,
- rendre le système extensible sans modifier les entités métier existantes.
L’ajout d’un nouveau type de document se fait donc principalement par configuration, et non par duplication de logique.
À propos de la liste des types de documents¶
La liste exhaustive des DocumentType et DocumentSubtype disponibles est définie dans le code et peut évoluer dans le temps.
Cette documentation :
- n’a pas vocation à être une référence exhaustive,
- décrit les principes, pas les valeurs figées,
- s’appuie sur des exemples représentatifs.
Le code constitue la source de vérité pour la définition complète des types disponibles.
En résumé¶
DocumentTypeest le pivot du système documentaire.- Il relie documents, entités métier et règles.
- Les dossiers sont une organisation secondaire.
- Les sous-types permettent une spécialisation fine.
- Les règles sont attachées aux types, pas aux objets.
- Le système est extensible sans refonte structurelle.