Skip to main content
Algunos POS guardan un PLU distinto por cada configuración de un ítem. En este ejemplo cada combinación de tamaño y masa es su propio producto, pero el cliente ve una sola tarjeta por pizza y responde dos preguntas. Las respuestas deciden qué id de producto entra al pedido. Mira Productos — variantes para los conceptos.

Qué incluye este ejemplo

  • Ambas bases comparten los grupos size y crust. Cada opción lista en product_ids los productos de las dos pizzas.
  • Las pizzas grandes tienen el grupo de modificadores extra-toppings; las medianas no tienen ninguno. Los grupos de modificadores van en los productos variante, nunca en la base.
  • Las opciones de tamaño tienen imagen y descripción; las de masa no.

Qué ve el cliente

Tomando como ejemplo la pizza hawaiana:
  1. La tarjeta muestra Desde $12.99. Como se omitió el precio desde, la sincronización lo calculó a partir de la variante seleccionable más barata (haw-m-thin).
  2. El detalle pregunta primero Tamaño y luego Masa, y muestra los grupos de modificadores solo cuando la variante ya está resuelta.
  3. Al elegir Grande, Delgada desaparece porque no existe la hawaiana grande delgada. Como Gruesa queda como única opción, se selecciona automáticamente.
  4. Al elegir Mediana, Gruesa sigue visible pero deshabilitada porque haw-m-thick está agotado.
  5. La línea del carrito es haw-l-thick a $17.99, más los toppings extra. La base hawaiian nunca aparece en un pedido.

Request

variants.json

Puntos clave

  • La base abre las preguntas. hawaiian define pricing.variant_group_ids: ["size", "crust"] y deja vacío modifier_group_ids.
  • El precio de la base nunca se cobra. Aquí las bases usan price: 0, así que la tarjeta muestra el precio Desde calculado (las tarjetas lo muestran cuando starting_price es mayor que price).
  • Cada producto variante dice cómo se selecciona. haw-l-thick define pricing.variants: [{ "product_id": "hawaiian", "variant_group_option_ids": ["large", "thick"] }], con una opción de cada grupo de la base.
  • Cada opción lista sus productos. La opción large lista todas las pizzas grandes de ambas bases. La sincronización rechaza el payload si una opción y el pricing.variants de un producto no coinciden.
  • Las combinaciones que no existen simplemente se omiten. No hay haw-l-thin, así que el cliente no puede llegar a esa combinación.
  • Solo las categorías listan la base. Los productos variante no están en ninguna categoría; entran al menú porque una base del menú apunta a ellos.
  • Un producto puede ser variante de varias bases. Agrega una entrada en pricing.variants por cada base, cada una con sus opciones.

Relacionado

Productos — variantes

Conceptos y reglas de validación

Grupos de modificadores multinivel

Extras que se suman a un producto