我正在尝试使用以下代码根据现有的 SalesOrder 创建一个新的 SalesInvoice:
SalesInvoice invoice = new SalesInvoice();
invoice.DocumentTypeKey = new SalesDocumentTypeKey { Type = SalesDocumentType.Invoice };
invoice.CustomerKey = originalOrder.CustomerKey;
invoice.BatchKey = originalOrder.BatchKey;
invoice.Terms = new SalesTerms { DiscountTakenAmount = new MoneyAmount { Value = 0, Currency = "USD", DecimalDigits = 2 }, DiscountAvailableAmount = new MoneyAmount { Value = 0, Currency = "USD", DecimalDigits = 0 } };
invoice.OriginalSalesDocumentKey = originalOrder.Key;
List<SalesInvoiceLine> lineList = new List<SalesInvoiceLine>();
for (int i = 0; i < originalOrder.Lines.Length; i++)
{
SalesInvoiceLine line = new SalesInvoiceLine();
line.ItemKey = originalOrder.Lines[i].ItemKey;
line.Key = new SalesLineKey { LineSequenceNumber = originalOrder.Lines[i].Key.LineSequenceNumber; }
SalesLineLot lot = new SalesLineLot();
lot.LotNumber = originalOrder.Lines[i].Lots[0].LotNumber;
lot.Quantity = new Quantity { Value = 2200 };
lot.Key = new SalesLineLotKey { SequenceNumber = originalOrder.Lines[i].Lots[0].Key.SequenceNumber };
line.Lots = new SalesLineLot[] { lot };
line.Quantity = new Quantity { Value = 2200 };
lineList.Add(line);
}
invoice.Lines = lineList.ToArray();
DynamicsWS.CreateSalesInvoice(invoice, DynamicsContext, DynamicsWS.GetPolicyByOperation("CreateSalesInvoice", DynamicsContext));
执行时,我收到以下错误:
SQL Server Exception: Operation expects a parameter which was not supplied.
以及来自 Dynamics 异常控制台的更详细的异常:
Procedure or function 'taSopLotAuto' expects parameter '@I_vLNITMSEQ',
which was not supplied.
在通过谷歌大量挖掘之后,我发现了一些东西。
- 'taSopLotAuto' 是销售订单处理组件中的一个 eConnect 程序,它尝试自动填充批次。我不希望自动填充批次,这就是为什么我尝试在代码中手动填充它们。我还为 GP Web 服务用户将 CreateSalesInvoice 策略从自动批次履行修改为手动批次履行,但这并没有改变调用的 eConnect 过程。
- '@I_vLNITMSEQ' 指的是 LineSequenceNumber。LineSequenceNumber 和 SequenceNumber(批次本身的)必须匹配。在我的例子中,它们都是默认值:16384。不仅在上面的代码中设置了这个参数,而且它还出现在服务器试图处理的 SOAP 消息中——几乎没有“未提供”。
我可以毫不费力地创建没有行项目的发票,但如果我添加行项目它会失败。我不明白为什么我会收到明显存在的缺失参数的错误。
关于如何通过 Dynamics GP 10.0 Web 服务成功创建 SalesInvoice 的任何想法?