Cloud 行动似乎什么也不做

Cloud 行动似乎什么也不做,cloud,erp,acumatica,Cloud,Erp,Acumatica,我正在销售订单中进行自定义,我想自定义“取消订单”操作。我反映了代码,但只能找到以下内容: public PXAction<SOOrder> cancelled; [PXUIField(Visible = false)] [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)] protected virtual IEnumerable Cancelled(PXAdapter adapter)

我正在销售订单中进行自定义,我想自定义“取消订单”操作。我反映了代码,但只能找到以下内容:

    public PXAction<SOOrder> cancelled;
    [PXUIField(Visible = false)]
    [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
    protected virtual IEnumerable Cancelled(PXAdapter adapter)
    {
        return adapter.Get();
    }
公共行动取消;
[PXUIField(可见=假)]
[PXButton(ImageKey=PX.Web.UI.Sprite.Main.DataEntryF)]
已取消受保护的虚拟IEnumerable(PXAdapter)
{
返回适配器Get();
}

它是定制的正确功能吗

这是一个很好的问题,因为它涉及的不仅仅是业务逻辑层

SOOrderEntry是一个非常强大和复杂的页面,必须处理多个状态。为此,Acumatica框架有一个自动化模块,允许根据当前状态设置不同的值。单击“取消订单”时,框架将触发页面自动化定义(SM205010)和自动化步骤(SM205000)中定义的状态更改。请看下面操作取消订单的定义

您可以看到,单击按钮后,某些字段发生了更改。请注意,“取消”字段设置为True。“取消”字段是具有以下定义的SOOrder绑定字段:

    #region Cancelled

    public abstract class cancelled : PX.Data.IBqlField
    {
    }
    protected Boolean? _Cancelled;
    [PXDBBool()]
    [PXDefault(false)]
    [PXUIField(DisplayName = "Canceled")]
    public virtual Boolean? Cancelled
    {
        get
        {
            return this._Cancelled;
        }
        set
        {
            this._Cancelled = value;
        }
    }
    #endregion
既然我们了解了某个字段已被更改,那么我们可以寻找处理此更改的事件处理程序。目前有一个事件处理程序(FieldVerification),可以确保在取消订单之前取消订单。如果要扩展验证逻辑,可以自定义此处理程序:

protected virtual void SOOrder_Cancelled_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
如果希望添加取消成功后将发生的事件,可以创建新的事件处理程序(FieldUpdate):


您找到的代码只是一个占位符,用于创建按钮,并允许框架在您按下按钮时触发自动化步骤。

谢谢您的解释。当我们在屏幕SO50100中进行大规模处理时,我还关心事件,我们如何在事件中识别它?我们有这样做的方法吗?SOOrderProcess应该实例化一个SOOrderEntry图来执行操作,因此您不必进一步扩展它。
protected virtual void SOOrder_Cancelled_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)