Триггер, чтобы запретить пользователю добавлять в продукт более одного продукта - PullRequest
0 голосов
/ 29 июня 2018

Итак, я написал триггер, чтобы запретить пользователю вводить более одного продукта возможности для одной и той же возможности, но проблема в том, что когда он добавляет более одного продукта возможности одновременно, мой триггер не срабатывает, Salesforce принимает его как один продукт. Что я могу добавить к своему триггеру, чтобы исправить это?

Мой триггер:

trigger OpportunityLineItemBeforeInsert on OpportunityLineItem (before insert) {
    Set<Id>opportunityIds = new Set<Id>();



    // get all parent IDs

    for(OpportunityLineItem i : trigger.new)

    {

        opportunityIds.add(i.OpportunityId);

    }

    // query for related Olis (Opportunity Line Items)

    Map<Id, Opportunity> opps = new Map<Id, Opportunity>([SELECT ID, 
                                                          (SELECT ID 
                                                           FROM OpportunityLineItems) 
                                                          FROM Opportunity 
                                                          WHERE ID IN :opportunityIds]);

    for(OpportunityLineItem i : trigger.new)

    {

        if(opps.get(i.OpportunityId).OpportunityLineItems.size()>0)

        {

            i.addError('Your Message');

        }

    }
}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вместо того, чтобы писать код для этого, вы должны вместо этого создать в продуктах поле, в котором будет храниться идентификатор родительской возможности, сделать это поле уникальным и заполнить значение через рабочий процесс или построитель процессов идентификатором родительской возможности. Таким образом, при добавлении второго продукта ограничение уникальности сработает и не позволит вставить запись.

Другой вариант - создать сводный список возможностей для подсчета количества продуктов возможности, а затем добавить правило проверки, показывающее ошибку, если количество продуктов> 1. Преимущество такого способа состоит в том, что вы получаете установите сообщение об ошибке вместо общего сообщения об ошибке с первым параметром.

0 голосов
/ 29 июня 2018

Я бы, наверное, проигнорировал все, что связано с Оппти.

Вы хотите, чтобы был создан только один продукт, поэтому при создании число LI равно 0, и вы можете создать ровно один, либо оно не равно 0, и вы не можете создать ни одного.

Я бы просто создал поле свертки в Oppty, посчитал продукты. Если число! = 0, то проверка не пройдена. Если count = 0, то считать Олис в trigger.new, а если! = 1, не получится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...