Acumatica: переключение атрибута селектора в том же поле ЦАП - PullRequest
0 голосов
/ 23 сентября 2019

Добрый день!

У меня в ЦАП есть поле, где мне нужно изменить атрибут селектора в зависимости от настроек, которые я установил в своих предпочтениях.Как вы, возможно, знаете, в acumatica существуют атрибуты LeadSelector и Attribute CustomerSelector.Я хочу изменить атрибут селектора данного поля, если я настрою Клиента на свои предпочтения, и наоборот.

Есть ли сейчас какие-либо доступные ресурсы?

Я думал о создании атрибута расширенного селектора, для которого я проверю настройку предпочтений, а затем унаследую LeadSelector или CustomerSelector наРасширенный селектор.Но я думаю, что это может оказаться невозможным.

Другая вещь, о которой я думал, - это добавить оба селектора в атрибут и убрать их с уровня графа всякий раз, когда устанавливается предпочтение.

Я также думаю о создании 2 селекторов, на которых я буду скрывать другой в зависимости от настроек предпочтений.Но проблема в том, что селектор используется не только на одной странице, и это затруднительно, если я создаю 2 селектора просто для решения этой проблемы.А также в будущем это может привести не только к выбору клиентов и их выбору.

Надеюсь, вы мне поможете, у меня нет идей.Большое спасибо.

ОБНОВЛЕНИЕ 09-24-2019

Я создал собственный атрибут селектора для атрибутов Селектор и Селектор клиента.И это работает, просто я хочу, чтобы это было, но теперь моя проблема в том, что поле описания не будет отображаться в текстовом поле или в этом поле, также есть ошибка, такая как «Имя инвестора не найдено в системе».

Атрибут селектора инвесторов

public class InvestorSelectorAttribute : PXCustomSelectorAttribute
{

    public InvestorSelectorAttribute() : base(typeof(REInvestor.accountID))
    {
        DescriptionField = typeof(REInvestor.acctName);
        SubstituteKey = typeof(REInvestor.acctName);
    }

    protected IEnumerable GetRecords()
    {
        var leads = new PXSelect<Contact,
                        Where<Contact.contactType, Equal<ContactTypesAttribute.lead>,
                        Or<Where<Contact.contactType, Equal<ContactTypesAttribute.person>,
                            And<Contact.status, Equal<LeadStatusesAttribute.converted>>>>>>(this._Graph);

        var contacts = new PXSelect<BAccountR>(this._Graph);

        REFeature setup = PXSelect<REFeature>.Select(this._Graph);

        if (setup.InvestorType == InvestorTypesAttribute.LeadVal)
        {
            foreach (Contact lead in leads.Select())
            {
                yield return new REInvestor { AccountID = lead.ContactID, AcctName = lead.DisplayName };
            }
        }
        else
        {
            foreach (BAccountR contact in contacts.Select())
            {
                yield return new REInvestor { AccountID = contact.BAccountID, AcctName = contact.AcctName, AcctCD = contact.AcctCD };
            }
        }
    }
}

Несвязанный REINvestor DAC

[Serializable]
[PXCacheName("Investor")]
public class REInvestor : IBqlTable
{
    public abstract class accountID : BqlInt.Field<accountID> { }
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = REMessages.DisplayNames.AccountID, Visibility = PXUIVisibility.SelectorVisible)]
    public virtual int? AccountID { get; set; }

    public abstract class acctName : BqlString.Field<acctName> { }
    [PXDBString(128, InputMask = "", IsUnicode = true)]
    [PXUIField(DisplayName = REMessages.DisplayNames.AccountName, Visibility = PXUIVisibility.SelectorVisible)]
    public virtual string AcctName { get; set; }

    public abstract class acctCD : BqlString.Field<acctCD> { }
    [PXDBString(128, InputMask = "", IsUnicode = true)]
    [PXUIField(DisplayName = REMessages.DisplayNames.AcctCD, Visibility = PXUIVisibility.SelectorVisible)]
    public virtual string AcctCD { get; set; }
}

** Интеграция DAC **

[PXDBInt]
    [PXUIField(DisplayName = REMessages.DisplayNames.InvestorsName, Required = true)]
    [InvestorSelector()]
    [PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
    public virtual int? ContactID { get; set; }

Мне очень нужна ваша помощь и предложения.Большое вам спасибо.

...