# 10. COMPATIBILITÉ ET MODULES TIERS

# Compatibilité

#### **1.VERSIONS SUPPORTÉES**

<table id="bkmrk-dolibarr18.0.0-%C3%A0-24." style="width: 100%; border-collapse: collapse; margin: 15px 0px;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="background-color: rgb(249, 249, 249); padding: 10px; width: 30%; font-weight: bold;">**Dolibarr**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">18.0.0 à 24.x — la structure des fiches sur laquelle le module s'appuie a été vérifiée identique de la version 18 à la version 24

</td></tr><tr><td style="background-color: rgb(249, 249, 249); padding: 10px; width: 30%; font-weight: bold;">**PHP**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">7.4 à 8.4

</td></tr><tr><td style="background-color: rgb(249, 249, 249); padding: 10px; width: 30%; font-weight: bold;">**Base de données**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">MySQL / MariaDB / PostgreSQL (aucune syntaxe SQL propriétaire)

</td></tr><tr><td style="background-color: rgb(249, 249, 249); padding: 10px; width: 30%; font-weight: bold;">**Multi-entités**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Oui : paramètres, modèles par défaut, attribut tiers et fichiers sont propres à chaque entité

</td></tr></tbody></table>

#### **2.MODULES NATIFS**

<table id="bkmrk-module-natifr%C3%B4le-pou" style="width: 100%; border-collapse: collapse; margin: 15px 0px; font-size: 13px;"><tbody><tr style="background: rgb(184, 99, 161); color: white;"><th style="padding: 10px; border: 1px solid rgb(221, 221, 221); text-align: left;">Module natif

</th><th style="padding: 10px; border: 1px solid rgb(221, 221, 221); text-align: left;">Rôle pour InfraSFiles

</th></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">**Prélèvement** ou **Virement** (paiement par virement)

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Nécessaire au document « Bons de prélèvement et de virement ». L'un des deux suffit

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">**Stock**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Nécessaire au document « Inventaires »

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">**Agenda**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Enregistrement des événements « envoyé par email »

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">**Emails** (configuration)

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Modèles d'emails et envoi

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">**ECM / GED**

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Indexation des fichiers produits, comme pour les documents natifs

</td></tr></tbody></table>

#### **3.MODULES INFRAS COMPLÉMENTAIRES**

******InfraSPackPlus******

Fournit deux modèles supplémentaires, listés et activables depuis la page des paramètres d'***InfraSFiles*** :

- **InfraSPlus\_Bon** : bordereau de prélèvement / virement avec la mise en page et les options d'***InfraSPackPlus***
- **InfraSPlus\_INV** : feuille de comptage d'inventaire avec la mise en page et les options d'***InfraSPackPlus***

Documentation : [wiki InfraSPackPlus](https://wiki.infras.fr/books/infraspackplus)

******InfraSWorkflow******

Détermine la **zone de stockage** utilisée pour regrouper les références sur la feuille de comptage (section *Gestion des inventaires* : colonne « Zone » alimentée par un attribut supplémentaire du produit ou par les sous-catégories d'une catégorie de localisation). Dépendance **optionnelle** : sans ***InfraSWorkflow***, pas de regroupement, sans erreur.

Documentation : [wiki InfraSWorkflow](https://wiki.infras.fr/books/infrasworkflow)

#### **4.POUR LES DÉVELOPPEURS : AJOUTER SES PROPRES OBJETS**

***InfraSFiles*** est conçu comme un socle. Un module tiers peut déclarer un nouvel objet à documenter, sans modifier ***InfraSFiles***, grâce au hook `infrasFilesRegisterObjects` (contexte `infrasfilesregistry`). Le hook retourne, dans `$this->results`, une définition par objet avec notamment :

<table id="bkmrk-cl%C3%A9r%C3%B4lelabel%2C-pictol" style="width: 100%; border-collapse: collapse; margin: 15px 0px; font-size: 13px;"><tbody><tr style="background: rgb(184, 99, 161); color: white;"><th style="padding: 10px; border: 1px solid rgb(221, 221, 221); text-align: left;">Clé

</th><th style="padding: 10px; border: 1px solid rgb(221, 221, 221); text-align: left;">Rôle

</th></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`label`, `picto`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Libellé (clé de traduction) et picto affichés dans les paramètres

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`class`, `classpath`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Classe fille de l'objet natif ajoutant la génération de document

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`parentclass`, `parentpath`, `table`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Classe et table natives de l'objet

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`modelspath`, `docpart`, `dirout`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Répertoire des modèles PDF, type de modèle, sous-répertoire de sortie des fichiers

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`tabcontext`, `hookcontext`, `cardurl`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Accrochage de l'onglet et de la section sur la fiche native

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`needmodule`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Modules natifs dont au moins un doit être actif

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`permread`, `permwrite`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Droits natifs de lecture et d'écriture

</td></tr><tr style="background: rgb(245, 245, 245);"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`mailtype`, `mailtopic`, `mailtemplate`, `trigger`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Type de modèle de mail, sujet, modèle par défaut, déclencheur d'agenda

</td></tr><tr style="background: white;"><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">`options`

</td><td style="padding: 10px; border: 1px solid rgb(221, 221, 221);">Options propres à l'objet, affichées automatiquement dans les paramètres (liste, texte, texte multiligne, interrupteur)

</td></tr></tbody></table>

Un module tiers peut aussi se contenter de fournir un **modèle PDF supplémentaire** pour un objet déjà pris en charge : il suffit de déclarer `models` dans son descripteur et de placer le modèle dans `core/modules/infrasfiles/<objet>/doc/` de son propre répertoire, comme le fait ***InfraSPackPlus***. Le modèle est alors listé automatiquement dans les paramètres d'***InfraSFiles***.

<p class="callout info">Les tables natives de Dolibarr ne sont jamais modifiées : l'état documentaire (dernier modèle, dernier fichier) est mémorisé dans la table `llx_infrasfiles_document`, une ligne par objet et par entité.</p>