通过 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();
                            }

为了获取准备好的发票编号,我所做的是,我尝试取回销售订单文档并从发货选项卡中读取发票编号。