使用商机触发器更新OpportunityProducts

时间:2014-04-14 13:17:57

标签: triggers salesforce apex

我使用机会产品(ieline项目)计算,该计算使用存储在Opp本身中的opp术语(例如:OLI.RecurringAmt = OPP.Term * OLI.UNITPRICE * OLI.QUANTITY)

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

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

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

感谢您对此有任何见解。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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