acumatica - 基于 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
解决方案
已创建一个新表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.")]
推荐阅读
- python - 返回字符串python中单词列表的总数?
- javascript - scrollTop:未捕获的类型错误:无法读取未定义的属性“顶部”
- tensorflow - keras.layers.InputLayer 和 keras.Input 的区别
- c++ - 使用已使用 new X() 创建的变量将 std::unique_ptr 传递给函数
- swift - 使用 Swift 将数据上传到 Firestore 时出错
- powershell - 无法加载文件或程序集 'Newtonsoft.Json.Schema, Version=3.0.0.0, ... 系统找不到指定的文件
- python - 如何从数据框中删除行并将其与另一个数据框进行比较并仅保留匹配的索引?
- ios - FSCalendar 和当前时区的问题
- elasticsearch - GROUP BY 中 DISTINCT 的 Elasticsearch COUNT
- sql - 在 Oracle 11g(文件系统)中转换文件