【发布时间】:2021-09-17 09:40:56
【问题描述】:
我试图弄清楚是否可以在选择“准备档案发票”操作时,是否可以将字段添加到流程运输屏幕上的网格中。具体来说,我想添加 POReceipts.BranchID 字段。
我研究了源代码,并看到了根据所选操作运行不同选择命令的位置,但我不明白是什么驱动网格显示不同的列集。
我在自定义编辑器中查看了屏幕设计器,但没有看到不同的视图或任何东西,希望我只是遗漏了一些简单的东西。
谢谢 斯科特
【问题讨论】:
标签: acumatica
我试图弄清楚是否可以在选择“准备档案发票”操作时,是否可以将字段添加到流程运输屏幕上的网格中。具体来说,我想添加 POReceipts.BranchID 字段。
我研究了源代码,并看到了根据所选操作运行不同选择命令的位置,但我不明白是什么驱动网格显示不同的列集。
我在自定义编辑器中查看了屏幕设计器,但没有看到不同的视图或任何东西,希望我只是遗漏了一些简单的东西。
谢谢 斯科特
【问题讨论】:
标签: acumatica
这就是我解开你的谜团的方法。首先为 SOSshipment 创建一个用户字段。
#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;
}
}
【讨论】: