在创建直运 PO 时更新 POOrder 中的用户定义字段

Updating User defined field in POOrder while creating Drop ship PO

我必须重写函数以创建代发货 PO 并根据销售价格利润率低于特定百分比更新 PO Table 中的自定义字段。我已经浏览了 POCreate 的源代码。 PO是通过静态函数创建的

public static PXRedirectRequiredException CreatePOOrders(List<POFixedDemand> list, DateTime? PurchDate, bool extSort)

如何覆盖我的逻辑并将其添加到创建直销采购订单中?

最好的方法是根据需要附加事件处理程序。这不是一个简单的案例,而是我几个月前写的一个例子。此代码正在更改 POLine 描述以在末尾添加 "Test"。您也可以使用它来填充您的自定义字段。

public class POCreateExt : PXGraphExtension<POCreate>
{
    public override void Initialize()
    {
        PXGraph.InstanceCreated.AddHandler<POOrderEntry>((graph) =>
        {
            graph.RowUpdating.AddHandler<POLine>((sender, e) =>
            {
                POLine line = e.NewRow as POLine;
                POOrderEntry.SOLineSplit3 soLine = PXResult<POOrderEntry.SOLineSplit3>.Current;
                line.TranDesc = soLine.TranDesc + " TEST ";
            });
        });
    }
}