Поле BusinessAccountMaint, необходимое для клиента - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь сделать PriceClassID обязательным для бизнес-аккаунтов при их создании.Первоначально я сделал это, отредактировав ЦАП.Это вызвало проблему, при которой при создании сотрудника отображалась ошибка, делающая невозможным создание сотрудника.

Ошибка: «CPriceClassID» не может быть пустым

Я вернулсяна чертежную доску и решил отредактировать атрибуты на графике, что позволило мне создавать записи сотрудников.Однако теперь при редактировании существующих поставщиков через экран бизнес-аккаунтов я получаю ту же ошибку.Я могу создавать и редактировать поставщиков с экрана «Продавцы», потому что он использует другой график, но я все же хотел бы реализовать более элегантное решение

[PXDBString(10, IsUnicode = true)]
[PXSelector(typeof(AR.ARPriceClass.priceClassID))]
[PXUIField(DisplayName = "Price Class", Visibility = PXUIVisibility.Visible)]
[PXDefault()]    
protected virtual void Location_CPriceClassID_CacheAttached(PXCache sender)
{
}

Каков наилучший способ сделать поле CPriceClassID обязательным в BusinessЭкран учетных записей, который все еще позволяет мне создавать сотрудников и поставщиков без каких-либо ошибок?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете использовать PXUIRequiredAttribute для достижения того, что вам нужно. Ниже приведен пример того, как вы можете использовать его для создания поля, обязательного только для определенного экрана:

public class LocationExt : PXCacheExtension<PX.Objects.CR.Location>
{
    public class BusinessAccountMaintScreen :Constant<string>
    {
        //"CR.30.30.00" is the page id of the Business Accounts screen
        public BusinessAccountMaintScreen():base("CR.30.30.00")
        {

        }
    }

    #region UsrCustomField
    [PXDBString(10, IsUnicode = true)]
    [PXSelector(typeof(AR.ARPriceClass.priceClassID))]
    [PXUIField(DisplayName = "Price Class", Visibility = PXUIVisibility.Visible)]
    [PXDefault]
    // Here we add checking for the current page so that this field will be required only on the Business Accounts screen
    [PXUIRequired(typeof(Where<Current<AccessInfo.screenID>, Equal<BusinessAccountMaintScreen>>))]

    public virtual String CPriceClassID {get;set;}
    #endregion
}
...