Las Sobrescrituras son configuraciones que permiten reemplazar campos y configuraciones para Productos dentro de Segmentos particulares en el sistema de YOM. Permite ajustar precios y condiciones de venta a un grupo de Comercios previamente segmentados. Esto facilita la personalización de precios y descuentos según diferentes criterios y períodos de tiempo.
¿Qué objetivo tienen las sobrescrituras?
Permitir que un Comercio vea de forma correcta y personalizada un catálogo de Productos. Esto implica que el comercio debe ver solo los productos que tiene asignados, al igual que con precios y condiciones comerciales correctas.
Consideración de diseño importante
Si bien el objeto de Producto también contiene información de precio y si el producto se encuentra habilitado o no, se tomó la decisión de diseño de que para todos los clientes (CPG) y todos los comercios estas características (precio y habilitado) siempre deberían venir desde un override. Esto con el objetivo de que el precio y la habilitación sean responsabilidad de un solo modelo.
¿Por qué y cómo se usan las sobrescrituras?
El problema de que un comercio vea el catálogo bien es un problema que cada CPG resuelve de forma particular y con reglas de negocio variadas. La solución de fuerza bruta a este problema es guardar el par (producto, comercio) para cada producto y comercio. Si bien esto es una solución correcta, produce una cantidad gigante de datos, por lo que es necesario usar una solución más eficiente: las sobrescrituras. En este caso se guardan dos pares de datos críticos (producto, segmento) que corresponde a la sobrescritura y (segmento, comercio) que corresponde al modelo de usersegments. De esta forma, si dos comercios comparten segmentos van a ver el mismo catálogo y no es necesario duplicar la información de productos. Esto permite reducir el tamaño de datos guardados en varios órdenes de magnitud.
Un detalle importante es que no es necesario que todos los productos tengan sobrescrituras para un segmento, y que un comercio puede pertenecer a varios segmentos. En caso de que un comercio tenga un producto modificado por dos segmentos, estas sobrescrituras se aplican en orden de prioridad más alta a más baja al momento de consultar el catálogo. Aplicar una sobrescritura consiste en modificar los campos que se encuentran en Override, al valor de la sobrescritura que se está aplicando. Si la sobrescritura no contiene un campo, no se modifica. De forma similar, el campo enabled de overrides determina si un producto está habilitado o no. Un producto está habilitado si el override de menor prioridad tiene como valor true; si tiene false, el producto no se ve para ese comercio.
Para asegurar que todos los productos estén habilitados y tengan precio por override, se estila crear un segmento base. Este es un segmento al que todos los comercios pertenecen. En este segmento base se crea una sobrescritura por producto. Esta sobrescritura se caracteriza por tener el campo enabled con valor false y una prioridad con un valor alto (es decir, los otros overrides sobrescriben el base). El valor que se suele usar para esto es 10000. También se le suele poner un precio de 99999, pero eso es algo que se hace para que sea más fácil encontrar algún error.
Ejemplos de negocio
Caso lista única de precio:
Si un cliente tiene una lista de precios que se usa para todos los comercios, se van a tener dos segmentos: el segmento base y el segmento que corresponde a la lista de precio única. Todos los comercios van a tener asignados estos dos segmentos. Y en el segmento de lista única se va a tener un override para cada producto (si la lista de precio no incluye un producto, el override base va a apagarlo).
Casos múltiples listas de precio:
Un comercio, una lista: esto ocurre cuando un comercio tiene una única lista de precio. Esto puede ocurrir por precios regionales, por condiciones comerciales, entre otros. En este caso, si existen N listas de precios, existen N+1 segmentos: el segmento base y un segmento por lista de precio. Cada comercio tiene dos segmentos: el segmento base y uno de los otros segmentos. En este caso puede que no todos los productos tengan override, debido a que existen productos que son exclusivos de ciertas regiones.
Un comercio con múltiples listas de precio: Esta situación ocurre cuando la segmentación de precios varía por categoría, o cuando existen restricciones para vender ciertos productos a un comercio (por ejemplo, alcohol). A continuación se presentan varios ejemplos.
| --- | --- | --- | --- | --- |
La estructura pricing permite definir Sobrescrituras relacionadas al precio del Producto dentro del Segmento.
| --- | --- | --- | --- | --- |
Ejemplo
"pricing": {
"pricePerUnit": 10000,
"operation": "replace",
"discountType": "percentage",
"discountList": [0.05, 0.10],
}
En este ejemplo:
"replace", reemplazando el precio."percentage".La estructura constraints permite definir sobrescrituras sobre el mismo campo en el objeto del Producto. Esto se usa principalmente para cambiar las unidades mínimas de compra para cierto Segmento.
| --- | --- | --- | --- | --- |
Ejemplo
{
"minUnit": 12,
"stepSize": 6
}
En este ejemplo, este segmento pasa a estar obligado a comprar mínimo 12 unidades del Producto, y de agregarlos en grupos de 6.
La estructura tax permite definir sobrescrituras sobre el mismo campo en el objeto del Producto. Esto se usa principalmente para cambiar el impuesto de compra para cierto Segmento.
| --- | --- | --- | --- | --- |
Ejemplo
{
"taxCode": "IVA-15",
"taxRate": 0.15,
"taxName": "IVA"
}