acumatica
Utilizzo del plug-in di personalizzazione per apportare modifiche in più aziende
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:
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.
La prossima volta che pubblichi questa personalizzazione, il ruolo MyVerticalSolution verrà saltato per entrambe le società nella tua applicazione Acumatica: