通过 WEB SERVICE 创建 SO 时 Acumatica 出错
Acumatica Error in Creating SO via WEB SERVICE
我在通过 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());
出现该问题是因为您正在设置关键字段之一 OrderType,但未指示您要添加记录。从用户界面执行此操作时,系统会将屏幕放在记录上,但在通过 Web 服务调用时似乎不会自动发生。
您可以在设置订单类型后添加soSchema.Actions.Insert
,或者您可以传入一个虚拟的OrderNbr,例如:new SO301000.Value { Value = "<NEW>", LinkedCommand = soSchema.OrderSummary.OrderNbr }
最后,提醒一句 - 您正在使用 ToLongTimeString()
转换 TransDate 字段,但未指定区域性。如果您的客户端计算机具有与 Acumatica 服务器不同的区域设置,您可能会遇到错误。我建议您改用 TransDate.ToString(System.Globalization.CultureInfo.InvariantCulture)
。
您是否尝试一次创建一个订单?还是您有多个线程来执行此操作?
无论如何尝试添加
context.SO301000Clear();
SO301000Content soSchema = context.SO301000GetSchema();
您可以添加为 Gabriel 提到的..
SOSchema.Actions.Insert
设置订单类型后。看看对你有没有帮助。
我在通过 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());
出现该问题是因为您正在设置关键字段之一 OrderType,但未指示您要添加记录。从用户界面执行此操作时,系统会将屏幕放在记录上,但在通过 Web 服务调用时似乎不会自动发生。
您可以在设置订单类型后添加soSchema.Actions.Insert
,或者您可以传入一个虚拟的OrderNbr,例如:new SO301000.Value { Value = "<NEW>", LinkedCommand = soSchema.OrderSummary.OrderNbr }
最后,提醒一句 - 您正在使用 ToLongTimeString()
转换 TransDate 字段,但未指定区域性。如果您的客户端计算机具有与 Acumatica 服务器不同的区域设置,您可能会遇到错误。我建议您改用 TransDate.ToString(System.Globalization.CultureInfo.InvariantCulture)
。
您是否尝试一次创建一个订单?还是您有多个线程来执行此操作?
无论如何尝试添加
context.SO301000Clear();
SO301000Content soSchema = context.SO301000GetSchema();
您可以添加为 Gabriel 提到的..
SOSchema.Actions.Insert
设置订单类型后。看看对你有没有帮助。