Dans Dodock, tout est Document. Cette abstraction uniforme simplifie le développement, l'extension et la maintenance des applications.
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.
| Concept Dodock | Équivalent SQL | Description |
|---|---|---|
| DocType | Table + Schéma | Définition de la structure |
| Document | Ligne (row) | Enregistrement de données |
| DocField | Colonne | Champ du document |
| Link | Clé étrangère | Référence vers un autre DocType |
| Table | Table enfant | Relation 1-N intégrée |
Chaque champ d'un DocType est défini par :
| Type | Description | Exemple |
|---|---|---|
| Data | Texte court | Nom, référence |
| Text | Texte long | Description |
| Int | Nombre entier | Quantité |
| Float | Nombre décimal | Taux |
| Currency | Montant monétaire | Prix, total |
| Date | Date | Date de facturation |
| Datetime | Date et heure | Horodatage |
| Check | Case à cocher | Actif/Inactif |
| Select | Liste déroulante | Statut |
| Link | Référence vers un DocType | Client, Article |
| Table | Table enfant | Lignes de facture |
| Attach | Fichier joint | Document PDF |
| Type | Description |
|---|---|
| Section Break | Nouvelle section |
| Column Break | Nouvelle colonne |
| Tab Break | Nouvel onglet |
| HTML | Contenu HTML personnalisé |
Tous les documents possèdent automatiquement ces champs de métadonnées :
| Champ | Type | Description |
|---|---|---|
name | Data | Identifiant unique du document |
owner | Link (User) | Utilisateur créateur |
creation | Datetime | Date de création |
modified | Datetime | Date de dernière modification |
modified_by | Link (User) | Dernier utilisateur modificateur |
docstatus | Int | État du document |
Pour les DocTypes soumissibles :
| Valeur | État | Description |
|---|---|---|
| 0 | Brouillon | Modifiable, non validé |
| 1 | Soumis | Validé, non modifiable |
| 2 | Annulé | Annulé après soumission |
Le champ name est l'identifiant unique de chaque document. Plusieurs stratégies de nommage sont disponibles :
| Stratégie | Exemple | Usage |
|---|---|---|
| Série | FACT-2024-00001 | Documents numérotés |
| Champ | Valeur d'un champ | Noms uniques naturels |
| Expression | {client}-{date} | Combinaison de valeurs |
| Hash | a1b2c3d4e5 | Identifiants aléatoires |
| Prompt | Saisie manuelle | Cas particuliers |
# 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
Un champ Link crée une référence vers un autre DocType.
Un champ Table intègre une table enfant directement dans le document parent.
Exemple concret :
| Facture de vente | Client A |
|---|---|
| Date | 2024-01-15 |
| Articles | |
| ART-001 | 5 × 100 € = 500 € |
| ART-002 | 3 × 100 € = 300 € |
| Total | 800 € |
| Événement | Moment | Usage typique |
|---|---|---|
before_insert | Avant création | Valeurs par défaut |
validate | Avant sauvegarde | Validations métier |
before_save | Avant sauvegarde | Calculs automatiques |
after_insert | Après création | Notifications |
after_save | Après sauvegarde | Actions post-sauvegarde |
on_submit | À la soumission | Écritures comptables |
on_cancel | À l'annulation | Contre-passations |
on_trash | À la suppression | Nettoyage |