Update product price in a menu

Changed on

Cambia el precio, el precio con descuento o la disponibilidad del producto en un menú, sin modificar los demás menús. El precio actual en cada menú está en menus de GET /ecommerce/products/{productId}. Requiere edición de productos habilitada en la marca.

Cómo funcionan los menús y precios

Un menú es una lista de precios: dice qué productos se venden y a qué precio. En el administrador se llama menú y en la API precio: cada menú es un registro de GET /ecommerce/prices, y su _id es el menuId que aparece en menus de cada producto. Una marca puede tener varios menús, por ejemplo uno general, uno para un local y uno de almuerzo.

1. Cada pedido usa un solo menú. Los menús no se mezclan: el cliente ve el precio y la disponibilidad que el producto tiene en el menú que se está usando.

2. Cómo se elige el menú en la tienda online. Se revisan los menús habilitados de mayor a menor priority y se usa el primero que cumple todas estas condiciones:

  • storesIds está vacío o incluye el local del pedido. Mientras no se sepa el local, los menús con locales no aplican.
  • channels está vacío o incluye el canal del pedido. Si el cliente aún no elige cómo recibir el pedido, se considera delivery.
  • schedule está abierto a la hora de entrega menos el tiempo de preparación del local, o ahora si el pedido no es programado. El horario solo restringe si availableAtPeriods es true; si no, el menú aplica a toda hora, salvo los días cerrados (closedDays).
  • Faltan al menos daysBefore días de calendario para esa fecha.
  • segmentIds está vacío, o el cliente inició sesión y pertenece a alguna de esas audiencias.

Si ningún menú cumple, se usa el menú por defecto (isDefault), aunque no cumpla sus condiciones. Si la marca no tiene menú por defecto, se usa el de mayor priority. Si la marca tiene un solo menú habilitado, se usa siempre.

3. Productos no disponibles. Si el producto no está disponible en el menú que se usa, no aparece en la tienda. Si en el administrador tiene un mensaje de no disponible, aparece con ese mensaje, pero no se puede comprar. Un producto tampoco aparece si tiene un modificador obligatorio sin opciones disponibles en ese menú. Agotado (out-of-stock) es otra cosa: se marca por local, y el producto aparece como agotado, salvo que la marca active Ocultar productos no disponibles o sin stock: entonces los agotados no aparecen.

4. Cada menú tiene su propio precio. Cambiar el precio en un menú no cambia los demás. Para cambiarlo en toda la marca, cámbialo en cada menú donde el producto está disponible. Para cambiarlo solo en un local, canal u horario, usa el punto 2 para saber qué menú se usa ahí.

5. Descuentos. discountPrice es el precio final que paga el cliente, no un monto ni un porcentaje, y no puede ser mayor que el precio: si bajas price por debajo del descuento guardado, envía también discountPrice. Si es menor que el precio, la tienda muestra el precio normal tachado. En las respuestas viene como discount. Enviar discountPrice deja un solo descuento, y null lo quita. En el administrador se pueden guardar varios descuentos seguidos: en ese caso discount es el primero, pero el cliente paga el último.

6. Los cambios no son instantáneos. La tienda se actualiza en segundo plano, y el menú elegido para cada cliente se guarda hasta 15 minutos, así que un cambio en las condiciones de un menú puede tardar ese tiempo en verse.

put/ecommerce/products/{productId}/menus/{menuId}

Request

  • Base URL
    https://api.service.getjusto.com/v3
  • Auth
    none declared

Path parameters

productIdstring required

ID Justo o ID externo del producto.

menuIdstring required

ID Justo o ID externo del menú (GET /ecommerce/prices).

Request body

pricenumber

Precio base en la moneda de la marca. 0 significa gratis. Es obligatorio si el producto aún no tiene precio en ese menú.

discountPricenumber nullable

Precio con descuento: el precio final rebajado, menor o igual al precio base. No es un monto ni un porcentaje. Reemplaza los descuentos guardados en ese menú; null los quita. Si bajas price por debajo del precio con descuento actual, envía también discountPrice o null.

availableboolean

Si el producto se vende en ese menú. Al asignar un precio en un menú nuevo sin este campo, queda disponible.

Example request

{
  "price": 5490,
  "discountPrice": 4990,
  "available": true
}

Response

The OpenAPI spec

successboolean

Example response

{
  "success": true
}

Changes