【问题标题】:Acumatica - PXDBScalar with calculationAcumatica - 具有计算功能的 PXDBScalar
【发布时间】:2019-07-05 16:55:33
【问题描述】:

我正在寻找为 ARTran 表添加一个计算字段,它将 Qty 转换为指定的通用 UOM。

通常我会使用计算属性之一,但我不确定如何将操作数添加到 Search 查询。理想的逻辑是

Search2<Mult<ARTran.baseQty, INUnit.unitRate>, 
     InnerJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<ARTran.inventoryID>>,
     InnerJoin<INUnit, On<INUnit.fromUnit, Equal<InventoryItem.baseUnit>, And<INUnit.toUnit, Equal<InventoryItem.purchaseUnit>>>>>,

如果做不到这一点,我一直在尝试编写一个属性,该属性将订阅 RowSelected 事件来计算值。这在 Invoices 屏幕上可以正常工作,但是当在 GI 中使用 DAC 时,调用 RowSelected 事件时行数据为空。

任何一种解决方案的帮助都会很棒。

谢谢

【问题讨论】:

    标签: .net acumatica


    【解决方案1】:

    困难在于每种记录选择方法都有其自身的局限性。

    您可以将PXFormula 用于Mult 子句,但不能用于Join 子句。

    您可以将PXDBScalar 用于Join 子句,但不能用于Mult 子句。

    这种不一致很麻烦,但您可以使用 2 个自定义字段来绕过限制,同时使用 PXFormulaPXDBScalar

    using PX.Data;
    using PX.Objects.IN;
    using System;
    
    namespace PX.Objects.AR
    {
        public class ARTranExt : PXCacheExtension<ARTran>
        {
            #region UsrUniversalUOM 
            [PXDecimal]
            [PXFormula(typeof(Mult<ARTran.baseQty, usrUnitRate>))]
            [PXUIField(DisplayName = "Universal UOM")]
            public virtual Decimal? UsrUniversalUOM { get; set; }
            public abstract class usrUniversalUOM : IBqlField { }
            #endregion
    
            #region UsrUnitRate
            [PXDBScalar(typeof(Search2<INUnit.unitRate,
                               InnerJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<ARTran.inventoryID>>>,
                               Where<INUnit.inventoryID, Equal<ARTran.inventoryID>,
                               And<INUnit.fromUnit, Equal<InventoryItem.baseUnit>,
                               And<INUnit.toUnit, Equal<InventoryItem.purchaseUnit>>>>>))]
            [PXUIField(DisplayName = "Unit Rate")]
            public virtual Decimal? UsrUnitRate { get; set; }
            public abstract class usrUnitRate : IBqlField { }
            #endregion
        }
    }
    

    如果您需要 Unit Rate 在网格中不可见,您可以将其 Visibility 属性设置为不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 2018-04-14
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多