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)? En esta insignia, las validaciones de los retos prácticos de Trailhead funcionan en inglés. Entre paréntesis se incluyen las traducciones a modo de referencia. Copie y pegue los valores que figuran en inglés y, luego, cambie el idioma de su Trailhead Playground a inglés y la configuración local a Estados Unidos. Siga las instrucciones que figuran aquí.

Consulte la insignia Trailhead en su idioma para aprender a aprovechar la experiencia traducida de Trailhead.

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 título //TO DO 2.1, pegue este código:

    List<OrderItem> newBouquets = new List<OrderItem>();
  2. Utilice un bucle for para iterar a través de los pedidos enviados desde un desencadenador. (Crearemos ese desencadenador más adelante).

    En su clase, bajo el título //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.

  3. 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 no lo es, pasamos al siguiente pedido y hacemos la misma pregunta.

    En su clase, bajo el título //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.

  4. Cuando encontramos un pedido que efectivamente está activado, creamos un sObject para un nuevo OrderItem.

    En su clase, bajo el título //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.

  5. A continuación, agregamos el sObject a la lista que creamos en //TO DO 2.1.

    En su clase, bajo el título //TO DO 2.5, pegue este código:

    newBouquets.add(freeBouquet);

    Usamos el método add 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.

  6. 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 título //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
  7. 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.

¡Siga aprendiendo gratis!
Regístrese para obtener una cuenta y continuar.
¿Qué hay para usted?
  • Consiga recomendaciones personalizadas para sus objetivos profesionales
  • Practique sus aptitudes con retos prácticos y pruebas
  • Siga y comparta su progreso con empleadores
  • Póngase en contacto para recibir asesoramiento y oportunidades laborales