Hi All,
Quick trick for you. If you need to link several tenants together, you can use the code from this article
Tenant selector attribute:
#region NeuralCompanySelectorAttribute
public class CompanySelectorAttribute : PXCustomSelectorAttribute
{
public CompanySelectorAttribute()
: base(typeof(UPCompany.companyID))
{
DescriptionField = typeof(UPCompany.loginName);
}
protected virtual IEnumerable GetRecords()
{
PXCache cache = _Graph.Caches[typeof(UPCompany)];
Int32 current = PX.Data.Update.PXInstanceHelper.CurrentCompany;
foreach (UPCompany info in PXCompanyHelper.SelectCompanies(PXCompanySelectOptions.Visible))
{
if (current != info.CompanyID) yield return info;
}
}
public override void DescriptionFieldSelecting(PXCache sender, PXFieldSelectingEventArgs e, string alias)
{
if (e.Row == null || (sender.GetValue(e.Row, _FieldOrdinal) == null)) base.DescriptionFieldSelecting(sender, e, alias);
else
{
UPCompany item = null;
Object value = sender.GetValue(e.Row, _FieldOrdinal);
Int32 key = (Int32)value;
foreach (UPCompany info in PXCompanyHelper.SelectCompanies())
{
if (info.CompanyID == key)
{
item = info;
break;
}
}
if (item != null) e.ReturnValue = sender.Graph.Caches[_Type].GetValue(item, _DescriptionField.Name);
}
}
}
#endregion
Attribute usage:
public class BaseProject : IBqlTable
{
#region BaseCompanyID
[PXInt()]
[PXUIField(DisplayName = "Base Company ID", Required = true)]
[CompanySelector()]
[PXDefault]
public virtual int? BaseCompanyID { get; set; }
public abstract class baseCompanyID : IBqlField { }
#endregion
}
This trick can be usefull if you have Inter-Tenants reports like here.
Have a nice development!