首页 文章

Acumatica:销售订单网格上的利润计算

提问于
浏览
0

我想在Sales Order网格中添加一个非常简单的计算 . 创建字段时,它不显示(也不计算)任何内容 . 这是我做的:

  • 为SOLine DAC添加了自定义字段(称为TotalProfit)

  • 类型:INT,列

  • 已发布的自定义

  • 将TotoalProfit字段添加到SO订单文档详细信息网格

  • 自定义属性:

[PXDBCurrency(typeof(SOLine.curyInfoID), typeof(SOLine.extCost))]
[PXUIField(DisplayName = "LineProfit")]
[PXFormula(typeof(Sub<SOLine.curyLineAmt, SOLine.curyExtCost>))]
[PXDefault(TypeCode.Decimal, "0.0")]

发布时没有错误,但该字段为空白 . 我试图简单地计算网格中两个字段的差异:CuryLineAmt - CuryExtCost

我也尝试在屏幕上覆盖,但没有成功 . 我错过了什么?

1 回答

  • 1

    由于您使用的是使用货币的字段,因此必须始终在数据库中创建2列 . 第一个是没有应用货币的字段 . 第二个将应用货币 .

    当您使用属性 PXDBCurrency 时,如文档中所述,第一个参数用于传递货币信息 . 第二个参数用于传递字段而不应用其中的货币 .

    enter image description here

    因此,如果您希望获得 SOLine 的总利润,则需要在 SOLine DAC扩展中创建2个字段: TotalProfitCuryTotalProfit .

    这是2个字段的代码:

    #region CuryTotalProfit
    public abstract class curyTotalProfit : PX.Data.IBqlField
    {
    }
    protected Decimal? _CuryTotalProfit;
    [PXDBCurrency(typeof(SOLine.curyInfoID), typeof(totalProfit))]
    [PXUIField(DisplayName = "Total Profit")]
    [PXFormula(typeof(Sub<SOLine.curyLineAmt, SOLine.curyExtCost>))]
    [PXDefault(TypeCode.Decimal, "0.0")]
    public virtual Decimal? CuryTotalProfit
    {
        get
        {
            return this._CuryTotalProfit;
        }
        set
        {
            this._CuryTotalProfit = value;
        }
    }
    #endregion
    
    #region TotalProfit
    //This field has no Display UI
    public abstract class totalProfit : PX.Data.IBqlField
    {
    }
    protected Decimal? _TotalProfit;
    [PXDBDecimal(4)]
    [PXDefault(TypeCode.Decimal, "0.0")]
    public virtual Decimal? TotalProfit
    {
        get
        {
            return this._TotalProfit;
        }
        set
        {
            this._TotalProfit = value;
        }
    }
    #endregion
    

相关问题