Création d’une automatisation pour exécuter la promotion Bouquet gratuit
Dans cette étape, nous créons une nouvelle classe et une nouvelle méthode, dans lesquelles nous vérifions le statut de toutes les commandes. Si une commande est activée, nous y ajoutons automatiquement un bouquet bonus.
Lorsque vous examinez le code, gardez à l’esprit que tout texte commençant par // est un commentaire sur le code. Ces commentaires décrivent le but d’un bloc de code (une ou plusieurs lignes de code). Ils aident les développeurs à déterminer ce qu’ils doivent écrire, ce que fait le code existant et ce que le code défaillant est censé faire.
Création d’une classe et d’une méthode
- Cliquez sur et sélectionnez Developer Console.
- Cliquez sur File | New | Apex Class (Fichier | Nouveau | Apex Class).
- Nommez la classe
OrderItemUtility
, puis cliquez sur OK.
- Remplacez le code existant par le code suivant :
//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
- Cliquez sur File | Save (Fichier | Enregistrer) pour enregistrer le fichier.
Ajout d’une automatisation pour créer un nouveau bouquet
Nous allons maintenant ajouter une automatisation à la classe. Après avoir collé les lignes de code supplémentaires, vous remarquerez peut-être qu’un commentaire sur le code (//
) a été ajouté à la ligne vide. N’oubliez pas de supprimer ce commentaire supplémentaire avant de coller votre code.
- Créez une liste pour stocker de nouveaux bouquets bonus.
Dans votre classe, sous le commentaire//TO DO 2.1
, collez ce code :List<OrderItem> newBouquets = new List<OrderItem>();
- Utilisez une boucle
for
pour parcourir les commandes envoyées à partir d’un déclencheur. (Nous créerons ce déclencheur plus tard.)
Dans votre classe, sous le commentaire//TO DO 2.2
, collez ce code :for(Order currentOrder : ordersFromTrigger) {
Il s’agit de la première partie de la boucle for. Elle prend toutes les commandes du déclencheur et les ajoute à la listeordersFromTrigger
. La boucle for évalue chaque commande et nomme la commandecurrentOrder
.
- Examinons maintenant chaque commande (en utilisant la variable
currentOrder
que nous avons créée) et demandons-nous : La commande est-elle activée ? Si c’est le cas, une action est requise. Si ce n’est pas le cas, nous passons à la commande suivante et nous nous posons la même question.
Dans votre classe, sous le commentaire//TO DO 2.3
, collez ce code :if(currentOrder.Status == 'Activated') {
Comme pour le code de la bouclefor
, il n’y a ici qu’une seule accolade. Nous ajouterons l’autre après avoir terminé tout ce que nous voulons faire pour chaque commande activée.
- Lorsque nous trouvons une commande activée, nous créons un sObject pour un nouvel élément
OrderItem
.
Dans votre classe, sous le commentaire//TO DO 2.4
, collez ce code :Ici, nous créons le sObject OrderItem, appelé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 );
freeBouquet
, puis nous attribuons des valeurs à ses champs.
- Ajoutons ensuite le sObject à la liste que nous avons créée dans
//TO DO 2.1
.
Dans votre classe, sous le commentaire//TO DO 2.5
, collez ce code :newBouquets.add(freeBouquet);
Nous utilisons la méthodeadd
qui est intégrée à Apex, ce qui facilite l’ajout d’un élément à une liste.
Dans cette instruction,newBouquets
est le nom de la liste, add est la méthode etfreeBouquet
(entre parenthèses) est le sObject qui est ajouté à la listenewBouquets
.
- Enfin, nous devons mettre fin à l’instruction
if
(le code qui est exécuté uniquement pour les commandes activées) et à la bouclefor
(le code qui est exécuté pour chaque commande lorsque la boucle parcourt toutes les commandes activées).
Dans votre classe, sous le commentaire//TO DO 2.6
, collez ce code :Votre fichier de classe doit maintenant ressembler à ceci :} //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
- Cliquez sur File | Save (Fichier | Enregistrer) pour enregistrer la classe
OrderItemUtility
.
Dans l’unité suivante, vous apprendrez à obtenir et à envoyer des données à Salesforce et vous créerez un déclencheur. Vous allez ensuite pouvoir tester votre code, la partie la plus amusante !