【问题标题】:Dynamics Navision 2017 - Insert Sales Order using Web ServicesDynamics Navision 2017 - 使用 Web 服务插入销售订单
【发布时间】:2018-09-18 22:48:57
【问题描述】:

我们有 Navision Dynamics 2017,其中将销售订单公开为 SOAP Web 服务。从技术上讲,我应该能够通过这个网络服务创建销售订单。

我们还有另一个用 C# .NET 构建的系统,其中包含需要进入 Navision 的员工销售订单。该订购系统包含客户、商品、数量、价格等所有信息,以便能够在 Navision 中创建有效订单。

谁能告诉我如何调用该服务并从员工销售订单系统创建一个销售标题和行到 Navision..

最好有一个演练教程。我已经搜索过,但似乎找不到我可以关注的人

【问题讨论】:

    标签: web-services c#-4.0 soap navision dynamics-nav


    【解决方案1】:

    NAV 服务的经典“goto”始终是以下博客文章,尽管它是 PHP 的示例。考虑到 NAV 中需要进行更改才能与服务交互(提示:激活 NTLM):

    现在有同一作者的更新版本,补充原帖:

    C# 示例:

    完成销售订单的示例:

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        这是我在使用 .NET Core 5 开发的其余 API 中所做的,我创建了 2 个页面(一个用于销售标题,一个用于销售行)和一个用于调用 NAV 计算折扣操作的代码单元。

        [Route("order")]
        [HttpPost]
        private async Task<dynamic> createOrder(orderDTO request)
            {
                var systemService = this.OrderServiceProvider.GetProxy();
                List<OrderServiceReference.Sales_Quote_Line> lineList = new List<OrderServiceReference.Sales_Quote_Line>();
                foreach (OrderLine orderLine in request.Sales_Quote_Line)
                {
                    Sales_Quote_Line line = new Sales_Quote_Line()
                    {
                        Type = OrderServiceReference.Type.Item,
                        TypeSpecified = true,
                        No = orderLine.No,
                        Quantity = orderLine.Quantity,
                        QuantitySpecified = true
                    };
                    lineList.Add(line);
                }
                var task = await systemService.CreateAsync(new OrderServiceReference.Create()
                {
                    Dis_SQ = new Dis_SQ()
                    {
                        Salesperson_Code = request.Salesperson_Code,
                        Sell_to_Customer_No = request.Sell_to_Customer_No,
                        Order_Date = new DateTime(),
                        SalesLines = lineList.ToArray()
                    }
                });
                var salesQuotes = task.Dis_SQ;
                // var systemService2 = new DiscountServiceReference.Dis_Discount_Cal_PortClient();
                var calculateSystemWebService = this.CalculateDiscountServiceProvider.GetProxy();
                await calculateSystemWebService.CalcOffersSHAsync(new CalcOffersSH()
                {
                    Body = new CalcOffersSHBody()
                    {
                        pDocNo = salesQuotes.No,
                        pDocType = 0
                    }
                });
                // get sales lines
                var systemService1 = this.OrderLinesServiceProvider.GetProxy();
                var task1 = await systemService1.ReadMultipleAsync(new SalesOrderServiceReference.ReadMultiple()
                {
                    filter = new HHT_SO_Filter[]
                    {
                        new HHT_SO_Filter()
                        {
                            Criteria = salesQuotes.No,
                            Field = HHT_SO_Fields.Document_No
                        }
                    },
                    bookmarkKey = "",
                    setSize = 200
                });
                return new
                {
                    sales_header = task.Dis_SQ,
                    sales_line = task1.ReadMultiple_Result1
                };
         }
        

        如果您需要更多帮助,请在下方评论。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-29
          • 1970-01-01
          • 2021-05-28
          • 1970-01-01
          • 1970-01-01
          • 2021-01-14
          • 2021-01-01
          相关资源
          最近更新 更多