Acumatica - 按当前供应商过滤 PO 库存选择器

时间:2021-06-28 20:04:24

标签: filter attributes acumatica

我有一个客户希望 POLine 中的库存选择器仅包含属于 POOrder 中所选供应商的库存项目。有没有办法向 [POLineInventoryItem(Filterable=true)] 添加连接?或者我应该采取其他方式来解决这个问题?

如果我用新的 pxselector 替换,库存项目不会传递到 po 行。此外,我将失去 CrossAttribute 搜索。这是 Acumatica 代码:

[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
[POLineInventoryItem(Filterable = true)]
[PXForeignReference(typeof(FK.InventoryItem))]      

这是我需要的选择器:

[PXSelector(typeof(Search2<InventoryItem.inventoryID,
InnerJoin<POVendorInventory, On<InventoryItem.inventoryID,    
Equal<POVendorInventory.inventoryID>,
And<POVendorInventory.vendorID, Equal<Current<POOrder.vendorID>>>>>>))]

[PXCustomizeSelectorColumns(
typeof(PX.Objects.IN.InventoryItem.inventoryCD),
typeof(PX.Objects.IN.InventoryItem.descr),
typeof(PX.Objects.IN.InventoryItem.itemClassID),
typeof(PX.Objects.IN.InventoryItem.itemType),
typeof(PX.Objects.IN.InventoryItem.baseUnit),
typeof(PX.Objects.IN.InventoryItem.salesUnit),
typeof(PX.Objects.IN.InventoryItem.purchaseUnit),
typeof(PX.Objects.IN.InventoryItem.basePrice),
typeof(PX.Objects.IN.InventoryItem.itemStatus))]

1 个答案:

答案 0 :(得分:0)

更新:之前的答案不适用,因为现有选择器不包括所需的 DAC,因此我们还需要使用重新定义选择器。如果我们使用 MergeMethod Append,原始属性仍将返回所有结果,因此将忽略此选择器。由于我们使用了 Replace,我们需要包含我们想要包含的所有其他属性。

[PXMergeAttributes(Method = MergeMethod.Replace)]
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
[PXSelector(typeof(Search2<InventoryItem.inventoryID,
        InnerJoin<POVendorInventory, On<InventoryItem.inventoryID,
        Equal<POVendorInventory.inventoryID>,
        And<POVendorInventory.vendorID, Equal<Current<POOrder.vendorID>>>>>>),
    typeof(InventoryItem.inventoryID),
    typeof(InventoryItem.inventoryCD),
    typeof(InventoryItem.descr),
    typeof(InventoryItem.itemClassID),
    typeof(InventoryItem.itemType),
    typeof(InventoryItem.baseUnit),
    typeof(InventoryItem.salesUnit),
    typeof(InventoryItem.purchaseUnit),
    typeof(InventoryItem.basePrice),
    typeof(InventoryItem.itemStatus),
    SubstituteKey = typeof(InventoryItem.inventoryCD)
    )]
protected virtual void POLine_InventoryID_CacheAttached(PXCache sender) { }

您可以在 DAC 扩展中执行此操作,但此示例假定您只希望在特定屏幕/图形中执行此操作。 CacheAttached 的使用将覆盖该字段,但仅从定义的图形中覆盖。

请注意,此示例应该适用于您具体要求的内容,但我的测试表明,如果没有将预先存在的行与当前供应商联系起来的采购订单供应商库存记录,它也将阻止显示采购订单行的库存 ID .

相关问题