Catalogues de propriétés obligatoires
Les catalogues permettent de spécifier les propriétés obligatoires sur une entité. Ces propriétés impactent le calcul de la note d'avancement de ce produit quand elles ne sont pas renseignées. Un catalogue permet également de spécifier des champs et des listes à auditer.
Ces catalogues sont définis au format JSON sur l'instance directement: Entrepôt > Système > Catalogues de propriétés > Catalogs
Chaque catalogue contient un certain nombre de champs obligatoires ou optionel dans sa définition:
Identifiant | Type | Obligatoire | Description |
---|---|---|---|
id | texte | Oui | l'identifiant unique du catalogue (ex: "inco"); |
label | texte | Oui | le nom affiché de ce catalogue (ex: "EU 1169/2011 (INCO)"); |
entityType | tableau | Non | permet de filtrer l'application du catalogue à un type précis d'entité (ex: ['bcpg:finishedProduct'] appliquera ce catalogue uniquement aux produits finis). |
entityFilter | texte | Non | permet de filtrer l'application du catalogue à un entité grâce à une formule SPEL ( ex: "hierarchy1 != null" ou "spel(hierarchy1 != null)" appliquera ce catalogue uniquement aux entités avec une famille). |
fields | tableau | Oui | la liste des champs à renseigner pour que l'entité soit validée (ex: ["bcpg:legalName", "bcpg:storageConditionsRef"] créera un catalogue où le libellé légal ainsi que les conditions de conditionnement doivent être renseignées); |
uniqueFields | tableau | non | la liste des champs à valeur unique (ex: ["bcpg:erpcode", "cm:name"]). Si une valeur est dupliquée, le champ sera renseigné dans le catalogue |
auditedFields | tableau | Non | la liste des champs ou listes prises en comptes lors de la mise à jour de la date de modification du catalogue.(ex: ["bcpg:legalName", "compoList"]). Lorsque l'un des champs de cette liste est modifié, la date du catalogue sera actualisée |
i18nMessages | Objet | Non | mapping champs / labels permettant de spécifier un libellé pour un champ obligatoir. ex : {"bcpg:clients":"associé", "cm:title":"becpg.forms.field.tradeName"} pour bcpg:clients on utilise le nouveau label associé. pour cm:title on utilise une clé de langue, cette clé de langue doit être déclarée dans un fichier de langue Core (Alfresco) |
locales | tableau | Non | la liste des langues auxquelles s'applique le catalogue. Si ce champ n'est pas présent, les langues des rapports seront choisies (s'il y en a), sinon la langue du système sera la langue sélectionnée. Une langue est définie par un code de deux lettres selon la norme ISO-639-1 https://fr.wikipedia.org/wiki/Liste\_des\_codes\_ISO\_639-1 |
Il est possible d'indiquer une alternative entre deux champs dans une liste en les séparant par le symbole "|". (ex: ["bcpg:useByDate|bcpg:bestBeforeDate"]).
Pour les champs multilingues, il est possible de rendre obligatoire ce champ uniquement pour une langue: il faut faire suivre le champ d'un underscore et de la langue, par exemple bcpg:legalName_pl
force
le renseignement du champ libellé légal en polonais, quelque soit la langue choisie dans le catalogue ou les rapports.
Il est également possible de créer des champs de type formule en préfixant le champ par formula{id}|. Par exemple formula1|isLiquid() ou formula1|spel(isLiquid()).
L'id de la formule peut ensuite être utilisé pour spécifier son libellé:
"i18nMessages": {
"formula1" : "becpg.forms.field.tradeName",
"formula2" : "formula2.missingKey"
}
Vous pouvez ainsi utiliser des formules SPEL pour tester qu'une liste est renseigné ou vide par exemple:
formula1|spel(costList.?[value != null].size() == costList.size()) test si toutes les valeurs des coûts sont renseignés
Ci-dessous des exemples de catalogues :
[
{
"id": "incoFinishedProduct",
"label": "EU 1169/2011 (INCO)",
"entityType": [
"bcpg:finishedProduct"
],
"uniqueFields": [
"bcpg:erpCode",
"cm:name"
],
"fields": [
"bcpg:legalName",
"bcpg:precautionOfUseRef",
"bcpg:useByDate|bcpg:bestBeforeDate",
"bcpg:storageConditionsRef",
"cm:title"
]
},
{
"id": "incoRawMaterials",
"label": "EU1169/2011 (INCO)",
"entityType": [
"bcpg:rawMaterial"
],
"uniqueFields": [
"bcpg:erpCode",
"cm:name"
],
"fields": [
"bcpg:legalName"
]
}
]
Il est recommandé de vérifier la validité du tableau JSON (sans antislash) grâce à un parser avant de lancer l'instance - http://json.parser.online.fr/
N.B : Il faut vider les caches une fois le fichier modifié.
Démarche facile pour ajouter/supprimer un champ du catalogue :
- Aller sur Entrepôt>Système>Catalogue de propriétés;
- Mettre le curseur sur "Catalogs" et cliquer sur "Télécharger";
- Ouvrir le fichier avec un éditeur de texte (Atom par exemple);
- Ajouter ou supprimer une ligne;
- Retourner sur l'instance et cliquer sur "Plus" puis "Importer une nouvelle version" et choisir le fichier tout juste modifié.