通过Acumatica Web服务创建SO时遇到以下错误。以下是错误和样本编码。
PX.Data.PXException: Error #289: The button Save is disabled.
SO301000Content soSchema = context.SO301000GetSchema();
var commands = new List<Acumatica_LSOne_Integration.SALES.Command>();
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = vType, LinkedCommand = soSchema.OrderSummary.OrderType});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = vCustomer, LinkedCommand = soSchema.OrderSummary.Customer});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = TransDate.ToLongTimeString(), LinkedCommand = soSchema.OrderSummary.Date});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = TransDate.ToLongTimeString(), LinkedCommand = soSchema.OrderSummary.RequestedOn});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = "X",LinkedCommand = soSchema.OrderSummary.Project});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = APaymentMethod,LinkedCommand = soSchema.PaymentSettings.PaymentMethod});
commands.Add(new Acumatica_LSOne_Integration.SALES.Value
{Value = "FROM LSOne TransactionID: " + vRecordID + " ReceiptID: " + vReceiptID,LinkedCommand = soSchema.OrderSummary.Description});
commands.Add(soSchema.Actions.Save);
commands.Add(soSchema.OrderSummary.OrderNbr);
context.SO301000Submit(commands.ToArray());
答案 0 :(得分:0)
问题发生的原因是您正在设置其中一个关键字段OrderType,而不是表示您要添加记录。当从用户界面执行此操作时,系统会将屏幕放在记录上,但在通过Web服务调用时,它似乎不会自动发生。
您可以在设置OrderType后添加soSchema.Actions.Insert
,也可以传入虚拟OrderNbr,例如:new SO301000.Value { Value = "<NEW>", LinkedCommand = soSchema.OrderSummary.OrderNbr }
最后,提醒一句 - 您正在使用ToLongTimeString()
转换TransDate字段而不指定文化。如果您的客户端计算机具有与Acumatica服务器不同的区域设置,则最终可能会出错。我建议你改用TransDate.ToString(System.Globalization.CultureInfo.InvariantCulture)
。
答案 1 :(得分:0)
您是否尝试一次创建一个订单?或者你有多个线程来做这个?
无论如何尝试添加
context.SO301000Clear();
SO301000Content soSchema = context.SO301000GetSchema();
你可以加上Gabriel提到..
SOSchema.Actions.Insert
设置OrderType后。看看这对你有帮助。