0

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

谢谢!

4

1 回答 1

0

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

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

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

于 2013-05-13T22:09:39.547 回答