Sök…


Introduktion

Med klasser härrörande från CustomizationPlug kan du använda kapaciteten i Acumatica Customization Platform och köra anpassad kod efter att anpassningsprojektet har publicerats. I det här ämnet kommer du att lära dig hur anpassningstillägg kan användas för att göra ändringar i flera företag.

Mer information om anpassningsprogram finns i Acumatica Customization Guide

Implementering av en anpassning plug-in för att uppdatera flera företag

För att skapa ett anpassningsplugin skapar du helt enkelt en klass härrörande från CustomizationPlug och paketerar den till anpassning. Medan systemet publicerar anpassningsprojekt, kommer det att utföra OnPublished- och UpdateDatabase- metoderna som implementerats i din anpassningsplugin endast inom det nuvarande företagets omfattning .

Med det sagt kommer anpassningsplugin aldrig att ändra något annat än det nuvarande företaget, såvida det inte använder PXLoginScope för att logga in på alla företag, en efter en, tillgängliga för den aktuella användarpubliceringsanpassningen.

Nedan är ett exempel på anpassningsplugin som skapar MyVerticalSolution användarroll i alla företag tillgängliga för den aktuella användaren:

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

För att få en lista över företag som är tillgängliga för den aktuella användaren, PXAccess.GetCompanies() du bara statisk PXAccess.GetCompanies() -metod. Sedan används PXLoginScope för att logga in i alla tillgängliga företag för att skapa MyVerticalSolution- användarroll. Lägg märke till att RoleAccess BLC återinitialiserades för varje företag - detta är ett absolut obligatoriskt steg för att göra ändringar i flera företag åt gången.

Låt oss anta att det finns två företag på din Acumatica-instans: CompanyA och CompanyB. Adminanvändaren , som du kommer att använda för att publicera anpassning, har åtkomst till båda företagen och MyVerticalSolution- roll, skapad av anpassningsplugin, finns redan i CompanyA: ange bildbeskrivning här

Efter att du publicerat anpassning (medan du är inloggad i CompanyA eller CompanyB) med tidigare utvecklad anpassningsplugin för att skapa MyVerticalSolution- roll i alla företag som är tillgängliga för den aktuella användaren, lägg märke till MyVerticalSolution- rollen som hoppades över CompanyA och skapats för CompanyB.

ange bildbeskrivning här

Nästa gång du publicerar den här anpassningen hoppas rollen MyVerticalSolution över för båda företagen i din Acumatica-applikation:

ange bildbeskrivning här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow