2014-04-14 40 views
1

我使用机会产品(ieline项目)上的一个计算,该计算使用存储在Opp本身中的opp项(例如:OLI.RecurringAmt = OPP.Term * OLI.UNITPRICE * OLI .QUANTITY)使用机会触发器更新OpportunityProducts

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

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

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

感谢您对此的任何见解。

回答

0

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

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

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

我建议使用after update trigger。

顺便提一下,salesforce.stackexchange.com/是向Salesforce提出特定问题的好地方。

+0

我将更新OLI UnitPrice,因此recurson检查示例很有帮助。谢谢。 – user2653485