【发布时间】:2018-05-22 22:46:08
【问题描述】:
当从创建采购订单屏幕处理采购订单时,我正在尝试使用来自 SOLine DAC 的自定义字段值更新采购订单屏幕上的 CuryUnitPrice 字段。关于如何做到这一点的任何想法?
现在我正在尝试根据 OrderNbr 字段获取 POLine。该字段是自动编号的,并且其中包含“值。我尝试了所有可能的方法来获取创建的 POOrderNbr 的值。但不知何故,在触发了这么多次之后,我在 RowSelectedEvent 处理程序中找到了它。检索 RowSeletedEventhandler 的值不是一个好主意. 有什么办法可以让我从创建采购订单屏幕或采购订单屏幕中获取更新字段的值。下面是我在 RowSelectedEventHandler 中编写的代码
protected virtual void POLine_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected del)
{
del.Invoke(cache, e);
POLine row = e.Row as POLine;
if (row != null)
{
if (row.OrderNbr != " <NEW>")
{
PXResultset<POLine> poLine = PXSelect<POLine, Where<POLine.orderNbr,
Equal<Required<POLine.orderNbr>>>>
.Select(Base, row.OrderNbr);
foreach (POLine p in poLine)
{
PXResultset<SOLineSplit> SoLineSplit = PXSelect<SOLineSplit, Where<SOLineSplit.pONbr,
Equal<Required<POOrder.orderNbr>>, And<SOLineSplit.pOLineNbr, Equal<Required<POLine.lineNbr>>>>>.Select(Base, row.OrderNbr, p.LineNbr);
foreach (SOLineSplit so in SoLineSplit)
{
SOLine soLine = PXSelectJoin<SOLine, InnerJoin<SOLineSplit, On<SOLine.orderNbr, Equal<Required<SOLineSplit.orderNbr>>>>,
Where<SOLineSplit.planID, Equal<Required<SOLineSplit.planID>>>>.Select(Base, so.OrderNbr, so.PlanID);
SOLineExt soLineExt = PXCache<SOLine>.GetExtension<SOLineExt>(soLine);
if (soLineExt.UsrUnitCost != null)
{
p.CuryUnitCost = soLineExt.UsrUnitCost;
Transactions.Update(p);
Base.Actions.PressSave();
}
}
}
}
}
}
【问题讨论】:
标签: acumatica