MercatorPenguin 2.0 permet la modification des actions du CRM. L'accès à une action se fait toujours au départ d'un bundle de type "Liste", via un bouton ActionEditButton, dont les propriétés suivantes doivent être spécifiées :
- ActionId = id de l'action dans la table ACTIONS. Si ce paramètre est vide, alors une nouvelle action sera créée.
- ActionModule = nom court du signalétique (CLI, FOU, STOCK, TACT, GEN, PROJ, XLEAD, YPREST, ...) associé à cette action. Ce paramètre peut être vide si l'action n'est associée à aucun signalétique.
- ActionIdSig = identifiant de la fiche de signalétique associée à cette action. Il peut être à blanc, en même temps que le paramètre précédent.
- ActionTempl = id du modèle d'action
<m:ActionEditButton Text="Modifier" Font="Small"
ActionId="@ID" ActionModule="CLI" ActionIdSig="@ID_SIG" ActionTempl=".A-AF1E247" />
Le layout d'une fenêtre de modification dans MercatorPenguin doit être créé en XAML, au départ de la fiche de l'action correspondante dans "Outils / Paramètres / Modèles Actions" de Mercator et en utilisant cet élément de ce bouton déroulant :
Il convient de faire une version distincte par langue utilisée. (Seules les langues réellement utilisées doivent être complétées). Ce paramétrage XAML utilise essentiellement les EditControls.
Le fichier zip ci-joint contient quelques exemples de paramétrages.
En ce qui concerne les modifications des actions, MercatorPenguinServer est sollicité à deux reprises :
- Pour la lecture des données
- Pour l'enregistrement des données créées / modifiées.
MercatorPenguinServer étant par définition stateless, il n'y a aucune relation entre ces deux étapes. Concrètement, cela veut dire qu'une action créée ou ouverte en modification par MercatorPenguinServer n'est pas maintenue ouverte jusqu'à sa sauvegarde.
A chaque étape, MercatorUi.Main est utilisé et l'utilisateur actif correctement initialisé. Dès lors, ces propriétés statiques contiennent toujours la valeur correspondant à l'utilisateur de MercatorPenguin :
- MercatorUi.Globals.Langue
- MercatorUi.Globals.UserId
- MercatorUi.Globals.CurrentUser
- MercatorUi.Globals.CurrentUserRecord
- ...
Les droits d'accès sont aussi vérifiés.
A chaque étape, les différents codes repris dans un customizer associé à ce modèle d'action seront exécutés. Il existe cependant une exception pour des codes liés à des événements levés par l'ActionForm. En effet, cette dernière n'est jamais instanciée par MercatorPenguinServer.
Dans tout code C#, utilisez ce test pour savoir si le customizer fonctionne sous MercatorPenguinServer :
if (MercatorUi.Globals.IsMercatorPenguinServer)
{
...
}
Il n'y a pas de mécanisme qui avertirait que l'action en cours de modification aurait pu être modifiée par un autre utilisateur entre le moment de la lecture et celui de l'enregistrement des données. Toutefois, lors de cet enregistrement, le record complet correspondant à cette action est à nouveau lu et seules les valeurs des champs repris dans le paramétrage XAML sont portées en modification de ce record. Si, lors de la sauvegarde, il est constaté que l'action est en cours de modification par un autre utilisateur, alors un message indiquera que cette sauvegarde n'est temporairement pas possible.
A télécharger :
0000002822.zip (15 Kb - 30/05/2018)