Introduction
Il y a quelques années, un processus d'approbation consistait à faire circuler un formulaire papier dans l'usine afin d'obtenir l'approbation nécessaire à l'exécution des processus opérationnels. En règle générale, ces formulaires étaient envoyés dans des enveloppes de courrier inter-entreprises, mais les cas urgents étaient transmis manuellement tout au long du processus. Dans un cas, un client convoquait toutes les parties prenantes d'un processus pour une réunion hebdomadaire afin d'examiner de nombreuses demandes et d'approuver ou de rejeter chacune d'entre elles en tant que comité de révision. Comme vous pouvez l'imaginer, ces processus d'approbation sur papier et ces réunions hebdomadaires ralentissaient considérablement la prise de décision et l'approvisionnement en matériel.
Avancez rapidement de quelques années (ou décennies) jusqu'à Acumatica ERP. Grâce à un moteur d'approbation robuste, le papier a été remplacé par des approbations électroniques rationalisées avec notifications, approbation via un navigateur ou une application mobile, et prise de décision à la vitesse de l'entreprise. Le moteur d'approbation peut être exploité dans des écrans personnalisés et diverses conditions peuvent être définies pour automatiser certaines approbations et certains rejets en fonction des exigences de l'entreprise.
Si l'approbation électronique est loin d'être une nouveauté à l'ère de l'informatique numérique, les processus d'entreprise ne sont pas toujours aussi tranchés qu'on pourrait le croire en matière d'approbation. Certains processus opérationnels peuvent nécessiter un examen périodique et seules les recommandations de changement doivent être envoyées pour approbation. La difficulté consiste à faire la différence entre un document "révisé" et un document "approuvé" ou "rejeté".
Cas d'entreprise
SETECH Supply Chain Solutions gère les matériaux indirects pour ses clients. Au cœur de leurs services, il y a Plan for Every Part (Planifier pour chaque pièce). Ce processus d'entreprise fondamental exige que chaque élément d'inventaire soit revu périodiquement pour s'assurer que la disponibilité des matériaux correspond aux besoins de leurs clients. L'exigence métier stipule qu'un plan qui a été révisé doit avoir le statut Révisé, mais que les plans soumis pour approbation doivent suivre le processus d'approbation normal et avoir le statut Approuvé ou Rejeté. Étant donné que le processus d'approbation standard, lorsqu'il est activé, aboutit à l'état Approuvé ou Rejeté, une personnalisation était nécessaire pour permettre de contourner conditionnellement le processus d'approbation et de définir le statut dans un troisième état appelé Révisé. Le processus d'approbation standard recherche une carte d'approbation et crée automatiquement un enregistrement dans l'onglet Détails de l'approbation, de sorte que même un plan marqué comme Révisé aurait un enregistrement d'approbation orphelin, ce qui était trompeur. Il est également important de noter que la version utilisée est Acumatica ERP 2021 R1.
Bien que le nouveau moteur de flux de travail modifie facilement le statut en Révision, la prévention de l'enregistrement d'approbation orphelin nécessite un codage créatif.
Solution
Tout d'abord, les champs du CED doivent être définis pour soutenir le processus d'approbation. Remarquez les champs standard " en attente", " approuvé" et " rejeté ". Remarquez maintenant l'ajout d'un champ supplémentaire appelé RequestApproval qui sera défini en fonction de la valeur de l'enregistrement Setup (à partir d'un écran Preferences ) activant ou désactivant les approbations. Ce champ sera utilisé par le flux de travail de l'écran personnalisé pour déterminer de manière programmatique si les conditions de l'enregistrement requièrent la soumission d'une approbation.
Champs DAC
GIST: https://gist.github.com/BrianMRO/4063f8214a301c36b1f3516dd96f0e63
Ensuite, les vues doivent être définies. La vue principale de MyDAC s'appelle Document, et la vue d'approbation de configuration de MySetupApproval s'appelle SetupApproval. Il s'agit de la table qui contient les cartes d'approbation définies dans la configuration d'approbation de l'écran. Comme cette table contient les cartes d'approbation à utiliser par le moteur d'approbation, un constructeur est utilisé pour renvoyer null si le plan(MyDAC) ne nécessite pas d'approbation selon le champ RequestApproval. Ce constructeur est la "magie" qui empêche un enregistrement orphelin de remplir l'onglet Détails de l'approbation.
Configurer les vues
GIST : https://gist.github.com/BrianMRO/d1cc58b6deff39ff48d4c08b8f645b90
Ensuite, le système d'approbation doit être ajouté. Le moteur d'approbation est spécifié par l'inclusion de EPApprovalAutomation, qui fait référence aux champs " hold", " approved" et " rejected " de MyDAC ainsi qu'à la table d'approbation MySetupApproval. Par commodité, le code CacheAttached pour EPApproval a été inclus pour rappeler que ces champs doivent être spécifiés pour que les valeurs de MyDAC soient intégrées dans l'écran d'approbation standard.
Ajouter des configurations d'approbation standard
GIST : https://gist.github.com/BrianMRO/0d1a2baa173dad741300246cb519cae6
Enfin, l'approbation facultative nécessite le paramétrage de MyDAC.RequestApproval conformément à la logique métier lorsque l'action RemoveHold est exécutée (RemoveHold est défini dans les nouveaux workflows de l'interface utilisateur pour remplacer le décochage de la case à cocher hold dans les anciennes versions d'Acumatica). Dans ce cas de figure, la modification de certaines valeurs nécessite une approbation, mais d'autres valeurs peuvent être mises à jour dans le cadre d'une simple révision.
Rendre l'approbation facultative
GIST: https://gist.github.com/BrianMRO/1fb4359ee10b740c3d25d0b05e55f288
Notez l'étape très importante de l'actualisation de la vue SetupApproval. Cette actualisation permet de compléter ou de vider la liste des cartes d'approbation. C'est l'absence de carte d'approbation à sélectionner qui empêche l'enregistrement orphelin dans l'onglet Détails de l'approbation.
Pour compléter la configuration, le flux de travail a été modifié dans l'interface utilisateur du projet de personnalisation pour passer de la mise en attente à la transition en fonction de la définition du champ RequestApproval. Les états et les transitions utilisés pour contrôler le flux de l'enregistrement de planification sont décrits ci-dessous. Lors de la suppression de la mise en attente, un plan marqué RequestApproval = false passera à Reviewed tandis qu'un plan avec RequestApproval = true passera à Pending Approval.
Résumé
De l'augmentation des coûts de la main-d'œuvre à l'inflation supérieure à la moyenne pour pratiquement tous les achats, le coût des affaires semble dépasser le point de rupture pour de nombreuses entreprises. Bien que la finance ait toujours mis l'accent sur le contrôle des coûts, la gestion des coûts à travers chaque processus d'entreprise n'a jamais été aussi critique. Heureusement, Acumatica fournit un workflow d'approbation robuste capable d'injecter des exigences d'approbation soucieuses des coûts et adaptées à chaque entreprise, allant de chaque achat à seulement ceux qui atteignent un seuil spécifié. Avec un peu de personnalisation créative, ce cadre robuste peut également être appliqué à d'autres processus d'entreprise. Dans cet article, j'ai montré comment vous pouvez utiliser une simple personnalisation pour gérer un processus métier central autour de la disponibilité des stocks qui exploite un flux d'approbation complet inclus dans le client pour les changements ou un chemin optionnel de révision interne lorsqu'aucun changement n'est recommandé.
J'espère que cela vous a été utile - Bon codage !