在Acumatica 2017 R2中创建装运时确认装运

在Acumatica 2017 R2中创建装运时确认装运,acumatica,Acumatica,当用户在版本6.x中单击“创建装运”时,我使用此问题的解决方案来确认装运 我已经升级到了最新版本,但当单击“创建装运”时,这种逻辑似乎不再起作用。相反,当调用行while(PXLongOperation.GetStatus(Base.UID,out timespan,out ex)=PXLongRunStatus.InProcess){}时,当在监视窗口中观察到段PXLongOperation.GetStatus(Base.UID,out timespan,out ex)时,它返回DoesNo

当用户在版本6.x中单击“创建装运”时,我使用此问题的解决方案来确认装运


我已经升级到了最新版本,但当单击“创建装运”时,这种逻辑似乎不再起作用。相反,当调用行
while(PXLongOperation.GetStatus(Base.UID,out timespan,out ex)=PXLongRunStatus.InProcess){}
时,当在监视窗口中观察到段
PXLongOperation.GetStatus(Base.UID,out timespan,out ex)
时,它返回DoesNotExist。装运继续创建不再确认的正常装运。

这似乎对我有效(还包括执行操作中的更新):

public delegate void CreateShipmentDelegate(订单顺序、int?SiteID、DateTime?ShipDate、bool?useOptimalShipDate、字符串操作、文档列表);
[PXOverride]
公共虚拟void createShipping(SOOrder order、int?SiteID、DateTime?ShipDate、bool?USEOTIMATICSHIPDATE、字符串操作、文档列表、CreateShipmentDelegate baseMethod)
{
baseMethod(订单、站点ID、发货日期、使用优化发货日期、操作、列表);
var装运=Base.Document.Current;
如果(shipping.Hold==true)
{
装运。保留=错误;
//装运状态必须设置为null才能应用“新打开”自动化步骤
发货状态=空;
发货=基本.单据.更新(发货);
if(shipping.Hold==true | | shipping.Status==SOShipmentStatus.Hold)
{
抛出新的PXException(“装运{0}无法取消搁置”,shipping.ShipmentNbr);
}
}
Shipping.ShipDate=Shipping.ShipDate.Value.AddDays(1);
基础。文件。更新(装运);
Base.Actions.PressSave();
//您可以在这里添加自定义逻辑
//电话确认装运
foreach(var shipmentAction in(Base.action.GetState(装运)作为PXButtonState)。菜单)
{
if(shipmentAction.Command==“确认装运”)
{
PXAdapter shipmentAdapter=新PXAdapter(
新建DummyView(Base,Base.Document.View.BqlSelect,
新清单{装运});
shipmentAdapter.Menu=shipmentAction.Command;
//调用确认装运操作
Base.action.Press(shipmentAdapter.RowCast().ToList();
}
}
//执行更新
Base.UpdateIN.Press();
}
内部类DummyView:PXView
{
记录清单;
内部DummyView(PXGraph图形、BqlCommand命令、列表记录)
:base(图形、真值、命令)
{
_记录=记录;
}
公共覆盖列表选择(对象[]当前、对象[]参数、对象[]搜索、字符串[]排序列、布尔[]下降、PXFilterRow[]过滤器、ref int startRow、int maximumRows、ref int totalRows)
{
退货记录;
}
}

这似乎对我很有效(还包括执行动作中的更新):

public delegate void CreateShipmentDelegate(订单顺序、int?SiteID、DateTime?ShipDate、bool?useOptimalShipDate、字符串操作、文档列表);
[PXOverride]
公共虚拟void createShipping(SOOrder order、int?SiteID、DateTime?ShipDate、bool?USEOTIMATICSHIPDATE、字符串操作、文档列表、CreateShipmentDelegate baseMethod)
{
baseMethod(订单、站点ID、发货日期、使用优化发货日期、操作、列表);
var装运=Base.Document.Current;
如果(shipping.Hold==true)
{
装运。保留=错误;
//装运状态必须设置为null才能应用“新打开”自动化步骤
发货状态=空;
发货=基本.单据.更新(发货);
if(shipping.Hold==true | | shipping.Status==SOShipmentStatus.Hold)
{
抛出新的PXException(“装运{0}无法取消搁置”,shipping.ShipmentNbr);
}
}
Shipping.ShipDate=Shipping.ShipDate.Value.AddDays(1);
基础。文件。更新(装运);
Base.Actions.PressSave();
//您可以在这里添加自定义逻辑
//电话确认装运
foreach(var shipmentAction in(Base.action.GetState(装运)作为PXButtonState)。菜单)
{
if(shipmentAction.Command==“确认装运”)
{
PXAdapter shipmentAdapter=新PXAdapter(
新建DummyView(Base,Base.Document.View.BqlSelect,
新清单{装运});
shipmentAdapter.Menu=shipmentAction.Command;
//调用确认装运操作
Base.action.Press(shipmentAdapter.RowCast().ToList();
}
}
//执行更新
Base.UpdateIN.Press();
}
内部类DummyView:PXView
{
记录清单;
内部DummyView(PXGraph图形、BqlCommand命令、列表记录)
:base(图形、真值、命令)
{
_记录=记录;
}
公共覆盖列表选择(对象[]当前、对象[]参数、对象[]搜索、字符串[]排序列、布尔[]下降、PXFilterRow[]过滤器、ref int startRow、int maximumRows、ref int totalRows)
{
退货记录;
}
}
    public delegate void CreateShipmentDelegate(SOOrder order, int? SiteID, DateTime? ShipDate, bool? useOptimalShipDate, string operation, DocumentList<SOShipment> list);
    [PXOverride]
    public virtual void CreateShipment(SOOrder order, int? SiteID, DateTime? ShipDate, bool? useOptimalShipDate, string operation, DocumentList<SOShipment> list, CreateShipmentDelegate baseMethod)
    {
        baseMethod(order, SiteID, ShipDate, useOptimalShipDate, operation, list);
        var shipment = Base.Document.Current;

        if (shipment.Hold == true)
        {
            shipment.Hold = false;
            //shipment Status must be set to null to apply 'New Open' Automation Step
            shipment.Status = null;
            shipment = Base.Document.Update(shipment);
            if (shipment.Hold == true || shipment.Status == SOShipmentStatus.Hold)
            {
                throw new PXException("Shipment {0} cannot be taken off Hold", shipment.ShipmentNbr);
            }
        }

        shipment.ShipDate = shipment.ShipDate.Value.AddDays(1);
        Base.Document.Update(shipment);
        Base.Actions.PressSave();


        //Here you can add your custom logic

        //Call Confirm Shipment
        foreach (var shipmentAction in (Base.action.GetState(shipment) as PXButtonState).Menus)
        {
            if (shipmentAction.Command == "Confirm Shipment")
            {
                PXAdapter shipmentAdapter = new PXAdapter(
                    new DummyView(Base, Base.Document.View.BqlSelect,
                        new List<object> { shipment }));
                shipmentAdapter.Menu = shipmentAction.Command;
                //to invoke Confirm Shipment action
                Base.action.Press(shipmentAdapter).RowCast<SOShipment>().ToList();
            }
        }

        //Execute UpdateIN
        Base.UpdateIN.Press();

    }
    internal class DummyView : PXView
    {
        List<object> _Records;
        internal DummyView(PXGraph graph, BqlCommand command, List<object> records)
            : base(graph, true, command)
        {
            _Records = records;
        }
        public override List<object> Select(object[] currents, object[] parameters, object[] searches, string[] sortcolumns, bool[] descendings, PXFilterRow[] filters, ref int startRow, int maximumRows, ref int totalRows)
        {
            return _Records;
        }
    }