Criterios de sustitución y Comentarios en Items y Pedidos
Para brindar una mejor experiencia de compra, Janis permite que el cliente deje comentarios o ante la potencial faltante de productos, anticipe una decisión de reemplazo o no sustitución, dejando constancia de esto tanto en el backoffice de Janis como en el momento del picking.
1. Criterios de sustitución
1. ¿Qué son los criterios de sustitución?
La funcionalidad de Criterios de Sustitución permite que la tienda o el cliente establezcan diferentes políticas de reemplazo de productos faltantes o que al momento del picking no se encuentren disponibles para la venta por cualquier razón, entonces se habilita la opción de entregar un producto similar, por ejemplo.
A fines de que el cliente pueda sugerir que criterio se debiera aplicar en su pedido o productos individuales, es que Janis permite hacer llegar desde el front-end de la tienda ecommerce esta información, para que se muestre luego dentro de la plataforma y en la app de picking.
2. ¿Cuáles son los criterios de sustitución disponibles en Janis?
Los criterios de sustitución disponibles en Janis son los siguientes:
- No sustituir
- Misma marca distinto tamaño
- Marca propia
- Precio similar, cualquier marca
- Peso similar, cualquier marca
- Criterio tienda (criterio del picker)
- Llamada telefónica
2.A. Criterios de sustitución default
En caso que el pedido se genere sin un criterio de sustitución definido, es posible definir un criterio default para que aplique a todos los ítems.
Para establecer un criterio de sustitución default, dentro de las configuraciones de pedidos se debe seleccionar el criterio de sustitución que se quiera para todos los ítems.
2.B. Ejemplo de implementación en la tienda online
Generalmente se implementa sobre la sección del cart, en donde se sugiere aclarar al cliente de forma sencilla el resultado u operatoria de cada opción.
A su vez es posible que el desarrollo personalizado contemple un selector general para todo el pedido y otro para cada producto individual.
Esto es sólo un ejemplo de una implementación productiva que compartimos, pero dependerá de cómo sean sus especificaciones y el desarrollo que realice su agencia de front.

Ejemplo de un cliente Fizzmod con su implementación de Front con Vtex.
3. Comentarios en Items
Si un cliente quiere dejar un comentario específico para un item en una orden, por ejemplo "Feteado grueso" o "Elegir la banana verde" puede realizarlo con Janis .
Cuando un item tiene un comentario el picker va a visualizarlo en la Orders App cuando se el momento de pickear ese item.
4. Comentarios en la Orden
Los clientes pueden dejar observaciones generales a nivel de pedido en el ecosistema Janis. A diferencia de los comentarios que se asignan por ítem, estas observaciones no están asociadas a un producto puntual, sino que aplican al pedido completo. Algunos ejemplos comunes son: “Aplicar descuento de empleados”, “Envolver para regalo el pedido”.
Actualmente, existe el campo customerNote en el body para la creación de pedidos por API (ver https://docs.janis.in/v2/service/oms#operation/createOrder), que se completa a partir de un campo en customApp de VTEX en caso que el origen de los pedidos provenga de esa plataforma.
Los comentarios generales se pueden observar tanto en Janis web como en Orders App. Algunos ejemplos:
Monopicking
Multipicking
Info de la orden en Orders App
En el resumen de la orden en Orders App
En el resumen con Multipicking
En la orden

5. ¿Cómo integrar criterios de sustitución?
Al ingresar pedidos mediante API o bien, desde una plataforma específica de Ecommerce, los criterios de sustitución pueden hacerse mediante customApp.
Para esto, en una customApp se debe agregar el campo "Fields" y dentro debe ingresarse el criterio de sustitución y las comentarios del cliente sobre cada ítem.
Fields:
-
substitutionCriterias: Para los criterios de sustitución de cada item. Guarda un objeto con key-value: { [id de sku]: [id del criterio] }
-
customerNotes: Para las notas del cliente de cada item. Guarda un objeto con key-value: { [id de sku]: [comentario del cliente] }
-
orderCustomerNotes: Para las notas del cliente a nivel de Orden. Guarda un objeto de tipo string: [comentario del cliente] }
Los tipos de sustitutos para SKUs y la orden se basan en la siguiente tabla.
| Descripción | Criterio SKU |
|---|---|
| Sin criterio | - |
| No sustituir | doNotSubstitute |
| Misma marca distinto tamaño | sameBrand |
| Marca propia | whiteLabel |
| Precio similar, cualquier marca | similarPrice |
| Peso similar, cualquier marca | similarWeight |
| Criterio tienda (criterio del picker) | storeCriteria |
| Llamada telefónica | phoneCall |
Ejemplos de código para implementadores externos
Prueba desde la consola del navegador
Los siguientes ejemplos pueden ser ejecutados en la consola de Chrome desde el checkout de VTEX.
Los siguientes ejemplos son únicamente para pruebas, no deben ser utilizados en producción ya que contienen features que podrían no ser compatibles con un gran porcentaje de navegadores.
const appId = 'janis';
const customData = vtexjs.checkout.orderForm.items.reduce((acum, item) => {
const {
substitutionCriterias,
customerNotes
} = acum;
return {
substitutionCriterias: {
...substitutionCriterias,
[item.id]: 'storeCriteria'
},
customerNotes: {
...customerNotes,
[item.id]: 'Nota de ejemplo'
}
};
}, {});
fetch(`/api/checkout/pub/orderForm/${vtexjs.checkout.orderFormId}/customData/${appId}`, {
method: 'PUT',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
substitutionCriterias: JSON.stringify(customData.substitutionCriterias),
customerNotes: JSON.stringify(customData.customerNotes)
})
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
Ejemplos de json recibido desde VTEX:
Para pedidos generados desde VTEX, ahora se permite agregar observaciones generales en el pedido, visibles para los operadores en distintas instancias del flujo.
"customData": {
"customApps": [
{
"fields": {
"substitutionCriterias": "{\"25\":\"storeCriteria\",\"1587\":\"storeCriteria\"}",
"customerNotes": "{\"25\":\"blanco o verde\"}",
"orderCustomerNote": "Es un regalo, por favor envolver"
},
"id": "janis",
"major": 1
}
],
"customFields": []
}
Updated 14 days ago