PXAction 似乎什么都不做
PXAction seemingly does nothing
我正在 销售订单 中进行自定义,我想自定义操作 取消订单。我反映了代码,但只能找到这个:
public PXAction<SOOrder> cancelled;
[PXUIField(Visible = false)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable Cancelled(PXAdapter adapter)
{
return adapter.Get();
}
自定义功能合适吗?
这是个很好的问题,因为它涉及的不仅仅是业务逻辑层。
SOOrderEntry 是一个非常强大且复杂的页面,必须处理多个状态。为此,Acumatica Framework 有一个自动化模块,允许根据当前状态设置不同的值。当您单击 Cancel Order 时,框架会触发页面自动化定义 (SM205010) 和自动化步骤 (SM205000) 中定义的状态更改。请看下面取消订单操作的定义。
您可以看到点击按钮后,一些字段发生了变化。请注意字段 Cancelled 设置为 True。 Cancelled 字段是 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
既然我们知道字段已更改,我们可以寻找可以处理此更改的事件处理程序。目前有一个事件处理程序 (FieldVerifying) 可以确保在取消订单之前可以取消订单。如果你想扩展验证逻辑,你可以自定义这个处理程序:
protected virtual void SOOrder_Cancelled_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
如果您希望添加一个在取消成功时会发生的事件,您可以创建一个新的事件处理程序 (FieldUpdated):
protected virtual void SOOrder_Cancelled_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
您找到的代码只是一个占位符,用于创建按钮并允许框架在您按下按钮时触发自动化步骤。
我正在 销售订单 中进行自定义,我想自定义操作 取消订单。我反映了代码,但只能找到这个:
public PXAction<SOOrder> cancelled;
[PXUIField(Visible = false)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable Cancelled(PXAdapter adapter)
{
return adapter.Get();
}
自定义功能合适吗?
这是个很好的问题,因为它涉及的不仅仅是业务逻辑层。
SOOrderEntry 是一个非常强大且复杂的页面,必须处理多个状态。为此,Acumatica Framework 有一个自动化模块,允许根据当前状态设置不同的值。当您单击 Cancel Order 时,框架会触发页面自动化定义 (SM205010) 和自动化步骤 (SM205000) 中定义的状态更改。请看下面取消订单操作的定义。
您可以看到点击按钮后,一些字段发生了变化。请注意字段 Cancelled 设置为 True。 Cancelled 字段是 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
既然我们知道字段已更改,我们可以寻找可以处理此更改的事件处理程序。目前有一个事件处理程序 (FieldVerifying) 可以确保在取消订单之前可以取消订单。如果你想扩展验证逻辑,你可以自定义这个处理程序:
protected virtual void SOOrder_Cancelled_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
如果您希望添加一个在取消成功时会发生的事件,您可以创建一个新的事件处理程序 (FieldUpdated):
protected virtual void SOOrder_Cancelled_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
您找到的代码只是一个占位符,用于创建按钮并允许框架在您按下按钮时触发自动化步骤。