【问题标题】:How to Create a Purchase Receipt with Document Details via code如何通过代码创建带有文档详细信息的采购收据
【发布时间】:2018-09-01 10:08:35
【问题描述】:

目标是创建一个采购订单,然后通过带有 2 个单独操作/按钮的代码创建相应的采购订单收据。

PO(普通类型)的创建没有任何问题。然后通过代码获得批准,使其在采购收据页面的“添加采购订单”智能面板中可见。

UI 工作流程是选择采购订单,然后按“添加采购订单”。

我希望通过代码复制它。

查看页面的 ASPX 定义,我可以看到智能面板按钮与操作相关联AddPOOrder2

我正在创建这样的购买收据:

 if (orderRecord.Approved == true)
{
    poReceiptEntryGraph = PXGraph.CreateInstance<POReceiptEntry>();

    receiptRow = new POReceipt();

    //Summary
    receiptRow.ReceiptType = "RT";
    receiptRow = poReceiptEntryGraph.Document.Insert(receiptRow);

    receiptRow.Hold = false;
    receiptRow.ReceiptDate = DateTime.Now;
    receiptRow.VendorID = orderRecord.VendorID;
    receiptRow.InvoiceNbr = "123";
    poReceiptEntryGraph.Document.Update(receiptRow);

    poReceiptEntryGraph.Actions.PressSave();

然后我创建一个 PXView:

int startActualRow = PXView.StartRow;
int totalActualRows = 1;

List<Object> createdView = new PXView(poReceiptEntryGraph, false, PXSelect<POOrder, Where<POOrder.orderNbr, Equal<Required<POOrder.orderNbr>>>>
    .GetCommand()).Select(PXView.Currents, /*Filter value from the BQL Required*/ new object[] { "PO000683"/*orderRecord.OrderNbr*/ },
    PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters,
    ref startActualRow, PXView.MaximumRows, ref totalActualRows);

PXView dummyActualView = new DummyView(poReceiptEntryGraph, poReceiptEntryGraph.Document.View.BqlSelect, createdView);

最后,使用 PXView 按下 AddPOOrder2 动作:

poReceiptEntryGraph.addPOOrder2.Press(new PXAdapter(dummyActualView));
poReceiptEntryGraph.Actions.PressSave();

未收到错误消息,收据的摘要部分已正确创建,但网格中没有任何内容。

我还尝试使用 addPOOrder,这是另一个执行 addPOOrder2 的 Acumatica 操作,但结果相同。

如果我遗漏了什么,有什么想法吗?

谢谢。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    我找到了解决方案。

    Acumatica 的 AddPOOrder2 操作迭代选定的记录并调用方法 AddPurchaseOrder

    在我的操作中直接调用该方法工作正常:

    if (orderRecord.Approved == true)
    
    {
        poReceiptEntryGraph = PXGraph.CreateInstance<POReceiptEntry>();
        receiptRow = new POReceipt();
    
        receiptRow.ReceiptType = "RT";
        receiptRow = poReceiptEntryGraph.Document.Insert(receiptRow);
    
        receiptRow.Hold = false;
        receiptRow.ReceiptDate = DateTime.Now;
        receiptRow.VendorID = orderRecord.VendorID;
        poReceiptEntryGraph.Document.Update(receiptRow);
    
        poReceiptEntryGraph.Actions.PressSave();
    
        poReceiptEntryGraph.AddPurchaseOrder(orderRecord);
    
        poReceiptEntryGraph.Actions.PressSave();
        }
    

    但是,我想知道,如果不存在该方法,我是否在使用 PXView 和 PXAdapter 的正确路径上?是否可以执行其他可能没有方法的类似动作?

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 2022-11-10
      • 2017-05-31
      • 2018-06-14
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多