Criar a automação para executar a promoção Buquê gratuito
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
- Clique em e selecione Developer Console.
- Clique em File (Arquivo) | New (Novo) | Apex Class (Classe do Apex).
- Dê o nome
OrderItemUtility
para a classe e clique em OK.
- 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
- 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.
- 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>();
- 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 à listaordersFromTrigger
. O loop for avalia cada pedido e dá o nomecurrentOrder
ao pedido.
- 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 loopfor
, existe apenas um símbolo de chave. Vamos adicionar o outro quando terminarmos tudo o que queremos fazer em cada pedido ativado.
- 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:Aqui criamos o sObject OrderItem, chamadoOrderItem 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 );
freeBouquet
e atribuímos valores aos seus campos.
- 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étodoadd
que está inserido no Apex e facilita a adição de um item a uma lista.
Nessa instrução,newBouquets
é o nome da lista, add é o método efreeBouquet
(entre parênteses) é o sObject adicionado à listanewBouquets
.
- Por fim, precisamos fechar a instrução
if
(o código que é executado somente em pedidos ativados) e o loopfor
(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:Agora seu arquivo de classe deve ficar assim:} //end if } //end for loop
//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
- 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!