我正在使用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();
}
}
}
}
答案 0 :(得分:0)
我测试了您的代码并且工作正常 - 系统为所请求仓库的项目准备补货计划,并且响应对象包含如果您使用参数打开Prepare Replenishment屏幕时列出的所有项目你设定。如果您想通过电子邮件将URL和凭证发送到您的网站(gmichaud at acumatica),我可以看看有什么问题。
请注意,您不需要为这两个字段显式设置Commit = true
(架构对象已将它们设置为true)。我还建议在循环中添加System.Threading.Thread.Sleep(1000)
,以避免在处理请求时锤击服务器。