我一直在尝试使用'UsrAlternateIDs'(自定义字段)值(这是库存商品的交叉参考值的串联)来选择库存。这是我试图实现的地方。
因此,如果我输入正确的InventoryID,它会选择我现在存在的库存。但是现在,无论我输入什么价值,首先它会检查它是否是正确的库存ID并为我选择库存。如果没有,它应该寻找库存项目的替代品,如果我输入任何一个(与';'分开),它应该为我选择库存项目。
以下是我编写的代码段:
protected void FSAppointmentDetPart_InventoryID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
var row = (FSAppointmentDetPart)e.Row;
if(row==null) return;
InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<row.InventoryID>>;
if(item!=null)
{
InventoryItem itm = PXSelect<Inventory, Whenre<InventoryItem.alternateIDs, Contains<row.InventoryID>>;
if(itm!=null)
{
}
else
{
throw new PXException("Invalid Inventory Item");
}
}
//sender.SetValue<ContactExt.usrCreditRecordVerified>(e.Row, false);
}
但它不起作用。我错过了什么?
此外,我还查看了“采购订单”页面的业务逻辑,它将查找列AlternateID,如果没有连接且只有单个值,则工作。但是代码对我来说没有多大意义。如果你能向我解释那就太好了。
谢谢。
答案 0 :(得分:0)
如果您尝试让选择器搜索广告资源ID和备用ID,请考虑使用
CrossItemAttribute
示例用法可以是这样的,这里INPrimaryAlternateType.CPN定义了备用ID的类型。
#region InventoryID
public abstract class inventoryID : PX.Data.IBqlField
{
}
protected Int32? _InventoryID;
[CrossItem(INPrimaryAlternateType.CPN, Filterable = true)]
public virtual Int32? InventoryID
{
get
{
return this._InventoryID;
}
set
{
this._InventoryID = value;
}
}
#endregion
修改强>
试图用作未绑定字段
#region InvID
public abstract class invID : PX.Data.IBqlField { }
[PXInt]
[CrossItem(DisplayName="TEST")]
public virtual int? InvID { get; set; }
#endregion InvID
未绑定字段,条形码中的键
系统查找正确的项目