Cómo crear un beneficio o acción personalizada en Sitecore Commerce 8.2.1

Al igual que las cualificaciones, cuando creamos una promoción en el módulo “Pricing & Promotions”, hay una sección donde podemos adicionar las acciones que queremos ejecutar cuando las condiciones se cumplan, esa sección se llama “Benefits” o beneficios en español:

Beneficios selecionados
Beneficios selecionados

Por defecto Sitecore Commerce 8.2.1 viene con las siguientes acciones:

Listado de acciones por defecto
Listado de acciones por defecto

Como podemos ver, algunas de las acciones son: “Descontar el subtotal de un producto especificado en una cantidad especificada”“Descontar el subtotal de un producto especificado en un porciento especificado”, “Configurar envío gratis”, “Descontar el subtotal del carro de compras en un porciento especificado”, entre otros…

Acción personalizada

En el post anterior vimos cómo crear una condición personalizada para ser utilizada en una promoción, pero ¿qué tal si al igual que en el caso de las condiciones, no tenemos la acción o beneficio que queremos ejecutar cuando las condiciones se cumplan?

En este post vamos a ver cómo crear una acción personalizada.

Para crear una condición personalizada debemos crear una clase en alguno de nuestros plugins (o crear un plugin nuevo) en nuestra solución de Sitecore Commerce Engine.

La acción que vamos a “crear” permitirá adicionar gratuitamente un producto seleccionado al carro de compras (no vamos a implementar completamente la acción sólo vamos a crear la estructura de la clase y veremos ideas de cómo terminar la implementación pues esta está fuera del alcance de este post):


// 1
using Sitecore.Framework.Rules;
namespace MiTienda.Commerce.Plugin.Custom.Actions
{
// 2
[EntityIdentifier("Adicionar producto [especificado] gratuitamente")]
// 3
public class AdicionarProductoGratisAction : IAction
{
// 4
public IRuleValue<string> TargetItemId { get; set; }
// 5
public void Execute(IRuleExecutionContext context)
{
// Implementación de la acción
}
}
}

  1. Importamos el namespace Sitecore.Framework.Rules el cual contiene interfaces y clases que necesitamos utilizar durante la implementación de la clase.
  2. El atributo EntityIdentifier nos permite establecer la metadata de la acción, en este caso el identificador que se va a mostrar luego en la intefaz de usuario en la aplicación SPEAK.
  3. La clase debe implementar la interfaz IAction, es la forma mediante la cual definimos que esta clase representa una acción en el framework de reglas de Sitecore.
  4. Definimos la propiedad “TargetItemId” que es de tipo IRuleValue, el cual es un tipo genérico donde podemos definir el tipo de dato de la propiedad (en este caso string), mediante la cual podemos proporcionar luego en la interfaz de usuario el producto que queremos adicionar gratuitamente.
  5. Implementamos el método Execute() que está definido en la interfaz IAction, el cual está encargado de ejecutar la acción deseada, en este caso adicionar el producto gratuitamente al carro de compras. Como ya dijimos no vamos a proveer la implementación de la acción pero como recomendación, se puede hacer uso del pipeline IAddCartLinePipeline para adicionar el producto al carro de compras y sin olvidar adicionar un ajuste de tipo CartLineLevelAwardedAdjustment al carro de compra para especificar la cantidad a descontar.

Luego de implementar esta clase debemos desplegar el Sitecore Commerce Engine para que Sitecore pueda “descubrir” esta nueva acción, como podemos ver en la siguiente imágen cuando intentamos adicionar una nueva acción:

Nueva acción
Nueva acción

Al seleccionar la acción y hacer click en “OK”, en el próximo paso, Sitecore nos pide que proporcionemos los valores para todas las propiedades definidas como IRuleValue, en este caso sólo “Target Item Id” proporcionando un control para buscar products en el catálogo:

Valor para
Valor para “Target Item Id”

Finalmente podemos ver la nueva acción adicionada en el listado de beneficios:

Beneficios con nueva acción adicionada
Beneficios con nueva acción adicionada

Conclusiones

Al igual que con las condiciones, crear la “infraestructura” necesaria para una nueva acción es sencillo, la dificultad sólo depende de la implementación de la misma, es decir, en la complejidad de las acciones concretas que queramos hacer cuando se ejecute la acción.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s