默认PO类型为' Drop Ship'不正常

时间:2016-10-13 17:08:49

标签: acumatica

我试图将OrderType.POOrderType默认为POOrderType.DropShip。我尝试将自定义管理器中的属性更改为以下内容:

 [PXDBString(2, IsKey = true, IsFixed = true)]
 [PXDefault(POOrderType.DropShip)]
 [POOrderType.List()]
 [PXUIField(DisplayName = "Type", Visibility = PXUIVisibility.SelectorVisible, Enabled = true)]
 [PX.Data.EP.PXFieldDescription]

但是在插入新记录后,它什么也没做。我还尝试在POOrderEntry的图表扩展中使用CacheAttached事件,如下所示:

  public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
  {
    [PXDBString(2, IsKey = true, IsFixed = true)]
    [PXDefault(POOrderType.DropShip)]
    [POOrderType.List()]
    [PXUIField(DisplayName = "Type", Visibility = PXUIVisibility.SelectorVisible, Enabled = true)]
    [PX.Data.EP.PXFieldDescription]
    protected virtual void POOrder_OrderType_CacheAttached(PXCache sender) { }

 }

这也行不通。

我终于尝试使用RowInserting事件,如下所示

 protected virtual void POOrder_RowInserting(PXCache sender, PXRowInsertingEventArgs e)
 {
     POOrder poorder = (POOrder)e.Row;  
     if (poorder == null) return;
     poorder.OrderType = POOrderType.DropShip;
 }

此DOES默认为DropShip,但是,当我使用屏幕上的下拉菜单更改回&#39; Normal&#39;时,它会清空所有字段,而Type也为空。如果我再次选择“正常”,则会正确显示字段中的数据。我无法弄清楚这里发生了什么。我总是必须选择两次类型才能显示任何内容。我不明白为什么RowInserting事件会导致这种行为......

1 个答案:

答案 0 :(得分:0)

POOrderEntry中有POOrder_OrderType_FieldDefaulting事件,其中设置了默认订单类型。

protected virtual void POOrder_OrderType_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
{
    e.NewValue = POOrderType.RegularOrder;
}

它具有比PXDefault属性“更高的优先级”(有关更多信息,请查看T200培训)。 所以你需要覆盖这个事件处理程序。