2012-08-14 24 views
0

我不是開發人員,但我試圖學習,因爲我已經達到了需要進行自定義和自動化的代碼。我爲機會產品創建了一個自定義「銷售價格」字段,用於替換標準銷售價格字段。我希望自定義字段的默認值與標準銷售價格字段中的價格表條目列表價格(單位價格)值一樣。然後,我將標準銷售價格字段更新爲等於自定義銷售價格乘以月份條款數量(自定義字段將在商機級別更新,並通過觸發器自動填充到商機產品的反射自定義字段中)。我已將銷售價格值設置爲默認值,將月份條款創建爲默認值,但現在似乎都無法正常工作。以下是創建新機會訂單項時的銷售價格值觸發器。不知道如何在添加新產品訂單項時將價格設爲默認值?它應該只在添加新的時候默認,因爲我不希望它覆蓋它們放入並保存的任何數量。但是如果他們回到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; 
    } 
}} 

謝謝!

回答

0

你能用其他的語言描述你的問題嗎?如果要重新計算時,舊數據被更新(不僅是插入新行)的銷售價格字段,你應該使用「更新前」事件這個觸發器,如下:

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

此外,您還可以檢查,這如果其他字段已更新(用於此觸發器上下文變量 - Trigger.new,Trigger.old,Trigger.newMap,Trigger.oldMap),它將幫助您不再執行觸發邏輯。

相關問題