Acumatica 如何使用“添加订单”弹出窗口以编程方式为订单创建和确认发货?

Acumatica 如何使用“添加订单”弹出窗口以编程方式为订单创建和确认发货?,acumatica,Acumatica,我正在尝试以编程方式为单个订单创建和确认发货。但我被困在如何选择添加订单弹出窗口中显示的所有行,以便在发货屏幕上添加Soline。有什么帮助吗 string operation = SOOperation.Issue; SOShipmentEntry shipmentGraph = PXGraph.CreateInstance<SOShipmentEntry>(); BAccountR customer = null; INSite

我正在尝试以编程方式为单个订单创建和确认发货。但我被困在如何选择添加订单弹出窗口中显示的所有行,以便在发货屏幕上添加Soline。有什么帮助吗

 string operation = SOOperation.Issue;
        SOShipmentEntry shipmentGraph = PXGraph.CreateInstance<SOShipmentEntry>();

        BAccountR customer = null;
        INSite warehouse = null;
       PXResultset<SOOrder> objSOOrder = PXSelect<SOOrder, Where<SOOrder.customerRefNbr, Equal<Required<SOImportFilter.referenceID>>>>.Select(this, currentFilter.ReferenceID);
        foreach(SOOrder order in objSOOrder)
        {
            shipmentGraph.Clear();
            var shipment = shipmentGraph.Document.Insert();
            customer = (BAccountR)PXSelect<BAccountR,
            Where<BAccountR.bAccountID, Equal<Required<BAccountR.bAccountID>>>>
            .SelectSingleBound(shipmentGraph, new object[] { }, order.CustomerID);
            shipment.CustomerID = customer.BAccountID;
            shipment = shipmentGraph.Document.Update(shipment);
            warehouse = (INSite)PXSelect<INSite,
           Where<INSite.siteID, Equal<Required<INSite.siteID>>>>
           .SelectSingleBound(shipmentGraph, new object[] { }, "159");
            shipment.SiteID = warehouse.SiteID;
            shipment = shipmentGraph.Document.Update(shipment);
            var addorder = shipmentGraph.addsofilter.Insert();
            addorder.Operation = operation;
            addorder = shipmentGraph.addsofilter.Update(addorder);
            addorder.OrderType = order.OrderType;
            addorder = shipmentGraph.addsofilter.Update(addorder);
            addorder.OrderNbr = order.OrderNbr;
            addorder = shipmentGraph.addsofilter.Update(addorder);

            foreach (PXResult<SOShipmentPlan, SOLineSplit, SOLine> plan in 
                 shipmentGraph.soshipmentplan.Select())
            {
                SOShipmentPlan shipmentPlan = (SOShipmentPlan)plan;
                shipmentPlan.Selected = true;
                shipmentGraph.soshipmentplan.Update(plan);
                shipmentGraph.Actions.PressSave();

            }      

            shipmentGraph.Actions.PressSave();
        }   
string operation=SOOperation.Issue;
soshipmentry shipmentGraph=PXGraph.CreateInstance();
BAccountR客户=null;
INSite仓库=空;
PXResultset objSOOrder=PXSelect.Select(这是currentFilter.ReferenceID);
foreach(按对象顺序排序)
{
shipmentGraph.Clear();
var shipping=shipmentGraph.Document.Insert();
客户=(BAccountR)PXSelect
.SelectSingleBound(shipmentGraph,新对象[]{},order.CustomerID);
shipping.CustomerID=customer.BAccountID;
装运=shipmentGraph.Document.Update(装运);
仓库=(INSite)PXSelect
.SelectSingleBound(shipmentGraph,新对象[]{},“159”);
shipping.SiteID=warehouse.SiteID;
装运=shipmentGraph.Document.Update(装运);
var addorder=shipmentGraph.addsofilter.Insert();
addorder.Operation=操作;
addorder=shipmentGraph.addsofilter.Update(addorder);
addorder.OrderType=order.OrderType;
addorder=shipmentGraph.addsofilter.Update(addorder);
addorder.OrderNbr=order.OrderNbr;
addorder=shipmentGraph.addsofilter.Update(addorder);
foreach(PX)结果计划
shipmentGraph.soshipmentplan.Select())
{
SOShipmentPlan shipmentPlan=(SOShipmentPlan)计划;
shipmentPlan.Selected=true;
shipmentGraph.soshipmentplan.Update(plan);
shipmentGraph.Actions.PressSave();
}      
shipmentGraph.Actions.PressSave();
}   

我很难从描述中理解您试图实现的功能。通常,您会自动执行CreateShipment和ConfirmShipment操作来完成此操作

可能您必须处理一种特殊情况,如果所有阻碍您的因素都是从“添加订单”智能面板内的网格中选择数据:

使用Inspect Element功能,通过单击网格确定目标数据视图的名称:

使用View Business Logic Source查找DataView源代码:

从该数据视图的源代码中,我们看到它返回3个DAC(SOShipmentPlan、SOLineSplit和SOLine):

如果您直接引用SOShipmentEntry graph,则可以直接使用:

SOShipmentEntry shipmentEntry = PXGraph.CreateInstance<SOShipmentEntry>();
shipmentEntry.soshipmentplan.Select()

我很难从描述中理解您试图实现的功能。通常,您会自动执行CreateShipment和ConfirmShipment操作来完成此操作

可能您必须处理一种特殊情况,如果所有阻碍您的因素都是从“添加订单”智能面板内的网格中选择数据:

使用Inspect Element功能,通过单击网格确定目标数据视图的名称:

使用View Business Logic Source查找DataView源代码:

从该数据视图的源代码中,我们看到它返回3个DAC(SOShipmentPlan、SOLineSplit和SOLine):

如果您直接引用SOShipmentEntry graph,则可以直接使用:

SOShipmentEntry shipmentEntry = PXGraph.CreateInstance<SOShipmentEntry>();
shipmentEntry.soshipmentplan.Select()

因此,我正在创建一个新的流程屏幕,以创建和确认所有订单的发货。我试图通过编程方式添加订单,使用“添加订单”弹出窗口将其保存为“创建装运”,然后按“创建装运”创建装运。我已经编辑了问题并添加了我编写的代码。由于shipmentplan视图为空,因此它创建了一个没有添加订单的空装运。需要关于如何添加行和保存的帮助好的,我想我明白了,您想要自动添加订单对话框。我在答案的底部添加了代码。我的时间很短,现在无法测试它,但我认为它应该可以让你继续。基本思想是复制用户在UI中所做的相同操作。谢谢,这很有效!我错过了shipmentEntry.addSO.Press();因此,我正在创建一个新的流程屏幕,以创建和确认所有订单的发货。我试图通过编程方式添加订单,使用“添加订单”弹出窗口将其保存为“创建装运”,然后按“创建装运”创建装运。我已经编辑了问题并添加了我编写的代码。由于shipmentplan视图为空,因此它创建了一个没有添加订单的空装运。需要关于如何添加行和保存的帮助好的,我想我明白了,您想要自动添加订单对话框。我在答案的底部添加了代码。我的时间很短,现在无法测试它,但我认为它应该可以让你继续。基本思想是复制用户在UI中所做的相同操作。谢谢,这很有效!我错过了shipmentEntry.addSO.Press();
Base.soshipmentplan.Select()
SOShipmentEntry shipmentEntry = PXGraph.CreateInstance<SOShipmentEntry>();
shipmentEntry.soshipmentplan.Select()
shipmentEntry.addsofilter.Current.OrderType = SOOrderTypeConstants.SalesOrder;
shipmentEntry.addsofilter.Current.OrderNbr = "000001";
shipmentEntry.addsofilter.Update(shipmentEntry.addsofilter.Current);

foreach (SOShipmentPlan line in shipmentEntry.soshipmentplan.Select())
{
    line.Selected = true;
    shipmentEntry.soshipmentplan.Update(line);
}

shipmentEntry.addSO.Press();