如何拦截创建货件流程以设置特定字段

How can I intercept the Create Shipment process to set a particular field

我有一个自定义,当用户点击销售订单屏幕上的 'Create Shipment' 按钮时,我需要 - 在发货屏幕上 - 将描述设置为客户 (AcctCD) 值。

我只希望在最初创建货件时发生这种情况。我已经为 SOShipment DAC 尝试了 RowInserted 事件,但问题是 e.Row 中没有任何内容 - 所有值都为空。我不想使用 RowPersisted 事件,因为每次执行保存时都会触发,我只希望在第一次创建 SOShipment 记录时发生这种情况。

所以 - 我的问题是,如果我想使用存在于销售订单图表/BLC 中的实际 'CreateShipment' 流程 - 我应该覆盖哪个方法(有几个 - CreateShipment、CreateShipmentIssue 等。 ),我将如何使用该覆盖方法将描述字段设置为客户 CD?

谢谢...

您可以通过覆盖 SOShipmentEntry 图上的方法 CreateShipment 来执行此操作。 此外,为避免覆盖所有功能,您实际上可以覆盖内部功能 public virtual bool SetShipmentFieldsFromOrder,其中订单值填充到装运 header... 您可以将描述设置为 AcctCD 值来自客户。

避免重写方法的另一种方法是在 SOShipmentEntry Graph 上声明 OrderNbr Field Updated 事件处理程序,并询问销售订单屏幕是否正在创建记录。 (使用 属性 Accessinfo.ScreenID)如果访问信息中的 ScreenID 是销售订单 (SO301000) 中的编号,那么您可以假设记录是从“创建发货”按钮创建的,然后设置描述想要。