Buscar..


Introducción

Con las clases derivadas de CustomizationPlug , puede utilizar las capacidades de la plataforma de personalización de Acumatica y ejecutar código personalizado una vez que se haya publicado el proyecto de personalización. En este tema, aprenderá cómo se pueden usar los complementos de personalización para realizar cambios en varias compañías.

Puede encontrar más información sobre los complementos de personalización en la Guía de personalización de Acumatica.

Implementación de un plug-in de personalización para actualizar múltiples empresas.

Para crear un complemento de personalización, simplemente crea una clase derivada de CustomizationPlug y la empaqueta en la personalización. Mientras el sistema está publicando el proyecto de personalización, ejecutará los métodos OnPublished y UpdateDatabase implementados en su complemento de personalización solo dentro del alcance de la empresa actual .

Dicho esto, el complemento de personalización nunca realizará cambios en ninguna otra empresa que no sea la actual, a menos que use PXLoginScope para iniciar sesión en todas las empresas, una después de la otra, disponible para la personalización de publicación del usuario actual.

A continuación se muestra un ejemplo de complemento de personalización que crea el rol de usuario MyVerticalSolution en todas las compañías disponibles para el usuario actual:

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));
            }
        }
    }
}

Para obtener una lista de compañías disponibles para el usuario actual, simplemente invoque el PXAccess.GetCompanies() estático PXAccess.GetCompanies() . Luego, PXLoginScope se usa para iniciar sesión en cada una de las compañías disponibles para crear el rol de usuario de MyVerticalSolution . Observe la instancia del RoleAccess BLC reinicializado para cada compañía: este es un paso absolutamente obligatorio para realizar cambios en varias compañías a la vez.

Supongamos que hay 2 empresas en su instancia de Acumatica: CompanyA y CompanyB. El usuario administrador , que va a utilizar para publicar la personalización, tiene acceso tanto a las empresas como al rol MyVerticalSolution , creado por el complemento de personalización, que ya existe en CompanyA: introduzca la descripción de la imagen aquí

Después de publicar la personalización (mientras estaba conectado a CompanyA o CompanyB) con el complemento de personalización desarrollado anteriormente para crear la función MyVerticalSolution en todas las compañías disponibles para el usuario actual, observe la función MyVerticalSolution omitida para CompanyA y creada con éxito para CompanyB.

introduzca la descripción de la imagen aquí

La próxima vez que publique esta personalización, el rol MyVerticalSolution se omitirá para ambas compañías en su aplicación Acumatica:

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow