Triggers 使用Opportunity触发器更新Opportunity产品

Triggers 使用Opportunity触发器更新Opportunity产品,triggers,salesforce,apex,Triggers,Salesforce,Apex,我对Opportunity产品进行计算,即使用opp中存储的opp术语的行项目,例如:OLI.RecurringAmt=opp.term*OLI.UNITPRICE*OLI.QUANTITY 如果Opp中整数一词的取值发生变化,则需要手动更新每个OLI中的数学值。我建议在Opp上使用触发器,以便在术语更改时进行此更新 问题是:由于Opp中的AMOUNT字段由SFDC自动计算为每个相关行项目的单价乘以数量之和,因此对于每个行项目,通过从Opp触发器更新OLI记录(默认情况下,是否尝试更新触发触发器

我对Opportunity产品进行计算,即使用opp中存储的opp术语的行项目,例如:OLI.RecurringAmt=opp.term*OLI.UNITPRICE*OLI.QUANTITY

如果Opp中整数一词的取值发生变化,则需要手动更新每个OLI中的数学值。我建议在Opp上使用触发器,以便在术语更改时进行此更新

问题是:由于Opp中的AMOUNT字段由SFDC自动计算为每个相关行项目的单价乘以数量之和,因此对于每个行项目,通过从Opp触发器更新OLI记录(默认情况下,是否尝试更新触发触发器的同一Opp的金额字段

如果这不会引起问题,我应该在更新后还是更新前触发?SFDC是否在触发器完成之前或之后重新计算更新的金额值


感谢您对此的深入了解。

如果您更改OpportunityLineItem单价或数量,则在这种情况下可能会发生触发器递归

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

看。这是一个非常基本的例子。您可以扩展它来维护一组已经处理过的Opportunity ID

我建议使用更新后触发器


顺便说一句,这里是向Salesforce询问特定问题的好地方。

我将更新OLI单价,因此recurson检查示例非常有用。谢谢