Skip to main content

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

Nota

Nota

Deseja aprender em português (Brasil)? Nesse emblema, as validações dos desafios práticos do Trailhead funcionam em inglês. As traduções são fornecidas entre parênteses como referência Copie e cole os valores em inglês e, em seguida, mude o idioma do Trailhead Playground para inglês e a localidade para Estados Unidos. Siga as instruções aqui.

Consulte o emblema Trailhead no seu idioma para saber como aproveitar a experiência traduzida do Trailhead.

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 cabeçalho //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 cabeçalho //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.

  3. Agora vemos 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 cabeçalho //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.

  4. Quando encontrarmos um pedido que realmente tenha sido ativado, criaremos um sObject para um novo OrderItem.

    Na sua classe, abaixo do cabeçalho //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.

  5. A seguir, vamos adicionar o sObject à lista que criamos em //TO DO 2.1.

    Na sua classe, abaixo do cabeçalho //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.

  6. 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 cabeçalho //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
  7. 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!

Continue a aprender de graça!
Inscreva-se em uma conta para continuar.
O que você ganha com isso?
  • Receba recomendações personalizadas para suas metas de carreira
  • Pratique suas habilidades com desafios práticos e testes
  • Monitore e compartilhe seu progresso com os empregadores
  • Conecte-se a orientação e oportunidades de carreira