【问题标题】:Acumatica GI - Inventory Transaction History ScreenAcumatica GI - 库存交易历史屏幕
【发布时间】:2017-08-31 14:29:58
【问题描述】:

我想为库存交易历史屏幕 (IN405000) 创建一个 GI。

由于表 InventoryTranHistEnqResult 不存在于数据库中...此屏幕的少数列取自 INTran 表。

我找不到以下列:BegQty、QtyIn、QtyOut、EndQty...

我还在数据库上尝试了以下查询来查找这些列

SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%EndQty%'

这些字段的 DAC 是:

enter image description here

【问题讨论】:

  • 您需要查看 Acumatica 中的 DAC 以了解它是如何构建的。最好在源代码中搜索字段,而不是在 SQL 中查找任何字段。 GI 建立在 DAC 之上,而不是特别是 SQL,因为 DAC 可能是 PXProjection 或包含未绑定/计算的字段。
  • 我浏览了这些字段的 DAC,但找不到解决方案。所有这些字段的 DAC 是 [PXDBQuantity()] [PXDefault(TypeCode.Decimal, "0.0")] [ PXUIField(DisplayName = "Qty. Out", Visibility = PXUIVisibility.SelectorVisible)]

标签: customization acumatica


【解决方案1】:

在页面图表中查看页面背后的信息将为您提供问题的答案。库存交易历史屏幕 (IN405000) 使用图形 InventoryTranHistEnq。此页面中的网格在以下视图中使用了 DAC InventoryTranHistEnqResult

PXSelectJoin<InventoryTranHistEnqResult,
CrossJoin<INTran>,
Where<True, Equal<True>>,
OrderBy<Asc<InventoryTranHistEnqResult.gridLineNbr>>> ResultRecords

ResultsRecords 使用以下方法在查询中动态构建:

protected virtual IEnumerable resultRecords()
{
    int startRow = PXView.StartRow;
    int totalRows = 0;
    decimal? beginQty = null;

    List<object> list = InternalResultRecords.View.Select(PXView.Currents, PXView.Parameters, new object[PXView.SortColumns.Length], PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows);
    PXView.StartRow = 0;

    foreach (PXResult<InventoryTranHistEnqResult> item in list)
    {
        InventoryTranHistEnqResult it = (InventoryTranHistEnqResult)item;
        it.BegQty = beginQty = (beginQty ?? it.BegQty);
        decimal? QtyIn = it.QtyIn;
        decimal? QtyOut = it.QtyOut;
        beginQty += (QtyIn ?? 0m) - (QtyOut ?? 0m);
        it.EndQty = beginQty;
    }
    return list;
}

所以我想简短的回答是您不能将此页面的结果用于 GI,因为它仅在页面中构建。如果您需要的信息非常重要,您可能希望考虑通过自定义将您需要的内容添加到此历史记录页面,或者制作您自己的此页面/图形/dac 版本。

【讨论】:

  • 好的...所以我尝试在此屏幕中添加一个客户列 (stackoverflow.com/q/45742684/4405230),以显示与特定库存相关的客户 ID...但是在添加数据字段时再次自定义它说 InventoryTranHistEnqResult 表不存在...那么如何向该表添加网格列?
  • 因为它不作为实际表存在,所以您无法添加它。您需要将其添加到另一个确实存在的表中并加入您的 GI
  • 如果我想在此库存交易历史屏幕中添加一列怎么办?由于表格不存在无法完成...有没有办法可以在此屏幕上添加另一个表格?
  • 您可能可以编写一个表扩展名(未绑定)并覆盖 IEnumerable resultRecords() 以添加您的值
  • 好的...我会尝试创建一个未绑定的字段
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多