将自定义字段添加到发票中的添加 SO 行对话框

Adding custom field to Add SO Line dialog box in Invoices

我通过自定义其属性在 Stock Items (Screen ID IN202500) and managed to display it at line level on Sales Orders (Screen ID - SO301000) 中创建了一个名为 HS 代码 的自定义字段,如下所示。

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
}

如何将相同的字段添加到 Invoices (Screen ID SO303000) 上的 添加 SO 行 对话框?

如何在 发票 屏幕上的 添加 SO 行 对话框中正确引用自定义字段?

您需要扩展 SOLineForDirectInvoice DAC。现在这个 DAC 是一个投影,而不是实际的 table,因此您所要做的就是扩展 DAC 本身。声明字段时,在类型属性上使用 BqlField 属性,这将指示 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 行”对话框中。