Product Variants

Hoy vamos a resumir las Variantes de Productos y sus conceptos

Un articulo puede tener múltiples variantes (CC - https://pixabay.com/es/t-shirts-camisas-prendas-de-vestir-154312/)

Las variantes de productos (Product Variants)

Las variantes (Variants) son productos que entre sí tienen alguna diferencia pero tienen en común un producto base. El ejemplo clásico son los colores y tallas de una prenda de ropa. El producto base es la camisa (puede ser no vendible, es decir, no puedes comprar esa camisa sin elegir talla y/o color)  y los variantes pueden ser camisa XL azul; camisa M blanca; camisa ajustada estampado flores...

Variantes usando el modelo de datos de Hybris

Para modelar las variantes que queremos tenemos que tener en cuenta cómo Hybris trabaja la herencia en el modelo de datos y como ha modelado las variantes

VariantProduct extiende de Product
Modelado de las Variantes

VariantProduct es un subtipo de Product, incluye una relación con product, llamada baseProduct que (es una referencia Product a través de la pk). A su vez Product tiene un atributo llamado variantType que define el tipo de Variante a nivel de descriptores de Hybris (extiende de ComposedType)

Un ejemplo sencillo

Imagen de herencia entre variantes
Variantes - Extensión del modelo de datos


Por un lado tenemos un tipo nuevo Reloj con un atributo nuevo (mecanismo) que extiende de Product
Por otro lado tenemos una variante llamada ColorReloj que extiende de VariantProduct


¿Qué problema tenemos?

Efectivamente, ColorReloj al heredar de VariantProduct no dispone del atributo mecanismo

¿Qué solución tenemos?

Desde mi punto de vista, dos. Depende de si el atributo entra en juego para algún proceso de negocio o se va a utilizar únicamente para visualizar, buscar o filtrar.

Si es un atributo que se va a usar en la lógica de nuestro negocio tendremos que declarar mecanismo en Product
Variantes - Atributo en la Variante


Así la variante ColorReloj dispone del atributo color y mecanismo (heredado)

Si el atributo va a ser usado para visualizar, buscar, filtro, ordenación... Nos vale con hacer uso del Sistema de Clasificación de Hybris (Classification). La ventaja es que nos permite tener toda la potencia de los atributos de clasificación.

Con esto se puede generalizar en una regla a la hora de modelar (aunque obviamente habría que estudiar cada caso).
Si vamos a añadir un atributo que impacta en la lógica de negocio modificamos el modelo de datos. Si el atributo no impacta en el negocio lo incluimos a través del Sistema de Clasificación de Hybris

Incluir más variantes 

Visto el ejemplo anterior, si queremos incluir una nueva variante CorreaReloj tenemos que preguntarnos ¿queremos que el producto tenga el atributo color? Si es así simplemente debemos hacer que CorreaReloj extienda de ColorReloj

La variante CorreaReloj extiende de ColorReloj
Variantes - Nuevo variante Correa

En el acelerador B2C Apparel tenemos esa relación donde ApparelSizeVariantProduct extiende ApparelStyleVariantProduct  así un producto variante con atributo size dispone del atributo style


Productos Multi-dimensionales

No, no hablo de "demoproductos" del "Mundo del Revés".

Un producto multi-dimensional se compone de:

  1. VariantCategory -> Lo que llaman la dimensión, define el atributo diferenciador del producto. En nuestro ejemplo sería el Color, Tamaño, Mecanismo...
  2. VariantValueCategorys -> Es el valor, cuantía de ese atributo. Por ejemplo Rojo, Tamaño Caballero, Automático

¿Cómo Hybris modela Multi-Dimensional Products?


VariantCategory  y VariantValueCategory heredan de Category


Como vemos arriba VariantCategory y VariantValueCategory heredan de Category

GenericVariantProduct extiende de VariantProduct
VariantProduct es una suerte de clase abstracta, es decir, nunca se va a usar en las implementaciones, siempre serán usadas clases que la extiendan.

Con el modelo de arriba para implementar nuestra productos tenemos en cuenta que se usará el sistema y jerarquía de categorías de Hybris. Para incluir dimensones es
  1. VariantCategory se añaden al atributo conocido de supercategories de Product (Sería el BaseProduct)
  2. VariantValueCategory 
    1. El campo de supercategories hace referencia a la VariantCategory que dan valor
    2. El campo name es el valor
  3. GenericVariantProduct es el variante
    1. Tiene un código de producto diferente
    2. Referencia al baseProduct
    3. Tiene como supercategories a VariantValueCategory
  4. Product (el producto base) tiene el atributo variantType como GenericVariantProduct
Nota: Para distinguir correctamente en el Grid y el resto de páginas es conveniente que en el nombre del producto GenericVariantProduct aparezcan sus valores, es decir:
Reloj XXX Caballero Color Rojo Automático

En el accelerator B2B powertools, tenemos un ejemplo de cómo funcionan los Multi-Dimensional Products. Este acelerador incluye con soporte a 3 dimensiones pero se puede refactorizar Product Detail Page (PDP), Order Form y Shopping Cart para soportar más.

Más info.



Comentarios

Entradas populares de este blog

SAP Hybris Commerce - SAP Commerce Cloud Versión 1808

Páginas responsive en Hybris

Logs en Hybris Commerce