Exploiter le gestionnaire de notes contextuelles

Gabriel Michaud 17 janvier 2023
Conseils et astuces #2

Révision : janvier 2023

Introduction

Note de la rédaction :Les petites astuces glanées au fil de notre parcours de vie ont une grande valeur. C’est particulièrement vrai dans de nombreuses disciplines, où les compétences s’affinent au fil du temps, à force de pratiquer son métier. Il en va de même dans le domaine de l’ingénierie et du développement : il existe de petites astuces utiles qui sont rarement documentées. C’est dans cet esprit que nous avons décidé de proposer de courts articles rédigés par notre communauté de développeurs MVP chez Acumatica, qui, selon nous, pourraient être utiles aux développeurs Acumatica. Attendez-vous à découvrir plusieurs articles de ce type au cours des prochains mois.

Voici le deuxième volet de notre série « Conseils et astuces pour les développeurs » , rédigé par Gabriel Michaud, ancien collaborateur d'Acumatica qui dirigeait nos laboratoires de Montréal et qui possède désormais sa propre entreprise, Velixo. Il est également l'un de nos développeurs Acumatica MVP.

Lors du lancementd’Acumatica 2018 R2, une nouvelle fonctionnalité a été ajoutée, permettant de configurer des notes contextuelles sur des entités clés. Par exemple, un responsable des achats qui constate que le contrat d’un fournisseur arrive à échéance peut ajouter une note à la fiche de ce fournisseur. Cette note s’affichera alors qu’un utilisateur s’apprête à effectuer un achat auprès de ce fournisseur.

ss1-4-2-2

Voici une brève démonstration filmée dePopup Note  

Saviez-vous qu'il est possible d'exploiter le système de notes contextuelles dans vos propres personnalisations ? Les notes contextuelles sont des notes statiques que vous configurez dans lesdonnées de base. L'unde nos clients nous a demandé de personnaliser ses notes afin qu'elles s'affichent de manière dynamique. Dans ce cas précis, il souhaitait informer ses opérateurs chargés de la saisie des commandes qu'une commande existante pour le même produit et le même client figurait déjà dans le système, et leur demander de vérifier s'il y avait des commandes en attente de la part du fabricant.

Comme il n'existe actuellement aucune documentation à ce sujet, j'ai dû utiliser mon décompilateur préféré,dnSpy, pourexaminer l'implémentation des notes contextuelles dansPX.Data.dll.Dans Acumatica, les notes contextuelles sont définies lors del'événementFieldVerifyingpar l'attributPXSelectorAttribute. Si une note contextuelle est définie pour l'entité configurée, le système appelle la méthode `PopupNoteManager.RegisterText` commesuit, d'après ce que j'ai observé avecdnSpy:

ss2-4

Vous pouvez appeler cette même fonction dans votre propre code pour afficher des messages contextuels. Dans le cadre de ma personnalisation spécifique, j'ai étendu legraphique«Saisie des commandes client» et ajouté ungestionnaire d'événementspour lechamp «ID d'inventaire SOLine».

Vous trouverez ci-dessous une vue ducode intégréprovenant de GitHub : https://gist.github.com/gmichaud/17e346cdf3062de233f52c9976d0a03e

Une fois la personnalisation publiée, le système recherchera les commandes client existantes lorsque vous ajouterezdes articles en stockà unecommande. Si unecommandeest trouvée, notre message contextuel s'affiche comme suit :

ss3-4-2-2

Grâce à cette personnalisation, notre client est désormais en mesure d'éviter les commandes en double, ce qui arrivait fréquemment avec des articles en rupture de stock dont le délai de livraison était plus long que d'habitude.

Veuillez noter qu’à l’heure où nous écrivons ces lignes, il n’est pas possible d’enregistrer plusieurs notes contextuelles au cours d’un même rappel. Sila méthode `PopupManager.RegisterText`est appelée plusieurs fois, la fenêtre contextuelle qui s’affiche indiquera simplement qu’il existe plusieurs notes, mais ne vous montrera pas les notes individuellement.

J'espère que vous trouverez cela utile et que vous commencerez à ajouter vos propres Popups personnalisés à vos solutions pour vos clients - Happy Coding !

Auteur du blog

Catégories