如何在使用api插入销售订单时将注释插入销售订单备注?

时间:2014-10-03 23:27:27

标签: erp acumatica

我正在使用Acumatica 4.2并通过其他系统的api插入销售订单。 该请求已经出现在销售订单中添加注释,我没有看到有关如何执行此操作的任何有用信息。提前致谢。这是我使用Acumatica WebAPI插入SalesOrder的代码。它功能很好。

在销售订单屏幕上,右上角还有一个Notes指示器,可在其中将注释添加到销售订单。如何使用acumatica web api添加注释?或者我只是使用返回的SONumber并使用SONumber作为参考插入注释。我之前没有处理过笔记。

    try
    {
        cmds.AddRange(
            new SO301000_509.Command[]
        {
            so301000.Actions.Insert,
                    new SO301000_509.Value { Value = "SO", LinkedCommand = so301000.OrderSummary.OrderType },
                    new SO301000_509.Value { Value = "='new'", LinkedCommand = so301000.OrderSummary.OrderNbr },
                    new SO301000_509.Value { Value = dealerOrder.accountCode, LinkedCommand = so301000.OrderSummary.Customer },
                    //new SO301000_509.Value { Value = ((DateTime)dealerOrder.orderDateTime).ToShortDateString(), LinkedCommand = so301000.OrderSummary.Date },
                    new SO301000_509.Value { Value = (dealerOrder.orderDateTime), LinkedCommand = so301000.OrderSummary.Date },
                    new SO301000_509.Value { Value = "Hubsoft Order Nbr: " + dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.Description },
                    new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerRef },
                    new SO301000_509.Value { Value = "HS-" + dealerOrder.purchaseOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerOrder },
                    //new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.ControlTotal },
        }
        );
        //create the sales order lines in loop
        for (var idx = 0; idx < SalesOrderLine.Length; idx++)
        {
            cmds.AddRange(
                new SO301000_509.Command[]
            {
                so301000.DocumentDetails.ServiceCommands.NewRow,
                    //simple line adding
                    so301000.DocumentDetails.ServiceCommands.NewRow,
                    new SO301000_509.Value { Value = SalesOrderLine[idx].inventoryCD, LinkedCommand = so301000.DocumentDetails.InventoryID },
                    new SO301000_509.Value { Value = SalesOrderLine[idx].UOM, LinkedCommand = so301000.DocumentDetails.UOM },
                    new SO301000_509.Value { Value = SalesOrderLine[idx].Qty, LinkedCommand = so301000.DocumentDetails.Quantity },
                    new SO301000_509.Value { Value = "MAIN", LinkedCommand = so301000.DocumentDetails.Warehouse},                        
                    new SO301000_509.Value { Value = SalesOrderLine[idx].UnitPrice, LinkedCommand = so301000.DocumentDetails.UnitPrice, Commit = true },
            }
            );
        }
        cmds.Add(so301000.Actions.Save);                                                //save all
        cmds.Add(so301000.OrderSummary.OrderNbr);                                       //return Order #

        SO301000_509.Content[] SO301000Content = context.Submit(cmds.ToArray());            //submit
        PXTrace.WriteInformation(SO301000Content[0].OrderSummary.OrderNbr.Value);
        acumaticaSONbr = SO301000Content[0].OrderSummary.OrderNbr.Value;
    }
    catch (Exception ex)
    {
        PXTrace.WriteError("Error adding Sales Order - " + ex.Message);
    }
    return acumaticaSONbr;

2 个答案:

答案 0 :(得分:1)

        Content SO301000 = context.GetSchema();
        context.Clear();
        Content[] result = context.Submit(
            new Command[]{
                new Value { Value = "000586", LinkedCommand = SO301000.OrderSummary.OrderNbr, Commit = true },
                new Value { Value = "NoteText", LinkedCommand = SO301000.OrderSummary.NoteText, Commit = true },
                SO301000.Actions.Save
            }
        );

答案 1 :(得分:0)

另一种方法是在销售订单本身的第一次插入内。 由acumember发布的示例需要第二次调用API。 由于我们一次插入许多销售订单,因此我们希望限制我们的通话。 所以以下内容也有效,只需要一次调用。

感谢

        try
        {
            cmds.AddRange(
                new SO301000_509.Command[]
            {
                so301000.Actions.Insert,
                        new SO301000_509.Value { Value = "SO", LinkedCommand = so301000.OrderSummary.OrderType },
                        new SO301000_509.Value { Value = "='new'", LinkedCommand = so301000.OrderSummary.OrderNbr },
                        new SO301000_509.Value { Value = dealerOrder.accountCode, LinkedCommand = so301000.OrderSummary.Customer },
                        new SO301000_509.Value { Value = (dealerOrder.orderDateTime), LinkedCommand = so301000.OrderSummary.Date },
                        new SO301000_509.Value { Value = "Hubsoft Order Nbr: " + dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.Description },
                        new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerRef },
                        new SO301000_509.Value { Value = "HS-" + dealerOrder.purchaseOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerOrder },

                        **new SO301000_509.Value { Value = dealerOrder.notes, LinkedCommand = so301000.OrderSummary.NoteText},**

                        new SO301000_509.Value { Value = "1", LinkedCommand = so301000.ShippingSettingsShipToInfo.OverrideAddress },
                        new SO301000_509.Value { Value = shipStreet1, LinkedCommand = so301000.ShippingSettingsShipToInfo.AddressLine1 },
                        new SO301000_509.Value { Value = shipStreet2, LinkedCommand = so301000.ShippingSettingsShipToInfo.AddressLine2 },
                        new SO301000_509.Value { Value = shipCity, LinkedCommand = so301000.ShippingSettingsShipToInfo.City },
                        new SO301000_509.Value { Value = shipState, LinkedCommand = so301000.ShippingSettingsShipToInfo.State },
                        new SO301000_509.Value { Value = shipCountry, LinkedCommand = so301000.ShippingSettingsShipToInfo.Country },
                        new SO301000_509.Value { Value = shipPostal, LinkedCommand = so301000.ShippingSettingsShipToInfo.PostalCode },
            }
            );
            //create the sales order lines in loop
            for (var idx = 0; idx < SalesOrderLine.Length; idx++)
            {
                cmds.AddRange(
                    new SO301000_509.Command[]
                {
                    so301000.DocumentDetails.ServiceCommands.NewRow,
                        //simple line adding
                        so301000.DocumentDetails.ServiceCommands.NewRow,
                        new SO301000_509.Value { Value = SalesOrderLine[idx].inventoryCD, LinkedCommand = so301000.DocumentDetails.InventoryID },
                        new SO301000_509.Value { Value = SalesOrderLine[idx].UOM, LinkedCommand = so301000.DocumentDetails.UOM },
                        new SO301000_509.Value { Value = SalesOrderLine[idx].Qty, LinkedCommand = so301000.DocumentDetails.Quantity },
                        new SO301000_509.Value { Value = "MAIN", LinkedCommand = so301000.DocumentDetails.Warehouse},                        
                        new SO301000_509.Value { Value = SalesOrderLine[idx].UnitPrice, LinkedCommand = so301000.DocumentDetails.UnitPrice, Commit = true },
                }
                );
            }
            cmds.Add(so301000.Actions.Save);                                                    //save all
            cmds.Add(so301000.OrderSummary.OrderNbr);                                           //return Order #