Skip to main content

Création d’une automatisation pour exécuter la promotion Bouquet gratuit

Remarque

Remarque

Vous souhaitez apprendre en français ? Commencez le défi dans un Trailhead Playground en français et utilisez les traductions fournies entre crochets pour naviguer. Copiez et collez uniquement les valeurs en anglais, car les validations de défi reposent sur les données en anglais. Si vous ne réussissez pas le défi dans votre organisation en français, nous vous recommandons (1) de définir le paramètre régional sur les États-Unis, (2) de définir la langue sur l’anglais en suivant les instructions ici, puis (3) de cliquer à nouveau sur le bouton « Vérifier le défi ».

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

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

  1. Cliquez sur Configuration et sélectionnez Developer Console.
  2. Cliquez sur File | New | Apex Class (Fichier | Nouveau | Apex Class).
  3. Nommez la classe OrderItemUtility, puis cliquez sur OK.
  4. 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
  5. 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.

  1. 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>();
  2. 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 liste ordersFromTrigger. La boucle for évalue chaque commande et nomme la commande currentOrder.
Remarque

Vous remarquerez peut-être que nous n’avons qu’une seule accolade ( { ) ici. C’est parce qu’il nous reste des choses à faire avec cette commande avant de nous arrêter. Nous fermerons la boucle for plus tard dans cette étape.

  1. 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 boucle for, 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.
  2. 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 :
    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
    );
    Ici, nous créons le sObject OrderItem, appelé freeBouquet, puis nous attribuons des valeurs à ses champs.
  3. 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éthode add qui est intégrée à Apex, ce qui facilite l’ajout d’un élément à une liste.
    newBouquets.add(freeBouquet) ;
    Dans cette instruction, newBouquets est le nom de la liste, add est la méthode et freeBouquet (entre parenthèses) est le sObject qui est ajouté à la liste newBouquets.
  4. Enfin, nous devons mettre fin à l’instruction if (le code qui est exécuté uniquement pour les commandes activées) et à la boucle for (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 :
        } //end if
    } //end for loop
    Votre fichier de classe doit maintenant ressembler à ceci :
    //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. 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 !

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires