【问题标题】:Acumatica will only update 3 out of 4 Usr Customized Fields in CRQUOTEAcumatica 将仅更新 CRQUOTE 中 4 个用户自定义字段中的 3 个
【发布时间】: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 脚本把它放在那里,所以,是的,我可以通过一个脚本来改变它。

标签: c# acumatica


【解决方案1】:

在@Yuriy Zaletskyy 的帮助下,我找到了解决此问题的方法。

这行得通。我不知道为什么。就是这样:

decimal? QuoteTotalDiscount = 0;
CRQuoteExt quoteExt = quote.GetExtension<CRQuoteExt>();
quoteExt.UsrASGMarginCury = CRQuoteMarginCury(quote);
quoteExt.UsrASGMarginPercent = CRQuoteMarginPercent(quote);
quoteExt.UsrASGQuoteCostField = CRQuoteCostCalc(quote, out QuoteTotalDiscount);
/***************************************************************/
/* The Tricky Part:                                            */
/***************************************************************/                
Base.Quote.Cache.SetValue<CRQuoteExt.usrASGDiscTotal>(quote, QuoteTotalDiscount);

            

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多