/
Entité / sous-entité

Entité / sous-entité

Dans le CRM, une entité va correspondre à une table. Lorsque l’on définit une entité, on renseigne le fichier *.schema.json.

Il est possible qu’une table contienne des sous-ensembles que l’on va vouloir identifier comme entité.
Par exemple, la table deal contient des affaires et des opportunités que l’on va distinguer avec le champ isProject.
Dans ce cas, les sous-ensembles ne se croisent pas, une affaire n’est pas une opportunité.
Dans le cas contraire, on peut avoir des sous-ensembles qui se croisent, comme les sites qui est un sous-ensemble des adresses de tiers;
ou encore les territoires et l’annuaire qui sont une représentation différentes d’une liste de collaborateur.

Entité principale

Le schéma de l’entité principale va permettre de lister donc l’ensemble des éléments.

Le nom du schéma doit avoir la syntaxe suivante :

<nom_de_table>.schema.json

Il ne faut pas utiliser :

  • TableName : car le nom du schéma doit correspondre au nom de la table

  • DataFilters : car on veut accéder à l’ensemble des données et pas créer un sous-ensemble

Sous-entité

Le schéma d'une sous-entité va permettre de lister un sous-ensemble des éléments.

Le nom du schéma doit avoir la syntaxe suivante (convention métier pour s’y retrouver) :

<nom_de_table>[nom_de_sous_entité].schema.json

On doit utiliser :

  • TableName : pour définir le nom de la table concernée par la sous-entité

On peut utiliser :

  • DataFilters : pour filtrer l’ensemble des données afin de créer un sous-ensemble

Identification

C’est la propriété objet qui permet d’identifier l'entité ou la sous-entité. L’essentiel de la définition d’une entité est dans cette propriété.
On retrouve les informations dans le CrudHeader, la colonne primaire d’une liste d’entité ou un colonne qui utilise ForeignEntity.

CrudHeader
Liste d’entité (colonne primaire et foreign)

Nous allons voir en détail toutes les propriétés.

EntityType

Correspond au type de l’entité. Valeur par défaut : Object.

  • Person : s’applique à une entité qui représente une personne physique.
    Au niveau de l’interface on retrouve un avatar dont les initiales sont calculées sur le titre de l’entité.

    Il est possible en définissant EntityPicture de charger une image.

  • Corporation : s’applique à une entité qui représente une personne morale (comme un tiers).
    Au niveau de l’interface on retrouve l'image suivante.

    Il est possible en définissant EntityPicture de charger une image propre à l'élément.

  • Object : s’applique à une entité qui ne représente pas une personne.
    Au niveau de l’interface il n’y a ni avatar, ni image.

EntityName

Correspond au nom de l’entité. Il faut renvoyer un terme au singulier.
Le nom est utilisé pour composer les informations affichées dans le CrudHeader de l’entité.
Il est aussi utilisé dans le filtre global d’une liste de cette entité.
Il est possible d’utiliser un datasource pour avoir un nom dynamique (exemple : customer), mais il faut faire attention à proposer une solution unique pour l’affichage dans la liste d’entité.

EntityDeclinations.PluralName

Correspond au nom de l’entité au pluriel. Il faut une clé de traduction qui sera utilisée pour afficher la liste.

IdField

Correspond au nom de la colonne pour représenter l’ID de l'élément.
Par défaut, c’est la colonne Code de la table.

TitleField

Correspond au nom de la colonne pour représenter le titre de l'élément.
Par exemple : pour customercontact c’est une colonne qui concatène le prénom et le nom.

EntityPicture

Correspond à l’objet permettant de renseigner l’image associé à un élément.
Note : il est possible de mettre directement le nom d’une colonne contenant l’image.