Para qué sirve y para quién
Suplementos es el catálogo de las elecciones que acompañan a un plato: el «punto de la carne», el «extra de queso», el tamaño, «sin cebolla». Se ordena en grupos:
- cada grupo dice cuántas opciones hay que elegir: un mínimo (1 o más lo hace obligatorio) y un máximo (0 es sin techo), y si una misma opción se puede repetir («doble de queso»);
- cada opción lleva su suplemento de precio: más, menos o gratis; puede salir elegida por defecto y, si tributa a otro IVA que el plato (un refresco dentro de un menú), su categoría fiscal propia;
- un grupo se engancha a productos o a categorías de Inventario, y se comparte: el mismo grupo «Salsas» sirve a todas las hamburguesas y a toda la categoría «Carnes».
Es Ventas quien pregunta los grupos en el TPV, cobra el suplemento y lo manda a cocina: esta app guarda el catálogo, dice qué grupos lleva cada artículo y es la única fuente del precio del suplemento: lo que mande el navegador no cuenta.
Quién la usa:
- El propietario, el administrador y el responsable crean, cambian y borran grupos y opciones, y los enganchan o sueltan.
- El empleado (camarero, cajero) consulta los grupos; quien lo vive cada día es él, en el TPV.
No es una variante de producto (una opción no lleva stock ni coste y no descuenta existencias) ni un menú a precio cerrado (eso es Menús).
Referencia adoptada
Contrastada con el barrido de mercado del módulo actual (20/08/2026) y con la ronda de este porte
(15/10/2026, skill market-decision); se adopta esto, no más:
- Square (modificadores): el grupo es un objeto propio y reutilizable, con mínimo y máximo de selecciones; una opción puede venir preseleccionada; se asigna a muchos artículos.
- Toast (grupos de modificadores): nombre de cocina distinto del comercial; el suplemento puede ser recargo o descuento; opciones por defecto; un pedido al que le falta un grupo obligatorio no se envía.
- Clover (grupos): no hay casilla «obligatorio»: obligatorio es «mínimo 1 o más».
- Lightspeed Restaurant: el grupo se cuelga de un artículo o de una categoría; un modificador no es una variante y no mueve stock; permite cantidades de la misma opción.
- LS Central (infocodes): el suplemento con otro tipo de IVA es su propia línea de venta.
- Revo XEF y Ágora (TPV de hostelería en España): grupos de «modificadores»/«suplementos» con mínimo, máximo y opción por defecto, editados en la misma ficha del grupo con sus artículos.
- Loyverse y Odoo PdV: las opciones y los artículos a los que se aplican se editan en pantalla, no por otra vía; el precio extra lo pone el catálogo.
Antes de empezar
- Suplementos necesita Inventario (los productos y categorías a los que se engancha un grupo) e Impuestos (la categoría fiscal propia de una opción). Encender Suplementos enciende las dos.
- Sin Ventas nadie pregunta los grupos en el TPV; sin Cocina la comanda no los lleva. Las dos hablan con Suplementos por sus servicios, nunca por sus tablas.
- Los suplementos van en euros con céntimos en pantalla y en céntimos enteros por la API; pueden ser negativos (un descuento) o cero (gratis).
Configuración inicial, paso a paso:
- Abre Suplementos y pulsa «Nuevo grupo»: nombre, y si hace falta nombre en la comanda, mínimo, máximo y si se repite (MODIFIER-F02).
- Abre el grupo (toca su fila) y añade sus opciones con su suplemento (MODIFIER-F04).
- En la misma hoja, en «Se aplica a», engánchalo a los productos o categorías que lo llevan (MODIFIER-F05).
- En el TPV, toca uno de esos artículos: sale la hoja con el grupo, su regla y el precio de cada opción (MODIFIER-F06, cuando Ventas la tenga).
Pantallas
Suplementos
Menú Suplementos (una sola entrada). Arriba, el título «Suplementos». Debajo, la tabla de grupos con el buscador «Buscar…» (busca por nombre y por nombre de comanda): Nombre (se ordena y se filtra), En la comanda (el nombre de cocina; vacío, el comercial), Elección (se ordena por el mínimo), Opciones (cuántas tiene), Se aplica a (a cuántos productos y categorías) y Orden (se ordena). La columna Elección dice la regla: «Opcional» u «Obligatorio (mín. N)», con « · máx. N» si hay techo y « · se repite» si una opción puede repetirse. Por orden y nombre; páginas de 50.
Quien puede gestionar ve «Nuevo grupo» y, en cada fila, Editar y Borrar. Tocar una fila abre la hoja del grupo, a todos.
Hoja del grupo
Título «Grupo — {nombre}» y su regla. Dos apartados:
- Opciones: cada una con su nombre, su nombre de comanda (si es otro), su suplemento («+1,00 €», «−0,50 €» o «Gratis»), su categoría fiscal propia si la tiene y la marca «Por defecto». Quien gestiona ve «Añadir opción» y, en cada una, Editar y Borrar. Vacío: «Este grupo todavía no tiene opciones.». Si tiene menos opciones de las que pide el mínimo (y no se repiten), un aviso lo dice: el TPV no podría completarlo.
- Se aplica a: cada producto («Producto · Hamburguesa (HAM-01)») o categoría («Categoría · Carnes») al que está enganchado; quien gestiona ve «Añadir producto o categoría» y, en cada uno, «Dejar de aplicar». Vacío: «Este grupo todavía no se aplica a nada: no saldrá en el TPV.».
De 20 en 20, con «Cargar más».
Formularios
- Grupo («Nuevo grupo» / «Editando grupo — {nombre}»): Nombre, «Nombre en la comanda», «Mínimo (1 o más = obligatorio)», «Máximo (0 = sin techo)», «Se puede repetir una opción» y Orden.
- Opción («Nueva opción» / «Editando opción — {nombre}»): Nombre, «Nombre en la comanda», «Suplemento» (en euros; negativo descuenta; vacío o 0, gratis), «Categoría fiscal propia» (se busca; vacía = la del plato), Orden y «Elegida por defecto».
- Enganchar («Aplicar «{grupo}» a…»): Producto o Categoría, y el buscador de cada uno.
- Borrar grupo u opción y Dejar de aplicar: piden confirmación diciendo qué se va con ello.
Estados de cada pantalla
| Estado | Qué ve la persona |
|---|---|
| Cargando | «Cargando…» mientras llega el primer resultado. |
| Vacío | «Todavía no hay grupos de suplementos.» (o «Sin resultados» con búsqueda o filtro), con «Nuevo grupo» si puede crear; en la hoja, los vacíos de cada apartado. |
| Error | El aviso de la tabla con «Reintentar»; un rechazo de un formulario sale dentro de él, junto a su campo. |
| Reconectando | Lo pintado se queda; una franja avisa «Reconectando…» hasta que vuelve la conexión. |
App inactiva (app_inactive) |
«Esta app no está activa en este negocio». |
| Sin permiso | No aparece lo que no puede hacer; si llega por otra puerta, «No tienes permiso». |
Flujos
| ID | Flujo | Estado |
|---|---|---|
| MODIFIER-F01 | Consultar y buscar los grupos | hecho |
| MODIFIER-F02 | Crear un grupo | hecho |
| MODIFIER-F03 | Cambiar o borrar un grupo | hecho |
| MODIFIER-F04 | Añadir, cambiar o quitar las opciones de un grupo | hecho |
| MODIFIER-F05 | Enganchar un grupo a productos o categorías, y soltarlo | hecho |
| MODIFIER-F06 | Elegir las opciones al vender un artículo | servidor hecho; la hoja es de Ventas (SALE-F11) |
| MODIFIER-F07 | Cobrar el suplemento: precio y IVA | servidor hecho; el cobro es de Ventas (SALE-F11) |
| MODIFIER-F08 | Que el suplemento salga en la comanda de cocina | servidor hecho; la comanda es de Ventas y Cocina (KITCHEN-F07) |
| MODIFIER-F09 | Soltar los grupos de un producto o una categoría que se borra | servidor hecho; corre cuando el worker reparta los avisos (fase 2) |
MODIFIER-F01 Consultar y buscar los grupos
Estado: hecho Actor: propietario, administrador, responsable, empleado Pantalla: Suplementos Pasos: 1. Abre Suplementos. 2. Lee la tabla: nombre, nombre de comanda, regla de elección, cuántas opciones, a cuántos productos y categorías se aplica y orden. 3. Para encontrar uno, escribe en «Buscar…» (nombre o nombre de comanda), ordena por una columna o filtra por nombre. Entra: los grupos del negocio. Sale: nada; solo lee. Si falla: el aviso de la tabla con «Reintentar»; sin grupos, «Todavía no hay grupos de suplementos.». Implicados: ninguno
MODIFIER-F02 Crear un grupo
Estado: hecho Actor: propietario, administrador, responsable Pantalla: Suplementos Pasos: 1. Pulsa «Nuevo grupo». 2. Escribe el Nombre (obligatorio, único en el negocio sin mirar mayúsculas: «Salsas» y «salsas» son el mismo grupo). 3. Si la comanda debe decir otra cosa, escribe «Nombre en la comanda»; vacío, cocina lee el nombre. 4. Pon el Mínimo (1 o más lo hace obligatorio; 0, opcional), el Máximo (0 es sin techo; si no es 0, no puede ser menor que el mínimo), si una opción se puede repetir y el Orden en que sale en el TPV. 5. Pulsa «Crear»: el formulario se cierra y el grupo sale en la tabla. Todavía no sale en el TPV: faltan sus opciones (F04) y dónde se aplica (F05). Entra: lo que escribe la persona. Sale: el grupo (avisa: grupo creado). No crea opciones ni enganches. Si falla: un nombre vacío o de más de 255 caracteres, un mínimo o máximo fuera de 0–50 o un máximo por debajo del mínimo salen debajo de su campo; un nombre que ya tiene otro grupo, «Ya hay un grupo con ese nombre.» debajo del Nombre. Lo escrito se queda. Implicados: ninguno
MODIFIER-F03 Cambiar o borrar un grupo
Estado: hecho Actor: propietario, administrador, responsable, asistente Pantalla: Suplementos Pasos: 1. En la fila del grupo pulsa Editar, cambia lo que haga falta y pulsa «Guardar». Lo que no se toca se queda como estaba. 2. Para borrarlo, pulsa Borrar: la confirmación dice cuántas opciones y cuántos enganches se van con él. Confirma. Entra: el grupo (por su id o su nombre) y los campos nuevos. Sale: el grupo cambiado (avisa: grupo cambiado) o borrado con sus opciones y sus enganches, en una sola operación (avisa: grupo borrado). Lo ya pedido o vendido no cambia: Ventas congela el suplemento en la línea. Si falla: los mismos rechazos que al crear; bajar el máximo por debajo de las opciones que ya salen por defecto, «Este grupo tiene más opciones por defecto que su máximo.». Un grupo que no existe, «Este grupo no existe.». Implicados: SALE-F11
MODIFIER-F04 Añadir, cambiar o quitar las opciones de un grupo
Estado: hecho Actor: propietario, administrador, responsable, asistente Pantalla: Suplementos (hoja del grupo) Pasos: 1. Abre el grupo y, en Opciones, pulsa «Añadir opción». 2. Escribe el Nombre (único dentro del grupo) y, si hace falta, el nombre de comanda. 3. Escribe el Suplemento en euros: positivo cobra de más, negativo descuenta, vacío o 0 es gratis. 4. Solo si la opción tributa distinto del plato, elige su categoría fiscal propia; vacía, hereda la del plato. 5. Marca «Elegida por defecto» si el TPV debe traerla ya marcada. En un grupo de máximo 1, marcar otra desmarca la anterior; con otro máximo, no puede haber más opciones por defecto que el máximo. 6. Pulsa «Crear». Para cambiarla, Editar; para quitarla, Borrar (pide confirmación). Entra: el grupo, nombre, nombre de comanda, suplemento, categoría fiscal propia, orden y si es por defecto. Sale: la opción (avisa: opción creada, cambiada o borrada). Borrarla la retira del catálogo: lo ya pedido conserva su copia congelada, también en la comanda. Si falla: un nombre vacío o repetido en el grupo, un suplemento que no es un importe, una categoría fiscal que no existe en Impuestos o más opciones por defecto que el máximo salen junto a su campo. Una opción con categoría fiscal propia se cobra en una línea aparte, que no puede valer cero ni menos: «Una opción con su propia categoría fiscal se cobra en una línea aparte: su suplemento tiene que ser mayor que cero.». Un grupo admite hasta 100 opciones. Implicados: SALE-F11
MODIFIER-F05 Enganchar un grupo a productos o categorías, y soltarlo
Estado: hecho Actor: propietario, administrador, responsable, asistente Pantalla: Suplementos (hoja del grupo) Pasos: 1. Abre el grupo y, en «Se aplica a», pulsa «Añadir producto o categoría». 2. Elige Producto o Categoría y búscalo por su nombre (o el SKU, en un producto). 3. Pulsa «Aplicar». El mismo grupo puede colgar de muchos productos y categorías, y un producto puede llevar varios grupos: salen en el TPV por su Orden y su nombre. 4. Para quitarlo, pulsa Dejar de aplicar en esa fila (pide confirmación); después puede volver a engancharse. Entra: el grupo y el producto o la categoría, de Inventario (por su id, o por su nombre o SKU). Sale: el enganche (avisa: enganche hecho o soltado). En el TPV, el artículo pregunta sus grupos y los de todas sus categorías, cada grupo una sola vez. Si falla: un producto o una categoría que no existe o está borrado, «Este producto no existe en este hub.» o «Esta categoría no existe.»; un enganche que ya existe, «Este grupo ya se aplica ahí.». Implicados: INVENTORY-F01, INVENTORY-F06
MODIFIER-F06 Elegir las opciones al vender un artículo
Estado: servidor hecho; la hoja del TPV es de Ventas (SALE-F11), pedida en «Contrato con Ventas» Actor: empleado, responsable Pantalla: Ventas: Vender Pasos: 1. En el TPV, toca un artículo que tiene grupos (suyos o de cualquiera de sus categorías): se abre una hoja con su nombre. Sin grupos, el artículo entra directo. 2. Cada grupo dice su regla: «Elige N» si es obligatorio, «Hasta N» si es opcional con techo, «Opcional» si no tiene techo; cada opción lleva su suplemento si no es cero y las opciones por defecto ya salen marcadas. 3. Toca las opciones (volver a tocar una la quita; en un grupo que se repite, un contador suma y resta). «Añadir» espera mientras un grupo tenga menos del mínimo o más del máximo. 4. Pulsa «Añadir»: la línea entra con las opciones en el orden elegido y su precio ya sumado. Entra: los grupos y opciones de este artículo (servicio «grupos de un producto»). Sale: la línea con las opciones elegidas; del TPV solo viajan los ids de las opciones. Si falla: un grupo sin opciones no se pregunta. Un grupo enganchado al producto y a su categoría sale una sola vez. Implicados: SALE-F11
MODIFIER-F07 Cobrar el suplemento: precio y IVA
Estado: servidor hecho; el cobro es de Ventas (SALE-F11), pedido en «Contrato con Ventas» Actor: sistema Pantalla: ninguna Pasos: 1. Al añadir la línea (a una cuenta o a una venta directa), Ventas pide a Suplementos que compruebe y valore las opciones elegidas para ese artículo. 2. Suplementos comprueba que cada opción es de un grupo de ese artículo, que cada grupo tiene entre su mínimo y su máximo y que nada se repite donde no se puede; devuelve cada opción con su precio de catálogo, sus nombres y su categoría fiscal. 3. Una opción sin categoría fiscal propia, o con la del plato, se suma al precio de la línea; una con otra categoría se cobra en una línea propia, hija de la del plato, con su tipo. 4. Ventas congela esa copia en la línea: cambiar o borrar la opción después no cambia lo que paga esa mesa. Entra: el artículo y las opciones elegidas, en orden. Sale: las opciones con su precio, el total que se suma a la línea y cuáles van en línea propia; ninguna mueve stock. Si falla: una opción que no es de ese artículo, «Esta opción no se ofrece con este producto.»; un grupo por debajo de su mínimo, «Elige al menos N en «Grupo».»; por encima de su máximo, «Elige como mucho N en «Grupo».»; una opción repetida donde no se puede, ««Opción» no se puede repetir.»; unos descuentos que dejarían el plato por debajo de cero, «Estas opciones dejan el precio de «Plato» por debajo de cero.»; una opción con suplemento en un artículo que se vende a peso o por medida, ««Artículo» se vende a peso o por medida: no admite una opción con suplemento.». La línea no entra. Implicados: SALE-F11
MODIFIER-F08 Que el suplemento salga en la comanda de cocina
Estado: servidor hecho; la comanda es de Ventas y Cocina (KITCHEN-F07), pedida en «Contrato con Cocina» Actor: sistema Pantalla: ninguna Pasos: 1. Al valorar las opciones (F07), Suplementos da también el texto de cocina: el nombre de comanda de cada opción (o el nombre, si no tiene), en el orden elegido, separados por «, ». 2. Ventas lo congela en la línea y lo manda con la comanda; Cocina lo pinta debajo del plato. Entra: las opciones elegidas. Sale: el texto de cocina («+QUESO, -CEBOLLA»). Si falla: nada que no sea F07: si la valoración falla, la línea no entra. Implicados: KITCHEN-F07, SALE-F20
MODIFIER-F09 Soltar los grupos de un producto o una categoría que se borra
Estado: servidor hecho; corre cuando el worker reparta los avisos (fase 2) Actor: sistema Pantalla: ninguna Pasos: 1. Alguien borra un producto o una categoría en Inventario. 2. Suplementos suelta los grupos que colgaban de él (avisa: enganche soltado, uno por grupo). Entra: el aviso de Inventario (producto borrado, categoría borrada). Sale: los enganches soltados. Mientras tanto (fase 1), un enganche a algo borrado no se ve ni se pregunta en el TPV. Si falla: repetir el aviso no cambia nada. Implicados: INVENTORY-F04, INVENTORY-F07
Servicios: lo que entra y lo que sale
Todo se puede pedir por las pantallas, el asistente (por voz o por texto, con la sesión de la propia
persona) y la API, con las mismas reglas y los mismos permisos. Pensado para la voz: un grupo se nombra
por su id o su nombre («grupo Salsas»), una opción por su id o su nombre y su grupo («opción Sin cebolla
de Extras»), un producto por su id, su SKU o su nombre y una categoría por su id o su nombre. Si un
nombre casa con varios, se rechaza diciendo cuáles (409 *_ambiguous).
Lo que ofrece: consultas (leen, no cambian nada)
| Qué da | Quién puede | Flujos | Servicio |
|---|---|---|---|
| Los grupos, con búsqueda, filtros (nombre, obligatorio), orden y páginas (hasta 100) | ver | F01 | modifier.group.list |
| Un grupo por su id o su nombre | ver | F03 | modifier.group.get |
| Las opciones, de un grupo o todas, con búsqueda y páginas | ver | F04, F07 | modifier.option.list |
| Los enganches, de un grupo, de un producto o de una categoría, con páginas | ver | F05 | modifier.link.list |
| Los grupos con sus opciones de un producto (los suyos y los de todas sus categorías, una vez cada uno) | ver | F06 | modifier.group.for_target |
| La comprobación y valoración de unas opciones elegidas para un producto: precio, nombres, categoría fiscal, total a sumar y texto de cocina | ver | F07, F08 | modifier.selection.resolve |
Los grupos, un grupo, las opciones, los enganches y los grupos de un producto se pueden seguir en vivo.
Lo que ofrece: acciones (cambian datos)
| Qué hace | Quién puede | Flujos | Servicio |
|---|---|---|---|
| Crea un grupo | gestionar | F02 | modifier.group.create |
| Cambia un grupo (lo que no se manda se queda) | gestionar | F03 | modifier.group.update |
| Borra un grupo con sus opciones y enganches | gestionar | F03 | modifier.group.delete |
| Añade una opción a un grupo | gestionar | F04 | modifier.option.create |
| Cambia una opción (lo que no se manda se queda) | gestionar | F04 | modifier.option.update |
| Borra una opción | gestionar | F04 | modifier.option.delete |
| Engancha un grupo a un producto o una categoría | gestionar | F05 | modifier.link.attach |
| Suelta un grupo de un producto o una categoría | gestionar | F05 | modifier.link.detach |
Lo que avisa
| Aviso | Cuándo | Qué lleva | Servicio |
|---|---|---|---|
| Grupo creado, cambiado o borrado | F02, F03 | El grupo (id, name) |
modifier.group.created, .updated, .deleted |
| Opción creada, cambiada o borrada | F04 | La opción, su grupo, su nombre y su suplemento | modifier.option.created, .updated, .deleted |
| Enganche hecho o soltado | F05, F09 | El grupo y el producto o la categoría | modifier.link.attached, .detached |
A qué reacciona
| Aviso | De | Qué hace | Servicio |
|---|---|---|---|
Producto borrado (inventory.product.deleted) |
Inventario | Suelta los grupos de ese producto (F09) | modifier.link.drop_product |
Categoría borrada (inventory.category.deleted) |
Inventario | Suelta los grupos de esa categoría (F09) | modifier.link.drop_category |
Lo que necesita de otras apps
- Inventario (requisito): sus productos y categorías, a los que apunta cada enganche, y las categorías de cada producto, para saber qué grupos lleva en el TPV.
- Impuestos (requisito): la categoría fiscal propia de una opción.
Quién la usa
| App | Para qué | Servicio |
|---|---|---|
| Ventas | Pregunta los grupos de un artículo en el TPV y comprueba y valora lo elegido al añadir la línea (pedido en «Contrato con Ventas») | modifier.group.for_target, modifier.selection.resolve |
| Cocina | No lee Suplementos: recibe de Ventas el texto de cocina de cada línea (pedido en «Contrato con Cocina») | — |
Quién puede qué
| Permiso | Propietario | Administrador | Responsable | Empleado | Servicio |
|---|---|---|---|---|---|
| Ver grupos, opciones y enganches; pedir los grupos de un producto y valorar una elección | sí | sí | sí | sí | modifier.view |
| Crear, cambiar y borrar grupos y opciones; enganchar y soltar | sí | sí | sí | no | modifier.manage |
Los papeles llegan del SaaS con prefijo (hub_owner, hub_admin, hub_manager, hub_employee); el
cajero del producto actual es un empleado.