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.
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.