首页 > 解决方案 > 基于 ItemClass 的具有 InventoryAttribute 和 PXRestrictor 的自定义字段在 2018R1 中不再有效

问题描述

我们有一个自定义字段,其中包含库存项目的查找/选择器,我仅限于某个项目类别。在 2018R1 中,ItemClassID 字段现在是一个 int,我需要与 ItemClassCD 字段进行比较。

我的 PXRestrictor 只能访问原始 DAC 中的字段。我应该如何最好地重写它以适应对项目类的更改?

        #region ParentInventoryID
    [Inventory( IsKey = true, Visibility = PXUIVisibility.SelectorVisible, DisplayName = "Parent Inventory ID")]
    [PXRestrictor(typeof(Where<InventoryItem.itemClassID, Equal<ItemClass.cabledTransceiverFinishedProduct>>), "Parent is not a cabled transceiver finished product.")]
    [PXDefault()]
    [PX.Data.EP.PXFieldDescription] 
    [PXParent(typeof(Select<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<parentInventoryID>>>>))]
    public Int32? ParentInventoryID { get; set; }
    public abstract class parentInventoryID : IBqlField { }
    #endregion

标签: acumatica

解决方案


已创建一个新表INItemClass来存储 Inventory Item Class。InventoryItem.INItemClassID 关键字段指向一个INItemClass记录。

我认为 Inventory 属性默认情况下不会加入 INItemClass ,因此您必须在属性类型参数中添加该连接。

使用 INItemClass 连接,您可以限制文本字段 INItemClass.itemClassCD:

[Inventory(typeof(Search2<InventoryItem.inventoryID, 
                  InnerJoin<INItemClass, On<INItemClass.itemClassID, Equal<InventoryItem.itemClassID>>>>),
           typeof(InventoryItem.inventoryCD), 
           typeof(InventoryItem.descr), 
           DisplayName = "Parent Inventory ID")]
[PXRestrictor(typeof(Where<INItemClass.itemClassCD, Equal<ItemClass.cabledTransceiverFinishedProduct>>), "Parent is not a cabled transceiver finished product.")]

推荐阅读