【问题标题】:Apex trigger to default field values when adding opportunity line添加商机行时,Apex 触发默认字段值
【发布时间】:2012-08-14 14:38:31
【问题描述】:

我不是开发人员,但我正在尝试学习,因为我已经到了需要代码来进一步自定义和自动化的地步。我为商机产品创建了一个自定义“销售价格”字段,用于替换标准销售价格字段。我希望自定义字段默认使用价格手册条目清单价格(单价)值,标准销售价格字段也是如此。然后,我将标准销售价格字段更新为等于自定义销售价格乘以月份条款的数量(将在机会级别更新并通过触发器自动填充到机会产品的反射自定义字段中的自定义字段)。我已经为默认的销售价格值和默认的月份条款创建了触发器,但现在似乎都不起作用。下面是创建新机会行项目时销售价格值的触发器。添加新产品行项目时不确定如何将价格设为默认值?它应该只在添加新时默认,因为我不希望它覆盖他们放入和保存的任何金额。但如果他们回到 opp 并稍后添加其他项目,它也需要工作。非常感谢您对此的任何意见。我花了好几个小时搜索帖子和其他文档,但我没有那种天生的开发者大脑,我正在敲我的脑袋!

trigger SalesPricecustom on OpportunityLineItem (before insert) {
    Set<Id> pbeIds = new Set<Id>();
        for (OpportunityLineItem oli : Trigger.new) 
        pbeIds.add(oli.pricebookentryid);

    Map<Id, PricebookEntry> entries = new Map<Id, PricebookEntry>(
        [select UnitPrice from pricebookentry 
         where id in :pbeIds]);     

for (OpportunityLineItem oli :trigger.new){
     if(pricebookentry.unitprice <> null && oli.sales_price__c == null){

    oli.sales_price__c = entries.get(oli.pricebookEntryId).UnitPrice;  
  }
}} 

谢谢!

【问题讨论】:

    标签: salesforce apex-code


    【解决方案1】:

    您能用其他语言描述您的问题吗?如果您想在更新旧数据时重新计算销售价格字段(不仅仅是插入新行),您应该为此触发器使用“更新前”事件,如下所示:

    trigger SalesPricecustom on OpportunityLineItem (before insert, before update){
        //Here is your code
    }
    

    此外,您可以检查哪些字段已更改,如果其他字段已更新(用于此触发器上下文变量 - Trigger.new、Trigger.old、Trigger),它将帮助您不再执行触发逻辑。 newMap, Trigger.oldMap)。

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多