Acumatica 自定义流程发货从 PO 收据添加分支字段

Acumatica Customize Process Shipments Add branch field from PO Receipts

我正在尝试确定是否可以在 select 编辑“准备直运发票”操作时向 PO 收据的“处理发货”屏幕上的网格添加字段。具体来说,我想添加 POReceipts.BranchID 字段。

我研究了源代码,我看到不同的 select 命令在哪里 运行 基于 selected 操作,但我不明白是什么驱动了网格以显示不同的列集。

我查看了自定义编辑器中的屏幕设计器,但没有看到不同的视图或任何其他内容,希望我只是遗漏了一些简单的东西。

谢谢 斯科特

我就是这样解开你的谜团的。首先为 SOShipment 创建一个用户字段。

    #region UsrReceiptBranchID
    [PXInt]
    [PXUIField(DisplayName="Receipt Branch ID")]
    [GL.Branch()]

    public virtual int? UsrReceiptBranchID { get; set; }
    public abstract class usrReceiptBranchID : PX.Data.BQL.BqlInt.Field<usrReceiptBranchID> { }
    #endregion

接下来是关键部分。当过滤器为 Drop-Ship 时,我扩展了数据视图委托,并添加了一个额外的查询来拉取 POReceipt 分支。

    public virtual IEnumerable orders()
    {
        List<SOShipment> records = Base.orders().RowCast<SOShipment>().ToList();
        if (Base.Filter.Current.Action.Contains("Drop"))
        {
            foreach (SOShipment sOShipment in records)
            {
                POReceipt receipt = PXSelect<POReceipt,
                    Where<POReceipt.receiptNbr,
                    Equal<Required<POReceipt.receiptNbr>>>>.Select(Base, sOShipment.ShipmentNbr);
                if (receipt != null)
                {
                    SOShipmentExt shipExt = PXCache<SOShipment>.GetExtension<SOShipmentExt>(sOShipment);
                    shipExt.UsrReceiptBranchID = receipt.BranchID;
                }
            }
            return records;
        }
        else
        {
            return records;
        }
    }