次のコードを使用して、既存の 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.
Google でかなりの量を掘り下げた後、いくつかのことを発見しました。
- 「taSopLotAuto」は、ロットを自動的に満たそうとする販売注文処理コンポーネント内の eConnect プロシージャです。ロットが自動的に満たされることを望まないため、コードで手動でロットを埋めようとしています。また、CreateSalesInvoice ポリシーを自動ロット フルフィルメントから GP Web サービス ユーザーの手動ロット フルフィルメントに変更しましたが、どの eConnect プロシージャが呼び出されるかは変わりませんでした。
- 「@I_vLNITMSEQ」は LineSequenceNumber を参照します。(ロット自体の) LineSequenceNumber と SequenceNumber は一致する必要があります。私の場合、どちらもデフォルトの 16384 です。このパラメーターは上記のコードで設定されているだけでなく、サーバーが処理しようとした SOAP メッセージにも表示されますが、「提供されない」ことはほとんどありません。
明細なしの請求書を問題なく作成できますが、明細を追加すると失敗します。明らかに存在するパラメーターが欠落しているというエラーが表示される理由がわかりません。
Dynamics GP 10.0 Web サービスを使用して SalesInvoice を正常に作成する方法について何かアイデアはありますか?