【问题标题】:Screen based API creation of PO receipt from POLine issue基于屏幕的 API 从 POLine 问题创建 PO 收据
【发布时间】:2017-02-16 10:22:58
【问题描述】:

我们正在尝试使用“添加采购订单行”智能面板将采购订单行添加到收据文档。下面是代码,但它总是选择前 2 行而不是命令中指定的键。

//select lines from smart panel
foreach (POReceiptLine line in POReceiptlines.OrderBy(x => x.LineNum))
{
    AcumaticaInterface.apitest.Command[] Docline = new AcumaticaInterface.apitest.Command[]
                {                     
                    new Key
                    {
                        ObjectName = PORcptSchema.AddPurchaseOrderLine.OrderNbr.ObjectName,
                        FieldName = PORcptSchema.AddPurchaseOrderLine.OrderNbr.FieldName,
                        Value = "='" + line.BaseDocNum + "'",
                        Commit =true
                    },
                    new Key
                    {
                        ObjectName = PORcptSchema.AddPurchaseOrderLine.LineNbr.ObjectName,
                        FieldName = PORcptSchema.AddPurchaseOrderLine.LineNbr.FieldName,
                        Value = "='" + line.BaseLineNum + "'",
                        Commit =true
                    },              
                    new Value 
                    {
                        Value = "True", 
                        LinkedCommand = PORcptSchema.AddPurchaseOrderLine.Selected, 
                        Commit = true 
                    }  
                };
                Document = Document.Concat(Docline).ToArray();
            }

    // Add PO line and retrieve back the added lines.
    var addPOLine = new Command[]
                        {                             
                            addPOLineWithCommit,
                            ////get back the added lines in the grid
                            PORcptSchema.DocumentDetails.POOrderNbr,
                            PORcptSchema.DocumentDetails.POLineNbr
                        };
            Document = Document.Concat(addPOLine).ToArray();

            var receiptLines = context.PO302000Submit(Document);

我们正在尝试选择订单 Nbr '000014' [Line Nbr(1,2)] 的行,但添加的行是订单 Nbr '000012' [Line Nbr(1,2)] 的行。请帮忙。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    解决方法是清除AddPurchaseOrderLine.Selected字段默认设置的LinkedCommand:

    receiptSchema.AddPurchaseOrderLine.Selected.LinkedCommand = null;
    

    下面是完整的 SOAP 请求,它允许通过基于屏幕的 API 在 Add Purchase Order Line 弹出窗口中定位和选择记录:

    Content receiptSchema = context.GetSchema();
    
    receiptSchema.Actions.AddPOOrderLine.Commit = true;
    receiptSchema.Actions.AddPOOrderLine2.Commit = true;
    
    receiptSchema.AddPurchaseOrderLine.Selected.LinkedCommand = null;
    
    var commands = new Command[]
    {
        new Value
        {
            Value = "Receipt",
            LinkedCommand = receiptSchema.DocumentSummary.Type
        },
    
        new Value
        {
            Value = "PR000416",
            LinkedCommand = receiptSchema.DocumentSummary.ReceiptNbr
        },
    
        new Value
        {
            Value = "OK",
            LinkedCommand = receiptSchema.AddPurchaseOrderLine.ServiceCommands.DialogAnswer,
            Commit = true
        },
    
        receiptSchema.Actions.AddPOOrderLine,
    
        new Key
        {
            ObjectName = receiptSchema.AddPurchaseOrderLine.OrderNbr.ObjectName,
            FieldName = receiptSchema.AddPurchaseOrderLine.OrderNbr.FieldName,
            Value = "='PO000483'"
        },
        new Key
        {
            ObjectName = receiptSchema.AddPurchaseOrderLine.LineNbr.ObjectName,
            FieldName = receiptSchema.AddPurchaseOrderLine.LineNbr.FieldName,
            Value = "='1'"
        },
        new Value
        {
            Value = "True",
            LinkedCommand = receiptSchema.AddPurchaseOrderLine.Selected
        },
    
        new Key
        {
            ObjectName = receiptSchema.AddPurchaseOrderLine.OrderNbr.ObjectName,
            FieldName = receiptSchema.AddPurchaseOrderLine.OrderNbr.FieldName,
            Value = "='PO000483'"
        },
        new Key
        {
            ObjectName = receiptSchema.AddPurchaseOrderLine.LineNbr.ObjectName,
            FieldName = receiptSchema.AddPurchaseOrderLine.LineNbr.FieldName,
            Value = "='2'"
        },
        new Value
        {
            Value = "True",
            LinkedCommand = receiptSchema.AddPurchaseOrderLine.Selected
        },
        receiptSchema.Actions.AddPOOrderLine2,
    
        receiptSchema.Actions.Save
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 2011-07-10
      相关资源
      最近更新 更多