PXAction似乎什么都不做

时间:2015-08-06 07:26:37

标签: cloud erp acumatica

我正在销售订单中进行自定义,我想自定义操作取消订单。我反映了代码,但只能找到这个:

    public PXAction<SOOrder> cancelled;
    [PXUIField(Visible = false)]
    [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
    protected virtual IEnumerable Cancelled(PXAdapter adapter)
    {
        return adapter.Get();
    }

自定义功能是否合适?

1 个答案:

答案 0 :(得分:3)

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

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

Automation definition

您可以看到点击按钮时,某些字段会被更改。请注意,已取消字段设置为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

既然我们已经了解Field已经更改,我们可以查找可以处理此更改的事件处理程序。目前有一个事件处理程序(FieldVerifying)可确保在执行此操作之前取消订单。如果要扩展验证逻辑,可以自定义此处理程序:

protected virtual void SOOrder_Cancelled_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)

如果您希望添加取消成功时可能发生的事件,则可以创建新的事件处理程序(FieldUpdated):

protected virtual void SOOrder_Cancelled_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)

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

相关问题