Accueil Blog (en) Acumatica testé, approuvé par le client - Mise en œuvre du processus d’approbation sur des écrans personnalisés

Acumatica testé, approuvé par le client - Mise en œuvre du processus d’approbation sur des écrans personnalisés

Joshua van Hoesen | Le 24 novembre 2022

Acumatica testé, approuvé par le client - Mise en œuvre du processus d’approbation sur des écrans personnalisés

Introduction

Au fur et à mesure que les entreprises grandissent et se développent, elles peuvent trouver le besoin de protéger les processus d’affaires au sein de leur système.  Heureusement, Acumatica est livré avec une suite d’approbation complète native qui peut être configurée pour répondre aux besoins spécifiques d’une entreprise.

Pour les développeurs, la question qui se pose ensuite est de savoir comment protéger les processus personnalisés qui sont développés à l’aide du cadre Acumatica et qui veulent la même fonctionnalité transparente du système intégré d’Acumatica.

Cet article vise à vous fournir un chemin pour accomplir cette tâche.

Dans ce cas, nous examinerons la page de demande de temps développée par ASI LLC qui permet aux employés de demander des périodes de congé et de soumettre des demandes d’approbation. Les demandes de temps seront ensuite examinées selon le traitement d’approbation intégré d’Acumatica et réfléchiront sur la carte de temps des employés en fonction de la configuration.

Page d’installation

Comme c’est la pratique courante lors de l’extension ou de la création de nouvelles fonctionnalités dans le cadre Acumatica, nous allons créer notre propre page de préférences pour gérer les configurations de notre fonction de demande de temps

La page affichée dans l’image ci-dessous a une grille répertoriant les entités pour l’approbation et une case à cocher déterminant si les approbations sont activées pour les entités répertoriées dans la grille. Un champ de séquence de numérotation est également défini qui sera ensuite utilisé par la page de saisie de données de demande de temps personnalisée. 

Acumatica testé, approuvé par le client - Mise en œuvre du processus d’approbation sur des écrans personnalisés

Classes d’accès aux données

AATimeRequestSetup

Cette classe est en cours d’implémentation en tant que data-access-class d’installation pour la fonctionnalité de demande de temps ; elle contient un champ unique utilisé par le processus d’approbation TimeRequestApproval

GIST : https://gist.github.com/jvanhoesen/db449c52ae593efd0fc22b9b2939fd88

AATimeRequestApproval

La structure de cette DAC imite la table Acumaticas EPSetupApproval dans la base de données et doit utiliser à la fois IBqlTable et l’interface IAssignedMap .

GIST : https://gist.github.com/jvanhoesen/72198b26eabe422335f1b31e2e617902

Graphique

Le graphique de la page de configuration est simple et direct, référençant deux classes d’accès aux données et utilisant un seul événement AATimeRequestSetup_FieldUpdated qui, lorsqu’il est déclenché, mettra à jour tous les enregistrements correspondants dans la vue AATimeRequestApproval.

GIST: https://gist.github.com/jvanhoesen/19bb75eab4aca39c1228a86e16c5261a

Page de saisie de données

La création d’une page de saisie des données est rendue plus complexe avec la mise en œuvre des processus d’approbation. L’interface utilisateur terminée pour la fonctionnalité de demande de temps peut être vue dans l’image ci-dessous. Cette page permet la création d’une demande de temps par un employé avec une ventilation détaillée de l’heure de la demande. Ce document peut maintenant être mis en attente et soumis à l’approbation.

Processus d’approbation-1

GIST : https://gist.github.com/jvanhoesen/793901fada92c37aca0ec16d80c73f

Ce sera la norme Acumatica approuver et rejeter les actions sous la liste déroulante Actions , que nous définirons plus loin dans l’article.

Classe d’accès aux données primaires

La principale classe d’accès aux données que nous définissons pour nos approbations qui permettent des pages de saisie de données personnalisées est AATimeRequest

GIST: https://gist.github.com/jvanhoesen/b4ef5c93dc67cb8ab1d90852d9715682

IAssign

La Data-Access-Class doit implémenter l’interface IAssign . Cela nécessitera d’inclure les champs OwnerID et WorkGroupID dans la déclaration de classe.

GIST : https://gist.github.com/jvanhoesen/825585aea3c9217199f81c9d12476ddf

État d’avancement

Vous devrez définir les valeurs d’état suivantes pour le champ d’état de votre DAC avec les affichages correspondants comme indiqué ci-dessous.

« H » – « En attente » 

« P » – « En attente d’approbation »

« A » – « Approuvé »

« R » – « Rejeté »

GIST : https://gist.github.com/jvanhoesen/58a2c6105789c632994d51a87fce3b24

Drapeaux

Nous devrons déclarer deux champs de bits supplémentaires sur notre Data-Access-Class pour savoir si l’enregistrement a été approuvé ou rejeté par l’utilisateur.  Ceux-ci nommeront Approuvé et Rejeté.

IsApprover

Il s’agit d’un champ sauvegardé non-DB qui est renseigné via des événements graphiques lors du chargement d’un enregistrement et détermine si l’utilisateur actuel est un approbateur valide pour l’entité.

Graphique

Le graphique de notre page de saisie de données est défini comme AATimeRequestEntry. Bienqu’il soit un peu plus complexe que notre page de configuration, sa logique est utilisée pour mettre à jour les statuts sur la classe d’accès aux données principale.  Cela fournit une logique d’approbation supplémentaire, encapsulée dans les classes d’aide Acumatica.

GIST : https://gist.github.com/jvanhoesen/7c438ef851ef1aac4bfa9af7c9cebf08

EPApprovalAutomation

La création du graphique pour une page de saisie de données personnalisée avec approbations est rendue moins complexe grâce aux classes d’aide développées par Acumatica qui consolident la logique en structures faciles à utiliser.

Nous allons mettre en œuvre l’aide EPApprovalAutomation avec une vue nom de déclaration d’approbation et les arguments suivants :

SourceAssign – DAC principal

Approuvé – Champ principal approuvé par le CMV

Rejeté – Champ rejeté de la DAC principale

Attente – Champ d’attente DAC principal

SetupApproval – DAC SetupApproval 

Mesures à prendre

Vous devrez créer deux actions supplémentaires comme défini ci-dessous :

Approuver – Met à jour l’état de l’entité sur « Approuvé » et marque l’indicateur « Approuvé » sur le DAC principal comme vrai.

Rejeter – Met à jour l’état de l’entité sur « Rejeté » et marque l’indicateur « Rejeté » sur le DAC principal comme vrai.

Evénements

Primary_DAC_RowSelecting – Déterminez si les approbations sont activées, si elles sont activées, vérifiez que l’utilisateur actuel est l’approbateur d’ensemble et remplit IsApprover en conséquence.

GIST : https://gist.github.com/jvanhoesen/8461bf6dd782b07f1f7f9713deddc49f

Primary_DAC_RowSelected - Active les boutons Approuver / Rejeter lorsqu’une entité passe à l’approbation en attente ainsi que la désactivation des champs d’en-tête, à l’exception de la case à cocher Conserver lorsque l’entité est en attente.

GIST: https://gist.github.com/jvanhoesen/a385ca54d3f87a4694728f6c509c9a27

Primary_DAC_FieldUpdated – Définit l’entité en attente d’approbation lorsqu’elle est mise en attente ou réinitialise les autres champs d’état lorsqu’un document est remis en attente.

GIST: https://gist.github.com/jvanhoesen/dcf6fe87eb6ae25a214a2657066301a6

EPApproval_RowInserting – Utilisé pour définir des renseignements supplémentaires dans le dossier d’approbation de l’approbateur.

GIST: https://gist.github.com/jvanhoesen/030ee7529c1bd8aa45da04166cfc059a

Ces informations supplémentaires peuvent également être renseignées en ajoutant des événements CacheAttached à la place de RowInserting comme vu ci-dessous.

GIST: https://gist.github.com/jvanhoesen/14e9fdb4738f956f2b414d54ef27cc6b

Modification d’Acumatica

Extension de graphique

Une extension de graphique devra être créée à partir du graphique de maintenance de la carte d’approbation Acumatica EPApprovalMapMaint pour permettre à la page de saisie de données personnalisée de s’afficher sur la liste des types d’entités, implémentée avec l’exemple de page AA306000 ci-dessous.

GIST: https://gist.github.com/jvanhoesen/b3f688911bfd0375ed1dd8bd8b147884

Une fois l’extension écrite et la page inscrite dans le sitemap des instances, l’entité personnalisée devient désormais disponible dans la liste déroulante Type d’entité , comme vous le voir ci-dessous.

Processus d’approbation-1

Configuration

Une fois toutes les étapes ci-dessus terminées, vous pourrez définir une carte d’approbation pour votre entité personnalisée et utiliser le processus d’approbation natif du framework Acumatica.

Processus d’approbation-1

Conclusion

Bien que l’utilisation de fonctionnalités avancées d’Acumatica dans les pages personnalisées puisse parfois être intimidante, j’ai essayé de montrer à quel point cela peut être simple en suivant ces étapes simples:

  1. Créez une page d’installation qui configure si les approbations sont actives pour l’entité personnalisée.
  2. Créez une page de saisie de données qui utilise et répond aux workflows d’approbation.
  3. Créez une extension de la page de mappage d’approbation Acumatica pour autoriser les entités personnalisées définies.

Avec la méthodologie que j’ai décrite pour que vous puissiez la mettre en œuvre, vous serez également en mesure d’utiliser facilement le processus d’approbation intégré d’Acumatica pour les pages de saisie de données personnalisées.  Cela améliorera considérablement la capacité de protection et d’audit des données système spécifiques aux clients importants - un must dans tout système ERP (Enterprise Resource Planning) moderne.

Bon codage!

Auteur du blog

Ingénieur logiciel en chef chez Accounting System Integrators. Il dirige l’équipe de développement, qui a construit NonProfitPlus - un logiciel de gestion d’entreprise conçu avec des organisations à but non lucratif à l’esprit et alimenté par Acumatica ERP pour fournir une suite d’applications entièrement intégrées.

Recevez des mises à jour de blog dans votre boîte de réception.