Skip to main content

Crear la automatización para ejecutar la promoción del ramo gratuito

Nota

Nota

¿Es su idioma de aprendizaje español (LATAM)? Comience el reto en un Trailhead Playground en español (LATAM) y utilice las traducciones entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto dependen de los datos en ese idioma. Si no aprueba el reto en su organización en español (LATAM), recomendamos que (1) cambie la configuración local a Estados Unidos, (2) cambie el idioma a inglés (según estas instrucciones) y, luego, (3) haga clic en el botón “Check Challenge” (Comprobar el reto) nuevamente.

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

En este paso, creamos una clase y un método nuevos, en los que comprobamos el estado de todos los pedidos. Si se activa un pedido, agregamos automáticamente un ramo de regalo al pedido.

Cuando vea el código, recuerde que cualquier texto que empieza con // es un comentario de código. En el código, los comentarios describen el propósito de un bloque de código (una o más líneas de código). Los comentarios ayudan a los desarrolladores a entender el código que deben escribir, la función del código existente y lo que debería hacer el código que presenta errores.

Cómo crear una clase y un método

  1. Haga clic en Setup (Configuración) y seleccione Developer Console.
  2. Haga clic en File (Archivo) | New (Nuevo) | Apex Class (Clase de Apex).
  3. Asigne el nombre OrderItemUtility a la clase y haga clic en OK (Aceptar).
  4. Sustituya el código existente por este código:
    //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. Haga clic en File (Archivo) | Save (Guardar) para guardar la clase.

Cómo agregar una automatización para crear un ramo nuevo

A continuación, agregamos una automatización a la clase. Una vez que pegue las líneas de código adicionales, observará que se agregó un comentario de código, //, a la línea en blanco. No olvide eliminar el comentario adicional antes de pegar el código.

  1. Cree una lista para almacenar ramos de regalo nuevos.
    En su clase, bajo el comentario //TO DO 2.1, pegue este código:
    List<OrderItem> newBouquets = new List<OrderItem>();
  2. Utilice un bucle for para iterar por los pedidos enviados desde un desencadenador. (Crearemos ese desencadenador más adelante).
    En su clase, bajo el comentario //TO DO 2.2, pegue este código:
    for(Order currentOrder : ordersFromTrigger) {

    Esta es la primera parte del bucle for. Toma todos los pedidos del desencadenador y los agrega a la lista ordersFromTrigger. El bucle for evalúa todos los pedidos y les asigna el nombre currentOrder.
Nota

Observará que aquí solo tenemos una llave ({). Eso se debe a que realizaremos más acciones con este pedido. Cerraremos el bucle for más adelante en este paso.

  1. A continuación, observamos cada pedido (mediante la variable currentOrder que creamos) y preguntamos lo siguiente: ¿Está activado el pedido? Si la respuesta es afirmativa, hacemos algo. Si la respuesta es negativa, pasamos al siguiente pedido y hacemos la misma pregunta.
    En su clase, bajo el comentario //TO DO 2.3, pegue este código:
    if(currentOrder.Status == 'Activated') {

    Como observó en el código del bucle for, solo hay una llave. Agregaremos la otra después de terminar todo lo que queremos hacer a cada pedido activado.
  2. Cuando encontramos un pedido que efectivamente está activado, creamos un sObject para un nuevo OrderItem.
    En su clase, bajo el comentario //TO DO 2.4, pegue 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
    );
    Aquí creamos el sObject de OrderItem, llamado freeBouquet, y luego asignamos valores a sus campos.
  3. A continuación, agregamos el sObject a la lista que creamos en //TO DO 2.1.
    En su clase, bajo el comentario //TO DO 2.5, pegue este código:
    newBouquets.add(freeBouquet);

    Usamos el método add (agregar) integrado en Apex, lo que facilita la adición de un elemento a una lista.
    newBouquets.add(freeBouquet);
    En esta declaración, newBouquets es el nombre de la lista, add (agregar) es el método y freeBouquet (entre paréntesis) es el sObject que se agrega a la lista newBouquets.
  4. Por último, tenemos que terminar la declaración if (el código que se ejecuta solo para los pedidos activados) y el bucle for (el código que se ejecuta para cada pedido a medida que el bucle recorre todos los pedidos activados).
    En su clase, bajo el comentario //TO DO 2.6, pegue este código:
        } //end if
    } //end for loop
    Ahora el archivo de la clase debe tener este aspecto:
    //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. Haga clic en File (Archivo) | Save (Guardar) para guardar la clase OrderItemUtility.

En la próxima unidad, aprenderá a obtener datos de Salesforce y a enviarlos a Salesforce, y creará un desencadenador. Luego comienza la diversión: probar su código.

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios