2013-03-12 7 views
0

Хорошо, поэтому я задал этот вопрос несколько недель назад, и я получил большую помощь. Но я все еще не 100% в отношении проблемы, которую я продолжаю иметь ... Любая помощь была бы замечательной ... У меня все еще есть серьезные проблемы с этим кодом и я могу использовать дополнительную помощь ...Salesforce APEX update, когда null

По какой-то причине он по-прежнему меняет любые числа на 0, а не просто добавляя нуль в нулевое поле.

Если у меня есть 4 LOC со следующими - Конкурент Продан Оценить 150, 125, 0, пустой или Null Затерянный Ложные, True, True, False Я хочу, чтобы они все быть помечены Потерянные и я только хочу последний Конкурент Продан Rate будет отмечен 0

в настоящее время все метки Проиграл и все изменения до 0 - Я знаю, что код делает обновление, потому что если я изменить код, чтобы сказать, сделать их 10, они все обновления до 10

Пожалуйста, любая помощь будет замечательной ...

триггер updateLOConLostOpportunity на Opportunity (после обновления) {

//The map allows us to keep track of the opportunities that have been lost 

Карта oppsWithStageLost = новая карта();

for (Integer i = 0; i < Trigger.new.size(); i++) { 
    if ( (Trigger.old[i].StageName != 'Lost') 
     && (Trigger.new[i].StageName == 'Lost')) { 
     oppsWithStageLost.put(Trigger.old[i].id, 
           Trigger.new[i]); 

    }       
} 
List<Line_of_Coverage__c> updatedLOCs = new List<Line_of_Coverage__c>(); 
for (Line_of_Coverage__c loc : [SELECT id, Lost__c, Opportunity__c 
            FROM Line_of_Coverage__c 
            WHERE Opportunity__c 
            in :oppsWithStageLost.keySet()]) { 
    Opportunity parentOpp = oppsWithStageLost.get(loc.Opportunity__c); 


    loc.Lost__c = TRUE; 

    if (loc.Competitor_Sold_Rate__c == NULL) { 

     loc.Competitor_Sold_Rate__c = 0; 

    } 


    updatedLOCs.add(loc); 

} 
update updatedLOCs;           

}

ответ

0

Что именно тип Competitor_Sold_Rate__c? Если это строка или список выбора, она никогда не может быть установлена ​​на нуль, - у вас могут быть лучшие результаты, сравнивающие ее с пустой строкой ''.

1

Добавить Competitor_Sold_Rate__c выберите запрос,

for (Line_of_Coverage__c loc : [SELECT id, Lost__c, Opportunity__c,Competitor_Sold_Rate__c 
            FROM Line_of_Coverage__c 
            WHERE Opportunity__c 
            in :oppsWithStageLost.keySet()]) 
0

Простите меня, если я не понимание вопроса правильно, но если я вы хотите проданный скорость = 0 только для последнего элемента, вы можете попробовать это. Также, как и в другом упомянутом сообщении, вам необходимо включить Competitor_Sold_Rate__c в запрос

List<Line_of_Coverage__c> updatedLOCs = new List<Line_of_Coverage__c>(); 
list<Line_of_coverage__c> locs = [SELECT id, Lost__c, Opportunity__c, Competitor_Sold_Rate__c 
           FROM Line_of_Coverage__c 
           WHERE Opportunity__c 
           in :oppsWithStageLost.keySet()]; 

for (Integer i = 0; i < locs.size(); i++) { 
    Opportunity parentOpp = oppsWithStageLost.get(locs[i].Opportunity__c); 
    loc.Lost__c = TRUE; 

    //check if it's the last loc -- size would return 4 
    if (loc.Competitor_Sold_Rate__c == NULL && locs.size()-1 == i) { 
    loc.Competitor_Sold_Rate__c = 0; 
} 

updatedLOCs.add(loc); 
. 
. 
. 
Смежные вопросы