【发布时间】:2019-07-15 19:24:38
【问题描述】:
我需要在采购订单接收期间验证选择的正确位置,这可能意味着临时更改项目仓库屏幕上定义的“默认”位置。我的挑战是字段默认事件处理程序是在 POLocationAvailAttribute 属性中定义的,而不是在 POReceiptEntry 图中。
public class POLocationAvailAttribute : LocationAvailAttribute
{
public POLocationAvailAttribute(Type InventoryType, Type SubItemType, Type SiteIDType, Type TranType, Type InvtMultType)
: base(InventoryType, SubItemType, SiteIDType, TranType, InvtMultType)
{
}
public override void FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
{
POReceiptLine row = e.Row as POReceiptLine;
if (row == null) return;
if (POLineType.IsStock(row.LineType) && row.POType != null && row.PONbr != null && row.POLineNbr != null)
{
POLine poLine = PXSelect<POLine, Where<POLine.orderType, Equal<Required<POLine.orderType>>,
And<POLine.orderNbr, Equal<Required<POLine.orderNbr>>,
And<POLine.lineNbr, Equal<Required<POLine.lineNbr>>>>>>.Select(sender.Graph, row.POType, row.PONbr, row.POLineNbr);
if (poLine != null && poLine.TaskID != null)
{
INLocation selectedLocation = PXSelect<INLocation, Where<INLocation.siteID, Equal<Required<INLocation.siteID>>,
And<INLocation.taskID, Equal<Required<INLocation.taskID>>>>>.Select(sender.Graph, row.SiteID, poLine.TaskID);
if (selectedLocation != null )
{
e.NewValue = selectedLocation.LocationID;
return;
}
else
{
e.NewValue = null;
return;
}
}
}
base.FieldDefaulting(sender, e);
}
}
如何在我的 Graph Extension 中覆盖 Field Defaulting 事件,以便调用 Base Method 来设置默认位置,然后我可以检查它是否需要切换到我的“备用默认位置”满足具体条件?
【问题讨论】:
标签: acumatica