> For the complete documentation index, see [llms.txt](https://help.glpi-project.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.glpi-project.org/doc-plugins/fr/plugins-glpi/genericobject.md).

# Generic Object

##

| Téléchargement                                          | Sources                                        |
| ------------------------------------------------------- | ---------------------------------------------- |
| <https://github.com/pluginsGLPI/genericobject/releases> | <https://github.com/pluginsGLPI/genericobject> |

### Prérequis (auto-hébergé)

| Version GLPI | PHP minimum | Recommandé |
| ------------ | ----------- | ---------- |
| 10.0.x       | 8.1         | 8.2        |
| 11.0.x       | 8.2         | 8.4        |

{% hint style="danger" %}
**Avec GLPI 11, ce plugin est destiné à la migration de vos assets génériques vers** [**actifs personnalités**](/documentation/fr/modules/configuration/asset-definitions.md) **(natif à partir de GLPI 11) . Il doit être installé uniquement en production pour effectuer la mise à jour, puis désinstallé une fois l’opération terminée.**
{% endhint %}

**Ce plugin reste compatible avec GLPI 10**

{% hint style="info" %}
Ce plugin est disponible sans souscription [GLPI Network](https://services.glpi-network.com/#offers). Il est également disponible sur [GLPI Cloud](https://glpi-network.cloud).
{% endhint %}

***

### Installer le plugin

* Allez sur la marketplace. Téléchargez et installez le plugin **Generic objects**

***

### Fonctionnalités

Ce plugin vous permet d'ajouter de nouveaux types d'objets d'inventaire, intégrés au framework GLPI.

Il prend en charge les fonctionnalités GLPI suivantes :

* gestion des entités et sous-entités ;
* recherche ;
* modèles ;
* historique ;
* intégration helpdesk ;
* intégration du plugin d'injection de fichier CSV ;
* intégration du plugin de désinstallation d'éléments ;
* intégration du plugin de gestion des commandes.

### Exemple d'utilisation

**Objectif :** Gérer votre flotte de voitures comme le reste de vos actifs informatiques.

* Créez un nouveau type d'objet d'inventaire *voiture*.
* Ajoutez les champs appropriés pour une *voiture*, tels que : *nom*, *numéro de série*, *numéro d'inventaire*, *type*, *modèle*, *couleur*, *état*, etc.
* Décrivez le comportement d'une *voiture* : visible dans la sous-entité, conserve l'historique, etc.
* Ajustez les droits sur les *voitures*.
* Activez l'objet *voitures*.
* Gérez votre collection de *voitures* dans GLPI.

### Installer le Plugin <a href="#install_plugin" id="install_plugin"></a>

* Décompressez l'archive.
* Déplacez le répertoire `genericobject` dans le répertoire `<GLPI_ROOT>/plugins`
* Naviguez vers la page *Configuration > Plugins*
* Installez et activez le plugin

***

### Utilisation

#### Créer un nouveau type d'objet <a href="#create_new_object" id="create_new_object"></a>

C'est la première étape.

* Cliquez sur le bouton *+* dans le formulaire de configuration du plugin.
* Créez le nouveau type d'objet d'inventaire :
  * *nom* : obligatoire, en minuscules, et doit être composé uniquement de lettres ;
  * *libellé* : par défaut, identique au nom.
* Validez.
* Activez le nouveau type d'élément pour l'utiliser.

**Exemple :** Créez un nouveau type d'objet d'inventaire *voiture*.

#### Modifier les libellés <a href="#edit_labels" id="edit_labels"></a>

Pour chaque type, un fichier de langue est disponible dans `<GLPI_ROOT>/files/_plugins/genericobject/locales/itemtype/`

Le plugin crée :

* un fichier de langue pour la langue actuelle
* un fichier de langue pour la langue par défaut de GLPI

{% hint style="info" %}
Si les langues actuelle et par défaut sont identiques, un seul fichier est créé.
{% endhint %}

Pour modifier le libellé du type d'élément, pour la langue anglaise, modifiez le fichier :

```php
<?php
// <GLPI_ROOT>/files/_plugins/genericobject/locales/<itemtype>/<itemtype>.en_GB.php
$LANG['genericobject']['<itemtype>'][1] = "<libellé du type>";
```

Vous pouvez également définir les libellés globalement dans les fichiers `<GLPI_ROOT>/files/_plugins/genericobject/locales/fields.<lang>.php` :

```php
<?php
// <GLPI_ROOT>/files/_plugins/genericobject/locales/<itemtype>/<itemtype>.en_GB.php
$LANG['genericobject']['fields']['<itemtype>'] = "<libellé du type>";
```

**Configurer le comportement**

**Exemple :** Décrivez le comportement d'une *voiture* : visible dans la sous-entité, conserve l'historique, etc.

Le nouveau type sera géré de la même manière que les types GLPI habituels (ordinateur, moniteur, équipement réseau, etc.)

{% hint style="info" %} Tous les objets sont au moins assignés à une *entité* {% endhint %}

L'onglet Comportement vous permet de définir :

* *sous-entités :* permet au type d'être récursif ;
* *Helpdesk :* permet d'associer un objet à un ticket ;
* *Corbeille :* utilise la fonctionnalité de corbeille de GLPI ;
* *Notes :* utilise la fonctionnalité de notes de GLPI ;
* *Historique :* permet l'historique pour ce type ;
* *Modèles :* permet la gestion des modèles ;
* *Documents :* permet de joindre des documents à un objet de ce type ;
* *Prêts :* permet d'emprunter des objets ;
* *Contrats :* lie un objet à un ou plusieurs contrats ;
* *Connexions réseau :* permet l'utilisation des ports et la gestion pour ce type ;
* *Plugin d'injection de fichier CSV :* permet à ce type d'être disponible pour utilisation dans le plugin ;
* *Plugin de désinstallation d'éléments :* permet de désinstaller ce type ;
* *Plugin de gestion des commandes :* permet de lier ce type à une commande ;

**Ajouter des champs**

**Exemple :** Ajoutez les champs appropriés pour une *voiture*, tels que : *nom*, *numéro de série*, *numéro d'inventaire*, *type*, *modèle*, *couleur*, *état*, etc.

Naviguez vers l'onglet *Champs*.

Le plugin est livré avec plusieurs champs prêts à l'emploi :

* Nom
* Type
* Modèle
* Numéro de série
* Numéro d'inventaire
* Utilisateur de l'élément
* Groupe
* Statut
* Commentaires
* Notes
* Emplacement
* Autre
* Fabricant
* URL
* Date de création
* Date d'expiration
* Catégorie
* Visible dans le Helpdesk
* Technicien responsable du matériel
* Domaine
* Contact
* Numéro de contact

{% hint style="info" %} L'utilisation de certains comportements ajoutera automatiquement certains champs à l'objet : {% endhint %}

* connexion réseau => emplacement
* prêts => emplacement
* helpdesk => est visible dans le Helpdesk
* notes => bloc-notes

**Intégration Helpdesk**

Pour utiliser un objet dans le helpdesk, utilisez la configuration suivante :

* Dans l'onglet *Comportement* : *utiliser le helpdesk* doit être réglé sur **Oui**.
* si le champ *Utilisateur* est défini, il permet à l'élément d'être visible dans la liste *Mes Éléments* (en tant qu'élément dont l'utilisateur est le propriétaire).
* si le champ *Groupe* est défini, il permet également à l'élément d'être visible dans la liste *Mes Éléments* (en tant qu'élément appartenant à un groupe dont l'utilisateur fait partie).
* si le champ *Helpdesk visible* est défini et si la valeur est réglée sur **Non** dans l'objet, alors l'objet ne sera pas du tout visible dans le helpdesk.

**Ajouter de nouveaux champs**

{% hint style="info" %} De nouveaux champs seront disponibles pour tous les types d'objets. {% endhint %}

* Créez un nouveau fichier nommé `<GLPI_ROOT>/files/_plugins/genericobject/fields/<type>.constant.php`

Par exemple, pour un type *voiture*, le fichier de constantes sera `<GLPI_ROOT>/files/_plugins/genericobject/fields/car.constant.php`.

Veuillez noter que la première ligne du fichier doit être la suivante, sinon les nouveaux champs n'apparaîtront pas dans la liste :

```php
<?php
global $GO_FIELDS, $LANG;
```

* Ajoutez les définitions des nouveaux champs.

**Ajouter un champ de liste déroulante simple**

```php
<?php
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['name']       = $LANG['genericobject']["<nom du type>"][2];
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['field']      = 'color';
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['input_type'] = 'dropdown';
```

{% hint style="info" %} La variable de langue doit être définie dans le fichier de langue (voir explication ci-dessus). {% endhint %}

* Ajoutez un champ de liste déroulante qui est assigné à une entité :

```php
<?php
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['name']         = $LANG['genericobject']["<nom du type>"][2];
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['field']        = 'color';
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['input_type']   = 'dropdown';
//La liste déroulante gère-t-elle les entités ? (true/false)
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['entities_id']  = true;
//Les valeurs peuvent-elles être récursives ? (true/false, uniquement pris en compte si entities_id est défini sur true)
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['is_recursive'] = true;
```

**Ajouter un champ de liste déroulante arborescente**

```php
<?php
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['name']       = $LANG['genericobject']["<nom du type>"][2];
```

```php
<?php
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['field']      = 'color';
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['input_type'] = 'dropdown';
//Est-ce un arbre-liste déroulante, ou une simple ? (vrai/faux)
$GO_FIELDS['plugin_genericobject_mytypecolors_id']['is_tree']    = true;
```

{% hint style="info" %}
Vous pouvez utiliser en même temps les paramètres suivants : *entities\_id*, *is\_recursive*, *is\_tree*.
{% endhint %}

**Ajouter un champ liste déroulante basé sur un objet GLPI-core (utilisateur, localisation...)**

```php
<?php
$GO_FIELDS['users_id_passengers_id']['name']       = 'Passenger';
$GO_FIELDS['users_id_passengers_id']['input_type'] = 'dropdown';
```

{% hint style="info" %}
Le nom entre crochets (`[]`) **DOIT** commencer par `users_id` pour être reconnu comme un champ basé sur la liste des utilisateurs GLPI.

Voir le fichier `<GLPI_ROOT>/files/_plugins/genericobject/fields/field.constant.php` pour obtenir une liste complète des champs disponibles.
{% endhint %}

**Ajouter une liste déroulante globale**

Une liste déroulante globale peut être utilisée dans tous les types d'éléments. Un bon exemple serait :

```php
<?php
$GO_FIELDS['categories_id']['name']          = $LANG['common'][36];
$GO_FIELDS['categories_id']['input_type']    = 'dropdown';
$GO_FIELDS['categories_id']['dropdown_type'] = 'global';
```

Une table de catégorie spécifique sera créée pour chaque type d'élément. Le nom de la table et le nom du champ seront calculés de cette manière :

* table : `glpi_plugin_genericobject_<itemtypename>_category`
* nom du champ : `plugin_genericobject_<itemtype>categories_id`

**Ajouter un champ entier**

```php
<?php
$GO_FIELDS['testinteger']['name']       = 'testinteger';
$GO_FIELDS['testinteger']['input_type'] = 'integer';
$GO_FIELDS['testinteger']['min']        = 10; // non obligatoire, par défaut 0
$GO_FIELDS['testinteger']['max']        = 40; // non obligatoire, par défaut 100
$GO_FIELDS['testinteger']['step']       = 3; // non obligatoire, par défaut 1
```

**Ajouter un champ texte**

```php
<?php
$GO_FIELDS['mytextfield']['name']       = 'Mon champ texte';
$GO_FIELDS['mytextfield']['input_type'] = 'text';
```

*Modifié dans la version 2.1.2* : En ajoutant l'argument suivant, vous pouvez indiquer au plugin que ce champ peut être généré automatiquement lors de l'utilisation d'un modèle :

```php
<?php
$GO_FIELDS['mytextfield']['autoname'] = true;
```

**Ajouter un champ Oui/Non**

```php
<?php
$GO_FIELDS['mybooleanfield']['name']       = 'Mon champ booléen';
$GO_FIELDS['mybooleanfield']['input_type'] = 'bool';
```

**Ajouter un champ date**

```php
<?php
$GO_FIELDS['creationdate']['name']       = $LANG['genericobject']['fields'][30];
$GO_FIELDS['creationdate']['input_type'] = 'date';
```

**Ajouter un champ date et heure**

```php
<?php
$GO_FIELDS['creationdate']['name']       = $LANG['genericobject']['fields'][30];
$GO_FIELDS['creationdate']['input_type'] = 'datetime';
```

{% hint style="info" %}
Si vous ne souhaitez pas qu'un champ soit modifié par des actions massives, ajoutez la ligne suivante à sa définition :

```php
<?php
$GO_FIELDS['myfield']['massiveaction'] = false;
```

{% endhint %}

#### Ajouter des champs globaux

Pour rendre vos champs accessibles à tous les types d'éléments :

* Créez un fichier nommé `<GLPI_ROOT>/files/_plugins/genericobject/fields/field.constant.php`
* Placez vos définitions dans ce fichier.

#### Droits de configuration

Vous pouvez définir des droits d'accès pour chaque type d'objet, pour chaque profil. Les options disponibles sont :

* *droit sur le type* : *aucun accès*, *lecture*, *écriture*.
* *droit d'associer ce type d'objet aux tickets* : *oui*, *non*.

Pour associer les droits, vous pouvez soit :

* Utiliser l'onglet *Droits* dans le formulaire *type d'élément*.
* Naviguer vers *Administration > Profils* et administrer les droits pour chaque profil.

#### Utiliser le nouveau champ

Activez le nouveau type, il est maintenant prêt à être utilisé.

Le nouveau type est disponible pour les utilisateurs dans le menu *Plugins > Gestion des objets*.

#### Cas d'utilisation de Generic Object comme CMMS

**But de cette documentation**

Montrer une utilisation complète de Generic Object comme CMMS (Computerized Maintenance Management System) dans un environnement biomédical.

À la fin de ce cas d'utilisation, vous aurez :

* une entité dédiée *Biomed* (sous *Entité racine*)
* contenant des objets *Biomédicaux* (dans le menu *Actifs*)
* avec des champs intégrés et définis par l'utilisateur
* gérés par des utilisateurs avec le profil *Admin\_biomed*

**Étapes**

Les étapes suivantes supposent que vous avez une autorisation de Super-Admin :

* Installation de Generic Object sur GLPI (validé avec genericobject >= 0.85-1.0 et GLPI >= 0.90)
* Configuration de Generic Object
* Configuration de GLPI
* Commencer à utiliser Generic Object et GLPI

**Installation de Generic Object sur GLPI**

Voir la section `install_plugin`{.interpreted-text role="ref"}.

**Configuration de Generic Object**

**Créer votre type d'objet**

Voir la section `create_new_object`{.interpreted-text role="ref"} et utiliser *biomedical* comme identifiant interne. Le libellé sera défini automatiquement sur *Biomedical* (avec un *B* majuscule).

Après une déconnexion/reconnexion, vous verrez le menu *Biomedical* dans Actifs.

**Définir les nouveaux champs de Biomedical**

Ces champs ne seront utilisables que par les objets de type Biomedical :

* Créez un nouveau fichier nommé : `<GLPI_ROOT>/files/_plugins/genericobject/fields/biomedical.constant.php`
* Ajoutez le contenu suivant :

```php
<?php
global $GO_FIELDS, $LANG;

// CODE CNEH
$GO_FIELDS['plugin_genericobject_cnehcodes_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][1];
$GO_FIELDS['plugin_genericobject_cnehcodes_id']['field']      = 'cnehcode';
$GO_FIELDS['plugin_genericobject_cnehcodes_id']['input_type'] = 'dropdown';

//  REFORME (oui ou non)
$GO_FIELDS['reformed']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][2];
$GO_FIELDS['reformed']['input_type'] = 'bool';

// CLASSE CE (3 choix possibles 1,2a ou 2b)
$GO_FIELDS['plugin_genericobject_classeces_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][3];
$GO_FIELDS['plugin_genericobject_classeces_id']['field']      = 'classce';
$GO_FIELDS['plugin_genericobject_classeces_id']['input_type'] = 'dropdown';

// UF (Unité Fonctionnelle)
$GO_FIELDS['plugin_genericobject_ufs_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][4];
$GO_FIELDS['plugin_genericobject_ufs_id']['field']       = 'uf';
$GO_FIELDS['plugin_genericobject_ufs_id']['input_type'] = 'dropdown';

// PRESTATAIRE BIOMED
$GO_FIELDS['plugin_genericobject_prestataires_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][5];
$GO_FIELDS['plugin_genericobject_prestataires_id']['field']       = 'prestataire biomed';
$GO_FIELDS['plugin_genericobject_prestataires_id']['input_type'] = 'dropdown';

// TYPE D'EQUIPEMENT BIOMED
$GO_FIELDS['plugin_genericobject_typedequipementbiomeds_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][6];
$GO_FIELDS['plugin_genericobject_typedequipementbiomeds_id']['field']       = "type d 'equipement biomed";
$GO_FIELDS['plugin_genericobject_typedequipementbiomeds_id']['input_type'] = 'dropdown';

// Criticite
$GO_FIELDS['plugin_genericobject_criticites_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][7];
$GO_FIELDS['plugin_genericobject_criticites_id']['field']      = 'criticite';
$GO_FIELDS['plugin_genericobject_criticites_id']['input_type'] = 'dropdown';

// Numéro marquage CE
$GO_FIELDS['plugin_genericobject_marquageces_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][8];
$GO_FIELDS['plugin_genericobject_marquageces_id']['field']      = 'marquagece';
$GO_FIELDS['plugin_genericobject_marquageces_id']['input_type'] = 'dropdown';

// Classe électrique
$GO_FIELDS['plugin_genericobject_classeelecs_id']['name']       = $LANG['genericobject']['PluginGenericobjectBiomedical'][9];
$GO_FIELDS['plugin_genericobject_classeelecs_id']['field']      = 'classeelec';
```

$GO\_FIELDS\['plugin\_genericobject\_classeelecs\_id']\['input\_type'] = 'dropdown'; ?>

{% hint style="warning" %}
Le suffixe `s_id` est obligatoire dans `[plugin_genericobject_field*s_id*]` car le framework GLPI exige que les champs de clé étrangère se terminent par `s_id`. En base de données, `glpi_plugin_genericobject_fields` est le nom de la table et `id`, sa clé étrangère. Voir la [documentation développeur GLPI](http://glpi-developer-documentation.readthedocs.io/en/master/devapi/database/dbmodel.html#fields).
{% endhint %}

***

### Définir les libellés des champs

Voir la section « [modifier les libellés](#edit_labels)s ».

* Modifiez votre fichier de localisation, par exemple : `<GLPI_ROOT>/files/_plugins/genericobject/locales/biomedical/biomedical.fr_FR.php`

Ajoutez le contenu suivant à la fin du fichier :

```
<?php
// Fields
$LANG['genericobject']['PluginGenericobjectBiomedical'][1]="Code CNEH";
$LANG['genericobject']['PluginGenericobjectBiomedical'][2]="Réformé";
$LANG['genericobject']['PluginGenericobjectBiomedical'][3]="Classe CE";
$LANG['genericobject']['PluginGenericobjectBiomedical'][4]="UF";
$LANG['genericobject']['PluginGenericobjectBiomedical'][5]="Prestataire Biomed";
$LANG['genericobject']['PluginGenericobjectBiomedical'][6]="Type d'équipement biomed";
$LANG['genericobject']['PluginGenericobjectBiomedical'][7]="Criticité";
$LANG['genericobject']['PluginGenericobjectBiomedical'][8]="Marquage CE";
$LANG['genericobject']['PluginGenericobjectBiomedical'][9]="Classe électrique";
```

#### Définir les comportements

Dans le menu Extensions > Gestion des objets, onglet Principal, sélectionnez :

* Élément dans la corbeille
* Historique
* Informations financières et administratives
* Documents
* Recherche globale
* Assistance
* Modèles
* Contrats
* Recherche globale

Cela ajoutera des champs prêts à l'emploi à votre type d'objet.

#### Ajouter des champs à votre type d'objet

Dans le menu Extensions > Gestion des objets, onglet Champs, vous pouvez désormais ajouter des champs à un objet de type Biomédical :

* Champs prêts à l'emploi (champs intégrés de GLPI)
* Nouveaux champs (définis dans la section « Définir les nouveaux champs de Biomédical »)

### Configuration de GLPI

#### Définir le profil Admin\_biomed

* Cloner le profil Admin
* Définir les droits suivants dans le profil Admin\_biomed :&#x20;
  * Administration > Profils > Admin\_biomed > Onglet Ressources > Tout désélectionner
  * Administration > Profils > Admin\_biomed > Onglet Assistance > Association > Éléments associables à un ticket > Biomédical
  * Administration > Profils > Admin\_biomed > Onglet Gestion > Tout sélectionner
  * Administration > Profils > Admin\_biomed > Onglet Gestion des objets > Biomédical > Tout sélectionner

{% hint style="info" %}
Avec ces paramètres, les utilisateurs Admin\_biomed ne voient que la section Ressources.
{% endhint %}

#### Définir l'entité Biomed et les règles d'autorisation

* Créez l'entité Biomed sous l'entité racine dans Administration > Entités.
* Configurez les règles d'autorisation pour attribuer le profil Admin\_biomed aux utilisateurs de l'entité Biomed.

#### Commencer à utiliser les objets génériques et GLPI

En tant qu'utilisateur Admin\_biomed, vous pouvez créer votre premier objet dans Ressources > Biomédical.

Pour gagner du temps, définissez les valeurs des nouveaux champs dans Configuration > Listes déroulantes > Gestion des objets.

***

## FAQ

Si vous avez des questions concernant l'utilisation du plugin, n'hésitez pas à consulter notre FAQ

<a href="/spaces/VU1qbB9Oe25HAYDAQ4tR/pages/h3wuzGDW5mrdlvkjOCdw" class="button secondary">Aller à la FAQ</a>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.glpi-project.org/doc-plugins/fr/plugins-glpi/genericobject.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
