通过 Web API 从 "Actions" 菜单调用 "Prepare Invoice" 操作后,我能否获得发票参考号?
Can I get invoice reference number after calling "Prepare Invoice" action from "Actions" menu through web API?
我尝试使用网络 API 通过调用 "Prepare Invoice" 销售订单屏幕 SO301000 顶部 "Actions" 菜单来准备发票,然后在发票 SO303000 上发布此发票,但是,在发票准备成功后,我需要知道发票参考号才能开具此发票,但我无法找到获取此参考号的方法或无法从 return 验证操作是否成功信息。我的代码如下:
SO301000Content SO301000 = context.SO301000GetSchema();
context.SO301000Clear();
SO301000.Actions.PrepareInvoiceAction.Commit = true;
List<Command> cmds = new List<Command>();
cmds.Add(new Value { Value = soType, LinkedCommand = SO301000.OrderSummary.OrderType});
cmds.Add(new Value { Value = soNbr, LinkedCommand = SO301000.OrderSummary.OrderNbr });
cmds.Add(new Value { Value = customerCD, LinkedCommand = SO301000.OrderSummary.Customer, Commit = true });
cmds.Add(new Value { Value = customerLocation, LinkedCommand = SO301000.OrderSummary.Location});
cmds.Add(SO301000.Actions.PrepareInvoiceAction);
cmds.Add(SO301000.Actions.Save);
SO301000Content[] SO30100content = context.SO301000Submit(cmds.ToArray());
//Check whether invoice is successfully prepared and return reference No if it's successful.
Thread.Sleep(2000);
List<InvoiceInfo> InvoiceList = this.GetInvoiceInfoBySO(soNbr);
if (InvoiceList.Count > 0)
{
//successful
}
else
{
.....//failed
}
有人知道如何验证操作是否成功,最好以某种方式获得发票参考号吗?
现在我调用了一个通用查询以根据 SO 订单号获取发票参考号,它有点奏效了 - 这将是我的另一个问题(只有当我在代码中睡觉时它才有效,否则我仍然无法获得新的参考号 - 似乎存在导致某种延迟的错误),但我会为此创建另一个问题。
谢谢。
更新:抱歉,我复制错了代码,现在已经更新了。
好的,
因此在您提交命令后,您可以执行以下操作来检查处理是否完成。
SO301000Content[] SO30100content = context.SO301000Submit(cmds.ToArray());
var status = context.SO301000GetProcessStatus();
while (status.Status == ProcessStatus.InProcess)
{
status = context.SO301000GetProcessStatus();
}
为了获取准备好的发票编号,我所做的是,我尝试取回销售订单文档并从发货选项卡中读取发票编号。
我尝试使用网络 API 通过调用 "Prepare Invoice" 销售订单屏幕 SO301000 顶部 "Actions" 菜单来准备发票,然后在发票 SO303000 上发布此发票,但是,在发票准备成功后,我需要知道发票参考号才能开具此发票,但我无法找到获取此参考号的方法或无法从 return 验证操作是否成功信息。我的代码如下:
SO301000Content SO301000 = context.SO301000GetSchema();
context.SO301000Clear();
SO301000.Actions.PrepareInvoiceAction.Commit = true;
List<Command> cmds = new List<Command>();
cmds.Add(new Value { Value = soType, LinkedCommand = SO301000.OrderSummary.OrderType});
cmds.Add(new Value { Value = soNbr, LinkedCommand = SO301000.OrderSummary.OrderNbr });
cmds.Add(new Value { Value = customerCD, LinkedCommand = SO301000.OrderSummary.Customer, Commit = true });
cmds.Add(new Value { Value = customerLocation, LinkedCommand = SO301000.OrderSummary.Location});
cmds.Add(SO301000.Actions.PrepareInvoiceAction);
cmds.Add(SO301000.Actions.Save);
SO301000Content[] SO30100content = context.SO301000Submit(cmds.ToArray());
//Check whether invoice is successfully prepared and return reference No if it's successful.
Thread.Sleep(2000);
List<InvoiceInfo> InvoiceList = this.GetInvoiceInfoBySO(soNbr);
if (InvoiceList.Count > 0)
{
//successful
}
else
{
.....//failed
}
有人知道如何验证操作是否成功,最好以某种方式获得发票参考号吗?
现在我调用了一个通用查询以根据 SO 订单号获取发票参考号,它有点奏效了 - 这将是我的另一个问题(只有当我在代码中睡觉时它才有效,否则我仍然无法获得新的参考号 - 似乎存在导致某种延迟的错误),但我会为此创建另一个问题。
谢谢。
更新:抱歉,我复制错了代码,现在已经更新了。
好的,
因此在您提交命令后,您可以执行以下操作来检查处理是否完成。
SO301000Content[] SO30100content = context.SO301000Submit(cmds.ToArray());
var status = context.SO301000GetProcessStatus();
while (status.Status == ProcessStatus.InProcess)
{
status = context.SO301000GetProcessStatus();
}
为了获取准备好的发票编号,我所做的是,我尝试取回销售订单文档并从发货选项卡中读取发票编号。