【问题标题】:Acumatica: Profit calculation on Sales Order gridAcumatica:销售订单网格上的利润计算
【发布时间】:2016-06-08 14:56:50
【问题描述】:

我正在尝试向销售订单网格添加一个非常简单的计算。创建该字段时,它不显示(也不计算)任何内容。这是我所做的:

  1. 向 SOLine DAC 添加了自定义字段(称为 TotalProfit)
    • 类型:INT,列
  2. 已发布自定义
  3. 在 SO 订单文档详细信息网格中添加了 TotoalProfit 字段
  4. 自定义属性:

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

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

我也尝试过覆盖屏幕级别,但没有成功。我错过了什么?

【问题讨论】:

  • 对不起,我在上面的帖子中格式化了错误的代码,所以它自动改变了一些东西。您列出的语法就是我所拥有的。我只是在上面更改了它。谢谢!

标签: acumatica


【解决方案1】:

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

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

因此,如果您想获得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

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2017-06-19
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多