我有一个基于自定义DAC
的自定义图,并且在此图的fieldUpdated
事件中,我正在插入POLine
。插入效果很好,并且该行显示在PO
上,但是PO
标头行总计未更新,并且没有PlanID
分配给PO
行。在PO
订单输入屏幕上手动输入PO
行时,PlanID
和表头行总计值由图表分配/更新。
我的(摘要)代码如下:
public SelectFrom<POOrder>.View POView;
public SelectFrom<POLine>
.Where<POLine.pONbr.IsEqual<
POOrder.orderNbr.FromCurrent>>
.View POLineView;
protected virtual void _(Events.FieldUpdated<PSCHOrder, PSCHOrder.pOOrderNbr> e)
{
if (e.NewValue != null && !string.IsNullOrEmpty((string)e.NewValue))
{
var sorder = PXSelect<POOrder, Where<POOrder.orderNbr, Equal<Required<POOrder.orderNbr>>>>.Select(this, e.NewValue);
POView.Current = sorder;
var line = new POLine();
line.OrderNbr = e.NewValue;
line.OrderQty = 1;
line.TranDesc = "my desc";
line.InventoryID = id; //code to lookup id not shown
//Assign Some Custom Fields
PXCache<POLine>.GetExtension<POLineExt>(line).UsrDoorCD = "xxx";
PXCache<POLine>.GetExtension<POLineExt>(line).UsrDoorPoNbr = "yyy"
PXCache<POLine>.GetExtension<POLineExt>(line).UsrJobName = "abc";
//Insert Line
savedLine = this.POLineView.Insert(line);
}
}
这是不正确的设计还是我缺少什么?
这两个字段(lineTotal或PlanID)均不会自动计算。您将需要更新。否则,执行此操作的最佳方法是创建POOrderEntry的图形实例,并通过该图形的视图插入线。但是,在事件处理程序中创建图实例并不是一种好的做法。