Introduction
Note de la rédaction : Les petites choses que l'on apprend tout au long de sa vie sont d'une grande valeur. C'est particulièrement vrai dans de nombreuses disciplines, où les compétences s'affinent au fil du temps. Il en va de même dans le domaine de l'ingénierie et du développement - des petites choses utiles qui sont rarement documentées. C'est dans cet esprit que nous avons pensé proposer de petits billets de notre communauté de développeurs MVP d'Acumatica qui, selon nous, pourraient être utiles aux développeurs d'Acumatica. Attendez-vous à un certain nombre de ces articles dans les mois à venir.
Voici le deuxième volet de notre série Trucs et astuces pour les développeurs de Gabriel Michaud, un ancien employé d'Acumatica qui a dirigé notre laboratoire de Montréal et qui a maintenant sa propre entreprise, Velixo, et l'un de nos Acumatica Developer MVPs.
Lors de l'introduction d'Acumatica 2018 R2, une nouvelle fonctionnalité a été ajoutée qui vous permet de définir des notes contextuelles sur les entités clés. Par exemple, un responsable des achats qui voit que le contrat d'un fournisseur doit être renouvelé peut mettre une note sur la fiche du fournisseur. Cette note apparaîtra lorsqu'un utilisateur sera sur le point d'effectuer un achat auprès de ce fournisseur.
Voici une courte démonstration enregistrée de la note contextuelle : https://recordit.co/GC6l7WAuAk
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 les données de base . L'un de nos clients nous a demandé de personnaliser leurs notes pour qu'elles s'affichent de manière dynamique. Dans ce scénario particulier, il souhaitait informer ses employés chargés de la saisie des commandes qu'une commande existante pour le même produit et le même client existait déjà dans le système et vérifier s'il y avait des commandes en souffrance de la part du fabricant.
Comme il n'y a actuellement aucune documentation pour faire cela, j'ai dû utiliser mon décompilateur préféré, dnSpy pour examiner l'implémentation des notes popup dans PX.Data.dll. Dans Acumatica, les notes popup sont définies lors de l'événement FieldVerifying par le PXSelectorAttribute. Si une note popup est définie pour l'entité configurée, le système appelle PopupNoteManager.RegisterText comme suit en utilisant dnSpy:
Vous pouvez appeler la même fonction dans votre propre code pour afficher des messages contextuels. Pour les besoins de ma personnalisation spécifique, j'ai étendu le graphique d' entrée de commande client et j'ai ajouté un gestionnaire d'événements pour le champ SOLine Inventory ID.
Voici une vue du code intégré de GibHub : https://gist.github.com/gmichaud/17e346cdf3062de233f52c9976d0a03e
Après avoir publié la personnalisation, le système recherchera les commandes existantes lorsque vous ajouterez des articles en stock à une commande. Si une commande est trouvée, le message de notre client apparaît comme suit :
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'à ce jour, il n'est pas possible d'enregistrer plusieurs notes popup au cours d'un même callback. Si PopupManager.RegisterText est appelé plusieurs fois, la fenêtre popup qui apparaîtra indiquera simplement qu'il y a plusieurs notes, mais ne vous montrera pas les notes individuelles.
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 !