我正在尝试向销售订单网格添加一个非常简单的计算。创建字段时,它不显示(也不计算)任何内容。这是我做的:
自定义属性:
[PXDBCurrency(typeof(SOLine.curyInfoID), typeof(SOLine.extCost))]
[PXUIField(DisplayName = "LineProfit")]
[PXFormula(typeof(Sub<SOLine.curyLineAmt, SOLine.curyExtCost>))]
[PXDefault(TypeCode.Decimal, "0.0")]
发布时没有错误,但该字段为空白。我试图简单地计算网格中两个字段的差异:CuryLineAmt - CuryExtCost
我也尝试在屏幕上覆盖但没有成功。我错过了什么?
答案 0 :(得分:1)
由于您使用的是使用货币的字段,因此必须始终在数据库中创建2列。第一个是没有应用货币的字段。第二个将使用货币。
当您使用属性PXDBCurrency
时,如文档中所述,第一个参数用于传递货币信息。第二个参数用于传递字段而不应用货币。
因此,如果您想获得SOLine
的总利润,则需要在SOLine
DAC扩展程序中创建2个字段:TotalProfit
和CuryTotalProfit
。
以下是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