在Acumatica中,可以使用以下代码示例来实现销售订单的分配和取消分配:
using PX.Objects.SO;
public class SOOrderEntry_Extension : PXGraphExtension
{
public PXAction assignOrder;
[PXButton]
[PXUIField(DisplayName = "Assign Order")]
protected void AssignOrder()
{
// 获取当前订单
SOOrder order = Base.Document.Current;
if (order == null)
return;
// 检查订单状态
if (order.Status != SOOrderStatus.Open)
{
throw new PXException("The order must be Open.");
}
// 调用分配方法
Base.Document.Current = Base.Document.Search(order.OrderNbr, order.OrderType);
Base.Actions.PressSave();
Base.Actions.PressButton(Base.DocumentDetails, "Assign");
Base.Document.Current = order;
}
}
using PX.Objects.SO;
public class SOOrderEntry_Extension : PXGraphExtension
{
public PXAction unassignOrder;
[PXButton]
[PXUIField(DisplayName = "Unassign Order")]
protected void UnassignOrder()
{
// 获取当前订单
SOOrder order = Base.Document.Current;
if (order == null)
return;
// 检查订单状态
if (order.Status != SOOrderStatus.Open)
{
throw new PXException("The order must be Open.");
}
// 调用取消分配方法
Base.Document.Current = Base.Document.Search(order.OrderNbr, order.OrderType);
Base.Actions.PressSave();
Base.Actions.PressButton(Base.DocumentDetails, "Unassign");
Base.Document.Current = order;
}
}
以上代码示例通过在SOOrderEntry图形扩展中创建自定义动作来实现销售订单的分配和取消分配。在分配和取消分配动作中,首先检查订单的状态是否为打开状态,然后调用相应的Acumatica方法执行分配或取消分配操作。