Skip to main content

Criar a automação para executar a promoção Buquê gratuito

Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e use as traduções fornecidas entre parênteses para navegar. Copie e cole somente os valores em inglês porque as validações dos desafios dependem de dados em inglês. Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

Nesta etapa, criamos uma nova classe e um novo método no qual verificamos o status de todos os pedidos. Se um pedido for ativado, adicionaremos automaticamente um buquê de brinde ao pedido.

Quando olhar o código, lembre-se de que todo texto que começa com // é um comentário sobre o código. No código, os comentários descrevem a finalidade de um bloco de código (uma ou mais linhas de código). Os comentários ajudam os desenvolvedores a entender que código devem escrever, o que o código existente faz e o que o código com erro deve fazer.

Criar uma classe e um método

  1. Clique em Configuração e selecione Developer Console.
  2. Clique em File (Arquivo) | New (Novo) | Apex Class (Classe do Apex).
  3. Dê o nome OrderItemUtility para a classe e clique em OK.
  4. Substitua o código existente por este:
    //Create the class
    public class OrderItemUtility {
        //Create the method that will add free bonus bouquet when order is activated
        public static void addBonusBouquet(List<Order> ordersFromTrigger) {
            //TO DO 3.1: Determine if we have a bonus product and get its ID to add to the order
                //TO DO 2.1: Create a list to store any new bouquets we'll insert later
                //TO DO 2.2: Loop over orders in ordersFromTrigger, for each order (called currentOrder) do something
                    //TO DO 2.3: Verify the order status is 'Activated'
                        //TO DO 2.4: Create a new bouquet and set values
                        //TO DO 2.5: Add the freeBouquet sObject to your list
                    //TO DO 2.6: Close the "if" and "for loop" sections
                //TO DO 3.2: Use DML to add the new list of newBouquets
            //TO DO 3.3: Close the if section
        } //end method
    } //end class
  5. Clique em File (Arquivo) | Save (Salvar) para salvar a classe.

Adicionar automação para criar um novo buquê

A seguir, vamos adicionar automação à classe. Depois de colar as linhas adicionais de código, você poderá notar um comentário no código, //, adicionado à linha em branco. Lembre-se de excluir o comentário extra antes de colar seu código.

  1. Crie uma lista para armazenar novos buquês de brinde.
    Na sua classe, abaixo do comentário //TO DO 2.1, cole este código:
    List<OrderItem> newBouquets = new List<OrderItem>();
  2. Use um loop for para iterar pelos pedidos enviados de um acionador. (Criaremos esse acionador mais adiante.)
    Na sua classe, abaixo do comentário //TO DO 2.2, cole este código:
    for(Order currentOrder : ordersFromTrigger) {

    Essa é a primeira parte do loop for. Ele pega todos os pedidos do acionador e os adiciona à lista ordersFromTrigger. O loop for avalia cada pedido e dá o nome currentOrder ao pedido.
Nota

Você poderá ver que temos apenas um símbolo de chave ( { ) aqui. Isso ocorre porque faremos mais coisas com esse pedido antes de terminar. Fecharemos o loop for mais tarde nesta etapa.

  1. Em seguida, olhamos para cada pedido (usando a variável currentOrder criada) e nos perguntamos: O pedido foi ativado? Se sim, podemos fazer alguma coisa. Se não for o caso, passamos para o pedido seguinte e fazemos a mesma pergunta.
    Na sua classe, abaixo do comentário //TO DO 2.3, cole este código:
    if(currentOrder.Status == 'Activated') {

    Como você viu com o código do loop for, existe apenas um símbolo de chave. Vamos adicionar o outro quando terminarmos tudo o que queremos fazer em cada pedido ativado.
  2. Quando encontrarmos um pedido que realmente tenha sido ativado, criaremos um sObject para um novo OrderItem.
    Na sua classe, abaixo do comentário //TO DO 2.4, cole este código:
    OrderItem freeBouquet = new OrderItem(
        OrderId = currentOrder.id, //this is the order we're linking the bouquet to
        //PricebookEntryId = entry.id,
        numberOfFlowers__c = 3,
        description = 'FREE Bouquet',
        Quantity = 1,
        colorTheme__c = 'Spectacular Sunset',
        percentOfOpening__c = 0,
        UnitPrice = 0.00
    );
    Aqui criamos o sObject OrderItem, chamado freeBouquet e atribuímos valores aos seus campos.
  3. A seguir, vamos adicionar o sObject à lista que criamos em //TO DO 2.1.
    Na sua classe, abaixo do comentário //TO DO 2.5, cole este código:
    newBouquets.add(freeBouquet);

    Estamos usando o método add que está inserido no Apex e facilita a adição de um item a uma lista.
    newBouquets.add(freeBouquet);
    Nessa instrução, newBouquets é o nome da lista, add é o método e freeBouquet (entre parênteses) é o sObject adicionado à lista newBouquets.
  4. Por fim, precisamos fechar a instrução if (o código que é executado somente em pedidos ativados) e o loop for (o código que é executado a cada pedido à medida que o loop circula por todos os pedidos ativados).
    Na sua classe, abaixo do comentário //TO DO 2.6, cole este código:
        } //end if
    } //end for loop
    Agora seu arquivo de classe deve ficar assim:
    //Create the class
    public class OrderItemUtility {
        //Create the method that will add free bonus bouquet when order is activated
        public static void addBonusBouquet(List<Order> ordersFromTrigger) {
            //TO DO 3.1: Determine if we have a bonus product and get its ID to add to the order
                //TO DO 2.1: Create a list to store any new bouquets we'll insert later
                List<OrderItem> newBouquets = new List<OrderItem>();
                //TO DO 2.2: Loop over orders in ordersFromTrigger, for each order (called currentOrder) do something
                for(Order currentOrder : ordersFromTrigger) {
                    //TO DO 2.3: Verify the order status is 'Activated'
                    if(currentOrder.Status == 'Activated') {
                        //TO DO 2.4: Create a new bouquet and set values
                        OrderItem freeBouquet = new OrderItem(
                            OrderId = currentOrder.id, //this is the order we're linking the bouquet to
                            //PricebookEntryId = entry.id,
                            numberOfFlowers__c = 3,
                            description = 'FREE Bouquet',
                            Quantity = 1,
                            colorTheme__c = 'Spectacular Sunset',
                            percentOfOpening__c = 0,
                            UnitPrice = 0.00
                        );
                        //TO DO 2.5: Add the freeBouquet sObject to your list
                        newBouquets.add(freeBouquet);
                    //TO DO 2.6: Close the "if" and "for loop" sections
                    } //end if
                } //end for loop
                //TO DO 3.2: Use DML to add the new bouquet to the Order
            //TO DO 3.3: Close the if section
        } //end method
    } //end class
  5. Clique em File (Arquivo) | Save (Salvar) para salvar a classe OrderItemUtility.

Na próxima unidade, você aprenderá a obter dados e a enviá-los ao Salesforce e criará um acionador. E aí começará a festa: você vai testar seu código!

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback