Implรฉmenter la notion de liste d'options conditionnelles โ
Ce document dรฉcrit l'approche recommandรฉe quant ร l'implรฉmentation de la notion de limitation des options d'une liste vis-ร -vis de contraintes spรฉcifiques. Ces contraintes peuvent รชtre associรฉes ร une classification (exemple: "N'autoriser la saisie d'une option que si le produit courant est classรฉ dans la catรฉgorie laptop"), ร une liste (exemple: "N'autoriser la saisie de certaines options en fonction du code fournisseur") ou tout autre field associรฉ ร un item ("N'autoriser que certains types de palettes en fonction du poids d'un item").
TIP
To limit options on a list SET_SELECTABLE_OPTIONS and at the same time apply a default value SET_TEXT, set first the default value rule (priority 1) and then the reduced list of options (priority 2). Otherwise there will be a warning on the grid. More details here #4616
Exemples d'utilisation โ
L'outil formula permet de dรฉfinir une liste de rรจgles, dont on peut contrรดler leur exรฉcution en dรฉfinissant des conditions, et qui peuvent agir de diffรฉrentes maniรจres sur une cellule donnรฉe (on appelle ici cellule, la valeur d'un field sur un item donnรฉ).
Nous nous intรฉresserons dans ce document ร l'action SET_SELECTABLE_OPTIONS permettant de dรฉfinir les options cohรฉrentes pour une liste d'options, dans un contexte donnรฉ.
Limiter une liste d'option vis-ร -vis d'une seconde liste d'option โ
Ci-dessous, nous dรฉtaillerons un cas issu d'un exemple prรฉsent au sein de la structure de donnรฉe du PIM de Fnac/Darty.
Besoin remontรฉ par les รฉquipes de Fnac/Darty
- Empรชcher la saisie de valeur incohรฉrente pour la liste d'option DEEE. En effet certaines options de cette liste ne sont cohรฉrentes que pour certains fournisseurs. Le nom du fournisseur est quant ร lui renseignรฉ dans une autre colonne dans notre structure de donnรฉes.
- Les rรจgles de cohรฉrence peuvent รฉvoluer dans le temps, il est donc nรฉcessaire de pouvoir retrouver les items pour lesquels l'option DEEE serait incohรฉrente.
Limiter la sรฉlection d'option d'un field en utilisant une formula โ
La formula prรฉsentรฉ ci-dessous permet de limiter depuis l'interface les options qu'un utilisateur pourra sรฉlectionner pour le field DEEE_SCALE
Pour le champ DEE ("DEEE_SCALE"), dans le cas oรน le code fournisseur ("SUPPLIER_CODE") sรฉlectionnรฉ est "Apple" ("0646") ou "Samsung" ("0647"), n'autoriser que les options "5240654", "5240655" et "5240656". Cependant, dans le cas oรน le code fournisseur sรฉlectionnรฉ est "Sony" ("0648"), n'autoriser que l'option "5240656".
<Formulas>
<Field key="DEEE_SCALE">
<Rule priority="1" >
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER_CODE" operator="IN">
<Value>0646</Value>
<Value>0647</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>5240654</Value>
<Value>5240655</Value>
<Value>5240656</Value>
</Action>
</Rule>
<Rule priority="2" >
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER_CODE" operator="IN">
<Value>0648</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>5240656</Value>
</Action>
</Rule>
</Identifier>
</Formulas>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
- C'est l'action
SET_SELECTABLE_OPTIONSqui permet de limiter les options sรฉlectionnables pour une liste donnรฉe.
Remonter un statut particulier sur un champ de formatage conditionnel dans le cas oรน l'option sรฉlectionnรฉe est invalide โ
La limitation des options disponibles pour une liste d'option donnรฉe peut รชtre complรฉtรฉe par l'ajout d'une contrainte au sein des rรจgles de formatage conditionnel pour faire remonter les items possรฉdant des valeurs "incohรฉrentes" (c'est-ร -dire des valeurs normalement non permises par l'action SET_SELECTABLE_OPTIONS). Ces options incohรฉrentes peuvent apparaitre dans plusieurs cas de figure:
- Mise ร jour d'une rule ou ajout d'une rule au sein d'une table possรฉdant dรฉjร des items. Dans ce cas une donnรฉe prรฉcรฉdemment autorisรฉe peut ne plus l'รชtre.
- Import d'une option non permise depuis
app.product-live.comvia Data Factory.
TIP
ร noter que mรชme si aucune rรจgle de conformitรฉ n'est prรฉcisรฉe, l'option 'incoherente' sera remontรฉe comme telle dans l'interface ร l'aide d'un pictogramme immรฉdiatement collรฉ ร la valeur dans la grille (comme c'est le cas pour une option qui serait archivรฉe).
<?xml version="1.0" encoding="UTF-8"?>
<Table key="PRODUCTS">
<Conditional-Formattings>
<Conditional-Formatting key="commonConformity" level="PRODUCT">
<Title>Conformitรฉ interne</Title>
<Default-Status key="VALID">
<Title>Valide</Title>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="INVALID">
<Title>Invalide</Title>
<Color>RED</Color>
<Priority>1</Priority>
<Rules>
<Common>
<Field key="DEEE_SCALE">
<Rule-Required />
<Rule-Must-Be-Selectable />
</Field>
</Common>
</Rules>
</Status>
</Statuses>
</Conditional-Formatting>
</Conditional-Formattings>
</Table>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Dans l'exemple ci-dessus, <Rule-Must-Be-Selectable /> fait rรฉfรฉrence ร l'action SET_SELECTABLE_OPTIONS dรฉfinie dans la formula dรฉcrite plus haut. Dans le cas ou une rule n'est pas correctement exรฉcutรฉ, l'action dรฉfinit l'option courante comme รฉtant 'incohรฉrente' et dรฉclenche dans le cas ci-dessus la rule <Rule-Must-Be-Selectable /> qui dรฉclenche le statut INVALID.
Exemples โ
Si l'on considรจre la formula suivante:
<Formulas>
<Field key="DEEE_SCALE">
<Rule priority="1" >
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER_CODE" operator="IN">
<Value>0646</Value>
<Value>0647</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>5240654</Value>
<Value>5240655</Value>
</Action>
</Rule>
<Rule priority="2" >
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER_CODE" operator="IN">
<Value>0648</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>5240656</Value>
</Action>
</Rule>
</Identifier>
</Formulas>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Ainsi que la rรจgle de formatage conditionnel suivante
<?xml version="1.0" encoding="UTF-8"?>
<Table key="PRODUCTS">
<Conditional-Formattings>
<Conditional-Formatting key="commonConformity" level="PRODUCT">
<Title>Conformitรฉ interne</Title>
<Default-Status key="VALID">
<Title>Valide</Title>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="INVALID">
<Title>Invalide</Title>
<Color>RED</Color>
<Priority>1</Priority>
<Rules>
<Common>
<Field key="DEEE_SCALE">
<Rule-Must-Be-Selectable />
</Field>
</Common>
</Rules>
</Status>
</Statuses>
</Conditional-Formatting>
</Conditional-Formattings>
</Table>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Premier exemple, l'item ne possรจde aucune valeur sur le field SUPPLIER_CODE โ
<Item partition="active">
<Identifier key="ref">A</Identifier>
</Item>2
3
- Dans ce cas, aucune
Rule(ou actionSET_SELECTABLE_OPTIONS) n'est venue limiter les options disponibles: toutes les valeurs pour le field DEEE_SCALE sont disponibles"- L'ensemble des valeurs pour le field DEEE_SCALE sont sรฉlectionnables depuis l'interface app.product-live.com
- Le statut remontรฉ pour le champ de formatage conditionnel
commonConformityestVALID - L'absence d'une valeur sur un field donnรฉ est considรฉrรฉe comme valide du point de vue de la rรจgle de conformitรฉ
Rule-Must-Be-Selectable
Deuxiรจme exemple, l'item possรจde une valeur valide sur le field DEEE_SCALE โ
<Item partition="active">
<Identifier key="ref">A</Identifier>
<Field key="SUPPLIER_CODE">0646</Field>
<Field key="DEEE_SCALE">5240654</Field>
</Item>2
3
4
5
- Dans ce cas l'option
5240654est permise pour le fournisseur0646 - ร l'รฉdition, l'utilisateur se verra offrir la possibilitรฉ de sรฉlectionner une des deux options permises,
5240654ou5240655 - Le statut remontรฉ pour le champ de formatage conditionnel
commonConformityestVALID
Troisiรจme exemple, l'item possรจde une valeur invalide sur le field DEEE_SCALE โ
<Item partition="active">
<Identifier key="ref">A</Identifier>
<Field key="SUPPLIER_CODE">0646</Field>
<Field key="DEEE_SCALE">00000000</Field>
</Item>2
3
4
5
- On suppose quand dans notre exemple
00000000est une option qui existe bien - Dans ce cas l'option
00000000n'est pas permise pour le fournisseur0646 - Dans app.product-live.com, on constate via une icรดne sur la cellule que la valeur sรฉlectionnรฉe est non cohรฉrente
- ร l'รฉdition, l'utilisateur se verra offrir la possibilitรฉ de sรฉlectionner une des deux options permises,
5240654ou5240655 - Le statut remontรฉ pour le champ de formatage conditionnel
commonConformityestINVALID
Limiter une liste d'option vis-ร -vis d'une classification โ
Ci-dessous nous dรฉtaillerons un cas issu d'un exemple prรฉsent au sein des structures de donnรฉes d'Adeo et Kingfisher.
Besoin remontรฉ par les รฉquipes d'Adeo
- Empรชcher la saisie d'une valeur incohรฉrente pour la liste d'option
Taille. Certaines de ces options ne sont cohรฉrentes que pour untypede produit donnรฉ.
- Exemple Une chaussure ne peut accepter que les valeurs 38, 39, 40, (...), alors qu'un t-shirt accepte les valeurs S, M, L, (...)
Limiter la sรฉlection d'options un field en utilisant une formula โ
Comme dans l'exemple prรฉcรฉdent, la formula prรฉsentรฉe ci-dessous permet de limiter depuis l'interface les options qu'un utilisateur pourra sรฉlectionner pour le field SIZE
Pour le field
SIZE, dans le cas ou la catรฉgorieshoesest sรฉlectionnรฉe, n'autoriser que les options38,39,40,41et42. Cependant, dans le cas oรน la catรฉgorie sรฉlectionnรฉe estt-shirt, n'autoriser que les optionsS,M,LetXL.
<Formulas>
<Field key="SIZE">
<Rule priority="1" >
<Conditions>
<Condition-Group>
<Condition source="TYPOLOGY" operator="IN">
<Value>shoes</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>38</Value>
<Value>39</Value>
<Value>40</Value>
<Value>41</Value>
<Value>42</Value>
</Action>
</Rule>
<Rule priority="2" >
<Conditions>
<Condition-Group>
<Condition source="TYPOLOGY" operator="IN">
<Value>t-shirt</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>S</Value>
<Value>M</Value>
<Value>L</Value>
<Value>XL</Value>
</Action>
</Rule>
</Identifier>
</Formulas>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Remonter un statut particulier sur un champ de formatage conditionnel dans le cas oรน l'option sรฉlectionnรฉe est invalide โ
L'exemple ci-dessous est en tout point similaire ร l'exemple prรฉsentรฉ plus haut.
<?xml version="1.0" encoding="UTF-8"?>
<Table key="PRODUCTS">
<Conditional-Formattings>
<Conditional-Formatting key="commonConformity" level="PRODUCT">
<Title>Conformitรฉ interne</Title>
<Default-Status key="VALID">
<Title>Valide</Title>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="INVALID">
<Title>Invalide</Title>
<Color>RED</Color>
<Priority>1</Priority>
<Rules>
<Common>
<Field key="SIZE">
<Rule-Must-Be-Selectable />
</Field>
</Common>
</Rules>
</Status>
</Statuses>
</Conditional-Formatting>
</Conditional-Formattings>
</Table>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
L'impact des outils utilisรฉs dans l'import et l'export de la table โ
- Les formules et l'action
SET_SELECTABLE_OPTIONS:- Plus de dรฉtails sur les formulas et l'action
SET_SELECTABLE_OPTIONSau sein de la dรฉfinition de la table dans la documentation de la tรขche d'import de table - Cette action est รฉgalement visible dans l'export de la table
- Plus de dรฉtails sur les formulas et l'action
- Les champs de formatage conditionnel:
- La rule
Rule-Must-Be-Selectableau sein de l'import de table sur les fields de type liste d'options (simple et multiples) - Cette rule est รฉgalement visible dans l'export de la table
- La rule
L'impact des outils utilisรฉs dans l'import des items โ
- Lors de l'import items, les
Actionde typeSET_SELECTABLE_OPTIONSsont exรฉcutรฉes