Acumatica Prepare Replenishment Screen ProcessAll Action无法正常工作

时间:2016-09-07 18:24:36

标签: c# soap acumatica

我正在使用Acumatica 5.30.1672并使用屏幕IN508000的SOAP API尝试运行Prepare Replenishment流程。我正在设置WarehouseID以便我准备补货。 API调用在response对象中返回正确的InventoryID,但是当我告诉ProcessAll时,它不是。没有错误,只是没有处理。我觉得我在这里错过了一些微不足道的东西,但我却看不到它。当我使用GUI执行此操作时,一切都运行良好。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AcumaticaTest.AcumaticaWebReference;

namespace AcumaticaTest
{
    class Program
    {
        static void Main(string[] args)
        {

            Screen context = new Screen();
            context.CookieContainer = new System.Net.CookieContainer();
            context.Timeout = 1200000;

            context.Url = "url to SOAP API Endpoint";
            LoginResult lresult = context.Login("<username>", "<password>");


            IN508000Content IN508000 = context.IN508000GetSchema();
            context.IN508000Clear();

            var commands = new Command[]
                                {
                                        new Value {Value = "<WarehouseID>", LinkedCommand = IN508000.Selection.Warehouse, Commit= true },
                                        new Value {Value = "false", LinkedCommand = IN508000.Selection.Me, Commit= true },
                                        IN508000.ItemsRequiringReplenishment.InventoryID,
                                        IN508000.Actions.ProcessAll
                                };
            var response = context.IN508000Submit(commands);

            var status = context.IN508000GetProcessStatus();
            while (status.Status == ProcessStatus.InProcess)
            {
                status = context.IN508000GetProcessStatus();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我测试了您的代码并且工作正常 - 系统为所请求仓库的项目准备补货计划,并且响应对象包含如果您使用参数打开Prepare Replenishment屏幕时列出的所有项目你设定。如果您想通过电子邮件将URL和凭证发送到您的网站(gmichaud at acumatica),我可以看看有什么问题。

请注意,您不需要为这两个字段显式设置Commit = true(架构对象已将它们设置为true)。我还建议在循环中添加System.Threading.Thread.Sleep(1000),以避免在处理请求时锤击服务器。