【发布时间】:2018-02-03 14:11:15
【问题描述】:
在为销售订单屏幕创建 GI 时,我想在文档详细信息选项卡中显示总行数。任何人都可以建议一种方法来开始实施这个吗?
在 GI 中包含自定义字段后,它不会用数据填充列。
打印行数的代码如下,Adding custom button in acumatica 也有讨论
public void SOOrder_UsrTotalTransactions_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
{
e.ReturnValue = GetTotalTransactions(sender);
}
// Update values
public void SOLine_RowDeleted(PXCache sender, PXRowDeletedEventArgs e)
{
UpdateTotals(sender, e.Row as SOOrder, true);
}
public void SOLine_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
UpdateTotals(sender, e.Row as SOOrder, true);
}
public void SOLine_OrderQty_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
UpdateTotals(sender, e.Row as SOOrder, false);
}
public void UpdateTotals(PXCache sender, SOOrder soOrder, bool isUpdateTranCount)
{
// Get SOOrder DAC extension
if (soOrder != null)
{
SOOrderExt soOrderExt = sender.GetExtension<SOOrderExt>(soOrder);
if (soOrderExt != null)
{
if (isUpdateTranCount)
{
sender.SetValueExt<SOOrderExt.usrTotalTransactions>(soOrder, GetTotalTransactions(sender));
}
}
}
}
public int? GetTotalTransactions(PXCache sender)
{
return Base.Transactions.Select().Count();
}
}
}
DAC 代码为: [PXDBInt] [PXUIField(DisplayName="Total Lines", Enabled = false)]
【问题讨论】:
-
它不起作用的原因是 GI 只使用 DAC,如果您在另一个图表中设置未绑定字段或在 dac 中引用另一个图表,它将在 GI 中不起作用,这是它的自己的图。也许使用某种类型的 PXProjection 或 PXDBCalc 字段。替代方法是将值简单地存储到字段中并保存到销售订单图中的数据库中。
-
您能解释一下如何将值存储在数据库中吗?我创建的自定义确实显示了值,但它没有保存在数据库中......它显示为 NULL
-
您需要找到正确的触发器...也许持久化覆盖将是最简单的,在调用基本持久性之前检查行数(注意删除仍包含在计数中)并更新您的订单 UsrRowCount价值。
-
您能提供帮助回答问题的代码吗? - 将其包含在问题中 - 如果可以请不要发表评论
-
我已经用代码编辑了我的问题...
标签: acumatica