【发布时间】:2021-09-17 23:15:48
【问题描述】:
我在扩展 DAC 中有四个自定义字段。这些是 CRQuote 的扩展:
public class CRQuoteExt : PXCacheExtension<CRQuote>
在更新行事件期间,我浏览报价单上列出的产品,计算折扣总额和利润,并将这些值放在我的自定义扩展字段中。
这很好用......其中四分之三。但第四个不会使用计算值。相反,它会填充它在数据库中找到的值。
所有四个字段的定义都相同。
这是其中两个字段的 DAC 代码——第一个有效。第二个没有。
#region UsrASGMarginPercent
[PXDBDecimal]
[PXUIField(DisplayName = "Margin %", Enabled = false)]
public virtual decimal? UsrASGMarginPercent { get; set; }
public abstract class usrASGMarginPercent : PX.Data.BQL.BqlDecimal.Field<usrASGMarginPercent> { }
#endregion
#region UsrASGDiscTotal
[PXDBDecimal]
[PXUIField(DisplayName = "Discount Total", Enabled = false)]
public virtual decimal? UsrASGDiscTotal { get; set; }
public abstract class usrASGDiscTotal : PX.Data.BQL.BqlDecimal.Field<usrASGDiscTotal> { }
#endregion
第二个,UsrASGDiscTotal,不接受计算值。即使我从字面上复制并粘贴了 UsrASGMarginPercent 字段中的代码并且只是更改了名称。因此,它们在语法上是相同的。
这是在更新上设置自定义字段的代码部分:
public void CRQuoteUpdateRow(CRQuote quote)
{
decimal? QuoteTotalDiscount = 0;
CRQuoteExt quoteExt = quote.GetExtension<CRQuoteExt>();
quoteExt.UsrASGMarginCury = CRQuoteMarginCury(quote);
quoteExt.UsrASGMarginPercent = CRQuoteMarginPercent(quote);
quoteExt.UsrASGQuoteCostField = CRQuoteCostCalc(quote, out QuoteTotalDiscount);
quoteExt.UsrASGDiscTotal = QuoteTotalDiscount;
int stp = 0;
...
我在“int stp = 0;”处放了一个断点行并在运行时观看。该值计算得很好。并且其他字段中的所有计算都按预期设置了值:
但是,当涉及到屏幕时,该值不是计算出的数量(应该是 165.11,而是 99.99 - 这是数据库字段中的值。)
正如您在此屏幕截图中看到的:
值来自数据库——但仅针对该字段”
我什至检查了 ASP 值,但它们也是一样的:
这是怎么回事?
【问题讨论】:
-
99.99 是从哪里来的?您可以手动运行脚本将其更改为其他内容吗?
-
@Rick 正如我所指出的,99.99 来自数据库。我通过运行一个 SQL 脚本把它放在那里,所以,是的,我可以通过一个脚本来改变它。