Architecture

Modèle de données

DocTypes, Documents et métadonnées dans Dodock

Modèle de données

Dans Dodock, tout est Document. Cette abstraction uniforme simplifie le développement, l'extension et la maintenance des applications.

Concepts fondamentaux

DocType et Document

Un DocType est la définition d'un type de document : il décrit les champs, les comportements et les permissions. Un Document est une instance de ce DocType, c'est-à-dire un enregistrement en base de données.

Analogie avec les bases de données

Concept DodockÉquivalent SQLDescription
DocTypeTable + SchémaDéfinition de la structure
DocumentLigne (row)Enregistrement de données
DocFieldColonneChamp du document
LinkClé étrangèreRéférence vers un autre DocType
TableTable enfantRelation 1-N intégrée
Fait amusant : Un DocType est lui-même un Document, stocké dans le DocType "DocType". Cette approche récursive permet de modifier la structure des données depuis l'interface utilisateur.

Types de champs (DocField)

Chaque champ d'un DocType est défini par :

  • fieldname : Nom technique (snake_case)
  • fieldtype : Type de données
  • label : Libellé affiché
  • reqd : Obligatoire ou non

Types de champs disponibles

TypeDescriptionExemple
DataTexte courtNom, référence
TextTexte longDescription
IntNombre entierQuantité
FloatNombre décimalTaux
CurrencyMontant monétairePrix, total
DateDateDate de facturation
DatetimeDate et heureHorodatage
CheckCase à cocherActif/Inactif
SelectListe déroulanteStatut
LinkRéférence vers un DocTypeClient, Article
TableTable enfantLignes de facture
AttachFichier jointDocument PDF

Champs de mise en page

TypeDescription
Section BreakNouvelle section
Column BreakNouvelle colonne
Tab BreakNouvel onglet
HTMLContenu HTML personnalisé

Champs standards

Tous les documents possèdent automatiquement ces champs de métadonnées :

ChampTypeDescription
nameDataIdentifiant unique du document
ownerLink (User)Utilisateur créateur
creationDatetimeDate de création
modifiedDatetimeDate de dernière modification
modified_byLink (User)Dernier utilisateur modificateur
docstatusIntÉtat du document

États du document (docstatus)

Pour les DocTypes soumissibles :

ValeurÉtatDescription
0BrouillonModifiable, non validé
1SoumisValidé, non modifiable
2AnnuléAnnulé après soumission

Nommage des documents

Le champ name est l'identifiant unique de chaque document. Plusieurs stratégies de nommage sont disponibles :

StratégieExempleUsage
SérieFACT-2024-00001Documents numérotés
ChampValeur d'un champNoms uniques naturels
Expression{client}-{date}Combinaison de valeurs
Hasha1b2c3d4e5Identifiants aléatoires
PromptSaisie manuelleCas particuliers

Exemple de série

# Dans le DocType, définir autoname :
autoname = "naming_series:"

# L'utilisateur choisit parmi les séries définies :
# FACT-.YYYY.-.#####  → FACT-2024-00001
# FAC-.MM.-.####      → FAC-01-0001

Relations entre DocTypes

Un champ Link crée une référence vers un autre DocType.

Table (relation 1-N)

Un champ Table intègre une table enfant directement dans le document parent.

Exemple concret :

Facture de venteClient A
Date2024-01-15
Articles
ART-0015 × 100 € = 500 €
ART-0023 × 100 € = 300 €
Total800 €

Cycle de vie d'un document

Événements disponibles

ÉvénementMomentUsage typique
before_insertAvant créationValeurs par défaut
validateAvant sauvegardeValidations métier
before_saveAvant sauvegardeCalculs automatiques
after_insertAprès créationNotifications
after_saveAprès sauvegardeActions post-sauvegarde
on_submitÀ la soumissionÉcritures comptables
on_cancelÀ l'annulationContre-passations
on_trashÀ la suppressionNettoyage

Pour aller plus loin

Personnaliser les DocTypes

Ajouter des champs et comportements

API Documents

Référence complète de l'API

Rôles et permissions

Gérer les accès