我试图通过调用"准备发票"来使用网络API来准备发票。从顶部"行动"销售订单屏幕SO301000上的菜单,然后在发票SO303000上发布此发票,但是,在发票准备成功后,我需要知道发票参考编号才能发布此发票但我找不到办法引用否或从返回信息中验证操作是否成功。我的代码如下:
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订单获取发票参考编号,它有点工作 - 这将是我的另一个问题(只有当我在代码中睡了一些时才有用,否则我仍然无法&# 39;得到新的参考号 - 似乎有一个错误会导致某种延迟),但我会为它创建另一个问题。
感谢。
更新:抱歉,我复制了错误的代码,现在它已经更新。
答案 0 :(得分:0)
好的,
因此,在提交命令后,您可以执行以下操作来检查处理是否已完成。
SO301000Content [] SO30100content = context.SO301000Submit(cmds.ToArray());
var status = context.SO301000GetProcessStatus();
while (status.Status == ProcessStatus.InProcess)
{
status = context.SO301000GetProcessStatus();
}
为了获得准备好的发票编号,我所做的是,我尝试取回销售订单文档并从货件标签中读取发票编号。