通过WEB SERVICE创建SO的Acumatica错误

时间:2015-05-29 04:05:14

标签: web-services acumatica

通过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());

2 个答案:

答案 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后

。看看这对你有帮助。