Добавление настраиваемого поля в диалоговое окно «Добавить строку SO» в накладных

#acumatica

Вопрос:

Я создал пользовательское поле под названием Код ТН ВЭД на складе (Идентификатор экрана В 202500) и сумел отобразить его на уровне строки в Заказах на продажу (Идентификатор экрана — SO301000), настроив его атрибут, как показано ниже.

 public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine>
{
    #region UsrHSCode
    [PXDBString(50)]
    [PXUIField(DisplayName = "HS Code", Visible = true, Enabled = false)]
    [PXFormula(typeof(Selector<SOLine.inventoryID, InventoryItemExt.usrHSCode>))]

    public virtual string UsrHSCode { get; set; }
    public abstract class usrHSCode : PX.Data.BQL.BqlString.Field<usrHSCode> { }
    #endregion
}
 

Как бы я мог добавить то же поле в диалоговое окно «Добавить строку SO» в счетах-фактурах (идентификатор экрана SO303000)?

Как я могу правильно указать пользовательское поле в диалоговом окне Добавить строку SO на экране счетов-фактур?

Ответ №1:

Вам потребуется расширить ЦАП SOLineForDirectInvoice. Теперь этот ЦАП является проекцией, а не фактической таблицей как таковой, все, что вам нужно сделать, это расширить сам ЦАП. При объявлении поля используйте свойство BqlField для атрибута type, это укажет acumatica, откуда следует считывать значение для поля, например:

 #region UsrHSCode
[PXDBString(50, BqlField = typeof(SOLineExt.usrHSCode))]
[PXUIField(DisplayName = "HS Code", Visible = true, Enabled = false)]
public virtual string UsrHSCode { get; set; }
public abstract class usrHSCode : PX.Data.BQL.BqlString.Field<usrHSCode> { }
#endregion
 

Как только это будет определено в расширении DAC, вы сможете добавить его в диалоговое окно Добавить строку SO, которое можно найти в разделе диалог редактора макетоввведите описание изображения здесь

После публикации новое поле должно быть видно в диалоговом окне Добавить строку SO.