Recherche…


Introduction

Avec les classes dérivées de CustomizationPlug, vous pouvez utiliser les fonctionnalités de la plateforme de personnalisation Acumatica et exécuter un code personnalisé après la publication du projet de personnalisation. Dans cette rubrique, vous apprendrez comment les plug-ins de personnalisation peuvent être utilisés pour apporter des modifications à plusieurs sociétés.

Plus d'informations sur les plug-ins de personnalisation sont disponibles dans Acumatica Customization Guide

Implémentation d'un plug-in de personnalisation pour mettre à jour plusieurs entreprises

Pour créer un plugin de personnalisation, il vous suffit de créer une classe dérivée de CustomizationPlug et de la regrouper dans la personnalisation. Pendant que le système publie un projet de personnalisation, il exécute les méthodes OnPublished et UpdateDatabase implémentées dans votre plug-in de personnalisation uniquement dans l'étendue actuelle de la société .

Cela dit, le plug-in de personnalisation n'apportera jamais de modifications à une société autre que la société actuelle, sauf s'il utilise PXLoginScope pour se connecter à toutes les sociétés, l'une après l'autre, disponible pour la personnalisation de publication de l'utilisateur actuel.

Vous trouverez ci-dessous un exemple de plug-in de personnalisation créant le rôle d'utilisateur MyVerticalSolution dans toutes les sociétés disponibles pour l'utilisateur actuel:

public class MyVerticalSolutionInit : CustomizationPlugin
{
    public override void UpdateDatabase()
    {
        var companies = PXAccess.GetCompanies();

        foreach (var company in companies)
        {
            using (var loginScope = new PXLoginScope(string.Format("{0}@{1}",
                PXAccess.GetUserLogin(), company)))
            {
                string roleName = "MyVerticalSolution";
                RoleAccess graph = PXGraph.CreateInstance<RoleAccess>();

                Roles existingRole = graph.Roles.Search<Roles.rolename>(roleName);
                if (existingRole != null)
                {
                    WriteLog(string.Format("{0} already exists in company '{1}' - skipped", roleName, company));
                    continue;
                }

                var wmsRole = new Roles();
                wmsRole.Rolename = roleName;
                wmsRole.Descr = "User Role for MyVerticalSolution";

                graph.Roles.Insert(wmsRole);
                graph.Save.Press();

                WriteLog(string.Format("{0} was succesfully created in company '{1}'", roleName, company));
            }
        }
    }
}

Pour obtenir une liste des sociétés disponibles pour l'utilisateur actuel, il vous suffit d'appeler la PXAccess.GetCompanies() statique PXAccess.GetCompanies() . Ensuite, PXLoginScope est utilisé pour se connecter à chacune des sociétés disponibles pour créer le rôle d'utilisateur MyVerticalSolution . L'instance de notification du RoleAccess BLC a été réinitialisée pour chaque entreprise - il s'agit d'une étape absolument obligatoire pour apporter des modifications à plusieurs sociétés à la fois.

Supposons qu'il existe 2 sociétés sur votre instance Acumatica: CompanyA et CompanyB. L'utilisateur admin que vous allez utiliser pour publier la personnalisation a accès aux deux sociétés et le rôle MyVerticalSolution , créé par le plug-in de personnalisation, existe déjà dans CompanyA: entrer la description de l'image ici

Après avoir publié la personnalisation (connectée à CompanyA ou CompanyB) avec le plug-in de personnalisation développé précédemment pour créer le rôle MyVerticalSolution dans toutes les sociétés disponibles pour l'utilisateur actuel, notez que le rôle MyVerticalSolution a été ignoré pour CompanyA et créé avec succès pour CompanyB.

entrer la description de l'image ici

La prochaine fois que vous publiez cette personnalisation, le rôle MyVerticalSolution sera ignoré pour les deux sociétés de votre application Acumatica:

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow