Ricerca…


introduzione

Con le classi derivate da CustomizationPlug è possibile utilizzare le funzionalità della piattaforma di personalizzazione di Acumatica ed eseguire codice personalizzato dopo la pubblicazione del progetto di personalizzazione. In questo argomento imparerai come utilizzare i plug-in di personalizzazione per apportare modifiche a più società.

Ulteriori informazioni sui plug-in di personalizzazione sono disponibili nella Guida alla personalizzazione di Acumatica

Implementazione di un plug-in di personalizzazione per aggiornare più aziende

Per creare un plug-in di personalizzazione, devi semplicemente creare una classe derivata da CustomizationPlug e inserirla nella personalizzazione. Mentre il sistema pubblica un progetto di personalizzazione, eseguirà i metodi OnPublished e UpdateDatabase implementati nel proprio plugin di personalizzazione solo nell'ambito della società corrente .

Detto questo, il plug-in di personalizzazione non apporterà mai modifiche a una società diversa dalla società corrente, a meno che non utilizzi PXLoginScope per accedere a tutte le società, una dopo l'altra, disponibili per la personalizzazione della pubblicazione dell'utente corrente.

Di seguito è riportato un esempio di plug-in di personalizzazione che crea il ruolo utente MyVerticalSolution in tutte le società disponibili per l'utente corrente:

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

Per ottenere un elenco di società disponibili per l'utente corrente, è sufficiente richiamare il metodo statico PXAccess.GetCompanies() . Quindi PXLoginScope viene utilizzato per accedere a ciascuna delle società disponibili per creare il ruolo utente MyVerticalSolution . Notare che l'istanza di RoleAccess BLC è stata reinizializzata per ciascuna azienda: si tratta di un passaggio assolutamente obbligatorio per apportare modifiche a più società contemporaneamente.

Supponiamo che ci siano 2 aziende nella tua istanza di Acumatica: CompanyA e CompanyB. L'utente amministratore , che verrà utilizzato per pubblicare la personalizzazione, ha accesso a entrambe le società e il ruolo MyVerticalSolution , creato dal plug-in di personalizzazione, esiste già in CompanyA: inserisci la descrizione dell'immagine qui

Dopo aver pubblicato la personalizzazione (durante l'accesso a CompanyA o CompanyB) con il plug-in di personalizzazione sviluppato in precedenza per creare il ruolo MyVerticalSolution in tutte le società disponibili all'utente corrente, notare il ruolo MyVerticalSolution saltato per CompanyA e creato correttamente per CompanyB.

inserisci la descrizione dell'immagine qui

La prossima volta che pubblichi questa personalizzazione, il ruolo MyVerticalSolution verrà saltato per entrambe le società nella tua applicazione Acumatica:

inserisci la descrizione dell'immagine qui



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow