【问题标题】:Updating OpportunityProducts using Opportunity Trigger使用 Opportunity Trigger 更新 OpportunityProducts
【发布时间】:2014-04-14 13:17:57
【问题描述】:

我对机会产品(即行项目)使用存储在 Opp 本身中的 opp 期限(例如:OLI.RecurringAmt = OPP.Term * OLI.UNITPRICE * OLI.QUANTITY)的计算

如果 Opp 中 Term(整数)的值发生变化,则需要手动更新每个 OLI 中的数学。我建议在 Term 更改时使用 Opp 上的触发器来执行此更新。

问题是:由于 Opp 中的 AMOUNT 字段由 SFDC 自动计算为每个相关行项目的 UNITPRICE 乘以 QUANTITY 的总和,对于每个行项目,我是否会通过更新 OLI 遇到递归问题来自默认情况下将尝试更新触发触发器的同一 Opp 的 AMOUNT 字段的 Opp 触发器的记录?

如果这不会导致问题,我应该在“更新后”还是“更新前”触发? SFDC 是否在触发器完成之前或之后重新计算更新的 AMOUNT 值?

感谢您对此的任何见解。

【问题讨论】:

    标签: triggers salesforce apex


    【解决方案1】:

    如果您更改 OpportunityLineItem (OLI) UnitPrice 或 Quantity,在这种情况下可能会发生触发递归。

    标准做法是在事务中使用静态成员或属性来检测操作是否已经执行。

    How to avoid Recursive trigger。这是一个非常基本的例子。您可以扩展它以维护一组已处理的机会 ID。

    我建议使用更新后触发器。

    顺便说一句,salesforce.stackexchange.com/ 是询问 Salesforce 特定问题的好地方。

    【讨论】:

    • 我将更新 OLI 单价,因此递归检查示例很有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2010-11-22
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多