Acumatica在通过WEB服务创建SO时出错

问题描述:

当通过Acumatica Web服务创建SO时,我遇到了以下错误。以下是错误和示例代码。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

你能提供一个代码样本,让我们了解什么是错的? – Gabriel

+0

嗨加布里埃尔,我编辑的帖子,包括样本编码 –

+0

谢谢,现在看看它 – Gabriel

问题发生是因为您正在设置其中一个关键字段OrderType,而不是指示您想要添加记录。当从用户界面执行此操作时,系统会将屏幕放在记录上,但在通过Web服务调用时似乎不会自动发生。

您可以添加soSchema.Actions.Insert您设定的订单类型后,也可以在一个虚拟OrderNbr传递,如:new SO301000.Value { Value = "<NEW>", LinkedCommand = soSchema.OrderSummary.OrderNbr }

最后,提醒一句 - 你与ToLongTimeString()转换TransDate场没有指定的文化。如果您的客户端机器具有与Acumatica服务器不同的区域设置,则最终可能会出现错误。我建议您改用TransDate.ToString(System.Globalization.CultureInfo.InvariantCulture)

+0

谢谢加布里埃尔我会按照你的建议... –

您是否试图一次创建单个订单?或者你有多个线程来做到这一点?

无论如何尝试添加

context.SO301000Clear();

SO301000Content soSchema = context.SO301000GetSchema(); 

,你可以添加加布里埃尔提到..

SOSchema.Actions.Insert 

设置订单类型之后。看看这是否有助于你。