5.1 KiB
Revue - Code
Source : Confluence EasyWMS France
Dernière mise à jour : 08/01/2026 (v10)
1 - Check-liste des éléments
Lien MSS des check-listes à valider pour la revue de code : Revue Mecalux Espagne
1.1 OutboundLines
⚠️ Attention sur le point suivant concernant les requêtes sur la writing :
Lorsque vous faites une requête pour récupérer les lignes d'un ordre de sortie, il est très important d'utiliser la propriété OutboundLines et non OutboundOrderLines, sinon lorsque vous avez une ligne annulée dans la commande, vous aurez cette erreur dans les logs :
Le nombre de ligne d'ordre d'expédition ne peut pas être négatif
1.2 Kit sans assemblage ? OutboundOrderOutboundOrderLineDetails
Si le projet utilise les kits sans assemblage, faire attention à l'utilisation entre OutboundOrderOutboundOrderLineDetails et OutboundLines :
- Dans
OutboundOrderOutboundOrderLineDetails→ vous trouverez tous les composants - Dans
OutboundLines→ vous trouverez uniquement le kit lui-même
1.3 OutboundLine.ProductConversion
⚠️ Attention sur le point suivant concernant les requêtes sur la writing :
Dans les lignes des ordres de sortie, l'attribut ProductConversion peut être null.
(Dans le cas où la commande demande un support spécifique, on aura le code support renseigné mais pas l'article, et donc pas sa conversion.)
2 - Identification des customs
2.1 - Bloc de code / requête
Ajouter des commentaires permettant de délimiter le code modifié lorsqu'il se retrouve mélangé avec du code standard :
potentiel code standard
//StartCustom
Code custom
//EndCustom
potentiel code standard
2.2 - Identification des éléments custom
Chaque nouvel élément ou élément modifié doit être identifié par le préfixe CST_, en se posant les questions suivantes :
| Question | Règle |
|---|---|
| Est-ce que l'élément est visible par le client ? | Pas d'ajout de préfixe (ex : les paramètres SmartUI ne prennent pas le préfixe) |
| Est-ce que j'ai la possibilité de modifier le nom de l'élément ? | Un workflow non en mode "full edition" ne permet pas de modifier le nom des éléments |
| Est-ce qu'il s'agit de l'élément de plus "haut niveau" ? | Tous les éléments d'un workflow custom ne prendront pas le préfixe — seul le workflow sera identifié. Inversement, dans un workflow standard, tous les éléments ajoutés/modifiés prennent le préfixe |
⚠️ N'oubliez pas !
- Un dialogue est modifié même si on ne fait que changer l'implémentation de l'activité
- Les transitions doivent aussi être identifiées
⚠️ Lorsqu'un workflow passe de "partial overriden" à "overriden" avec le mode "full edition", on perd l'identification de couleur des activités/transitions modifiées. Il faut alors préfixer toutes les activités modifiées par
CST_(ouvrir le workflow dans sa version précédente en parallèle pour ne rien oublier).
3 - Nommage des éléments
Nomenclature générale de référence : Nomenclature Espagne
Règles complémentaires :
- Les ressources des viewfields d'une vue prennent 2 préfixes suivis du code du viewfield
- Ex : viewfield
OutboundOrderStatusde la vueOutboundOrderVList→ViewField_OutboundOrderVList_OutboundOrderStatus
- Ex : viewfield
- Les paramètres SmartUI sont plus parlants s'ils sont préfixés du process qu'ils impactent, en majuscules
- Ex :
EXPEDITION_ALLOWED_CONTAINER
- Ex :
- Les attributs d'un workflow commencent par une minuscule, les paramètres formels par une majuscule
- Toutefois, ne pas oublier le préfixe
CST_devant les attributs dans un workflow standard
- Toutefois, ne pas oublier le préfixe
- Les paramètres d'un dialogue commencent par une majuscule
- Les paramètres d'une requête commencent par une minuscule
4 - Utilisation du "code en dur"
- Dans les workflows, éviter au maximum le code en dur
- Notamment, les actions "Enter" et "Escape" après un dialogue devraient être testées avec les variables :
ProcessContext.EnterActionProcessContext.EscapeAction
5 - Null reference
Attention à l'utilisation de code pouvant induire des NullReferenceException, particulièrement la méthode FirstOrDefault() qui doit être sécurisée :
// ❌ Dangereux - peut lever une exception si aucun ordre de sortie n'existe
Context.OutboundOrders.FirstOrDefault(s => s.Code == outboundOrderCode).OutboundLines
// ✅ Sécurisé
var order = Context.OutboundOrders.FirstOrDefault(s => s.Code == outboundOrderCode);
if (order != null) { ... }
Documentation Espagne sur la gestion des null reference : Lien MSS