> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Menús

> Arma la carta de cada canal a partir de una sola, sin mantener cinco versiones del mismo producto en paralelo.

Un menú responde una pregunta: *¿qué se vende?* Lo que cambia es **dónde**. La carta del local no es la de delivery, la del aeropuerto no es la de la sucursal del centro, y a las dos de la mañana no se vende lo mismo que al mediodía. Sostener cinco cartas en paralelo, producto por producto, es donde se cuelan los errores que después alguien descubre en un ticket.

Esta pantalla existe para que tengas muchas cartas distintas **sin mantenerlas cinco veces**. Navega a **Restaurant OS → Menú y Productos → Menús**.

<Frame>
  <img src="https://mintcdn.com/firepos/fMgbql6u0dMQH9DE/images/manuals/backoffice/menus/01-listado.png?fit=max&auto=format&n=fMgbql6u0dMQH9DE&q=85&s=d37aa2dcee2f5ec895e12b75a988ec18" alt="Listado de menús en vista de árbol" width="3200" height="2000" data-path="images/manuals/backoffice/menus/01-listado.png" />
</Frame>

***

## Lo mínimo que hay que saber

<Note>
  **1. Ya tienes un menú, aunque no lo hayas creado.** Es el **Golden**, y contiene todo tu catálogo. Se crea solo cuando cargas productos, y no se puede eliminar.

  **2. Un menú custom hereda del Golden y solo guarda las diferencias.** No es una copia: si mañana agregas un producto al catálogo, el custom también lo tiene. Lo único que guarda es en qué se aparta.

  **3. El tipo de fulfillment se elige al crear el menú y no se puede cambiar nunca más.** Es el único campo sin vuelta atrás de esta pantalla.
</Note>

***

## El camino simple

No necesitas crear ningún menú para empezar a vender.

Cargas tus productos en el catálogo y el **Golden** se arma solo con todos ellos. Ese es tu menú, y sirve para todos los canales hasta que aparezca una razón para que no sirva.

El Golden viene marcado con la etiqueta **Golden**, no tiene fulfillment asignado —sirve para todos— y no se puede eliminar: es el catálogo entero, el piso del que cuelga todo lo demás.

<Tip>
  Si vendes lo mismo en todos lados, esto es todo lo que necesitas. El resto del manual es para cuando aparece la segunda carta.
</Tip>

***

## Golden y custom: dos maneras de tener un menú

|                       | Golden                                | Custom                                       |
| --------------------- | ------------------------------------- | -------------------------------------------- |
| Cómo nace             | Solo, al cargar productos al catálogo | Lo creas tú                                  |
| Qué contiene          | Todo el catálogo                      | Lo que hereda del padre, más tus diferencias |
| Fulfillment           | Ninguno: sirve para todos             | Uno solo, y es definitivo                    |
| Se puede eliminar     | No                                    | Sí                                           |
| Pestaña **Overrides** | No la tiene                           | Sí: es donde vive lo que cambiaste           |

<Info>
  **Por qué "hereda" y no "copia".** Una copia se congela el día que la haces: tres meses después le faltan los veinte productos que entraron al catálogo desde entonces, y nadie lo nota hasta que un cliente pregunta. Un menú custom no tiene ese problema porque no guarda productos, guarda **diferencias**. Lo que no cambiaste sigue viniendo del padre, siempre al día.

  Es la misma lógica de las [listas de precios conectadas](/es/manuals/backoffice/price-lists), aplicada a la estructura en vez de al precio.
</Info>

***

## Crear un menú custom

Botón **Crear menú custom**, arriba a la derecha. Son cuatro campos y solo uno es difícil.

<Frame>
  <img src="https://mintcdn.com/firepos/fMgbql6u0dMQH9DE/images/manuals/backoffice/menus/02-crear.png?fit=max&auto=format&n=fMgbql6u0dMQH9DE&q=85&s=f0c5b4457425e349e2cd95b65ffc6e28" alt="Diálogo de creación de un menú custom" width="1040" height="1412" data-path="images/manuals/backoffice/menus/02-crear.png" />
</Frame>

| Campo                                | Qué poner                                                                                         |
| ------------------------------------ | ------------------------------------------------------------------------------------------------- |
| **Menu name** *(obligatorio)*        | El nombre con el que lo vas a buscar dentro de seis meses: *Madrugada*, *Aeropuerto*, *Desayuno*. |
| **Base menu**                        | De quién hereda. Ver abajo.                                                                       |
| **Description** *(opcional)*         | Para qué es. *"Activo de 22:00 a 06:00 para delivery en zonas urbanas"*.                          |
| **Fulfillment type** *(obligatorio)* | Delivery, pickup, salón… **No se puede cambiar después.**                                         |

### El campo que importa: Base menu

De quién hereda decide cuánto trabajo vas a tener de aquí en adelante.

| Opción                          | Qué significa                                                        | Cuándo usarla                                                                                 |
| ------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **Golden Menu** *(por defecto)* | Arranca con todo el catálogo y solo guardas lo que quites o cambies. | Casi siempre.                                                                                 |
| **No parent (empty menu)**      | Menú vacío. Agregas categorías y productos a mano.                   | Una marca nueva que no comparte nada con el catálogo actual.                                  |
| **Otro menú custom**            | Hereda de un custom que ya armaste.                                  | Cuando ya tienes un menú de delivery y necesitas una variante de ese, no del catálogo entero. |

<Note>
  **La herencia llega hasta tres niveles**: Golden → custom → custom. No hay un cuarto. El selector solo te ofrece los menús que todavía pueden ser padres; si un menú no aparece en la lista, es porque colgar algo de él pasaría el límite.
</Note>

Al confirmar con **Create and edit menu** el menú se crea y te deja directamente en el editor.

***

## El fulfillment se elige una sola vez

<Warning>
  **El tipo de fulfillment no se puede cambiar después de crear el menú.** Si creaste el menú de la madrugada como *pickup* cuando era para *delivery*, no hay forma de corregirlo: hay que crear otro menú y volver a armarlo.

  El propio diálogo lo dice antes de que confirmes: *"The menu belongs to a single fulfillment type and it cannot be changed later"*. Es la línea que conviene leer dos veces.
</Warning>

Un mismo vendor puede tener **varios menús para el mismo fulfillment** —tres menús de delivery, por ejemplo, uno por franja horaria o por zona—. Lo que no puede es un menú que sirva para dos fulfillments a la vez. El único que sirve para todos es el Golden, que no tiene fulfillment asignado.

***

## Qué te dice el listado

El listado es un **árbol**: los menús custom cuelgan de su padre y se pliegan y despliegan. Así se ve de un vistazo quién hereda de quién.

| Columna                       | Qué mirar                                                                         |
| ----------------------------- | --------------------------------------------------------------------------------- |
| **Name**                      | El nombre, la descripción y de quién hereda (*Based on*).                         |
| **Type**                      | **Golden** o **Custom**.                                                          |
| **Fulfillment**               | Para qué tipo de entrega sirve. **—** en el Golden: sirve para todos.             |
| **Products** · **Categories** | Cuántos tiene, ya contando lo heredado.                                           |
| **Overrides**                 | Cuántas diferencias guardaste respecto del padre. **—** si no tocaste nada.       |
| **Status**                    | **Published** · **Partial** · **Borrador** · **Archived**, con un punto de color. |
| **Last publish**              | Cuándo salió al canal por última vez.                                             |

Debajo del estado pueden aparecer dos avisos: **sync pending** (se mandó y el canal todavía no confirmó) y **sync failed** (el canal rechazó el envío). Los dos se resuelven en la pantalla de [Asignación de menús](/es/manuals/backoffice/menu-assignments), no aquí.

Arriba tienes búsqueda por nombre y tres filtros: tipo, estado y fulfillment.

<Note>
  **Si buscas el listado de asignaciones aquí, ya no está.** Vivía en una pestaña de esta pantalla y se mudó a [Asignación de menús](/es/manuals/backoffice/menu-assignments), que es una pantalla propia y hace bastante más.
</Note>

***

## Armar el menú: la pestaña Structure

El editor tiene tres pestañas —**Structure**, **Overrides** e **History**— y en Structure es donde se trabaja.

<Frame>
  <img src="https://mintcdn.com/firepos/fMgbql6u0dMQH9DE/images/manuals/backoffice/menus/03-structure.png?fit=max&auto=format&n=fMgbql6u0dMQH9DE&q=85&s=6b192041ab9699e14522bf9a2460ed9f" alt="Pestaña Structure del editor de menús" width="3200" height="2000" data-path="images/manuals/backoffice/menus/03-structure.png" />
</Frame>

* **Add category** y **Add** *(dentro de cada categoría)* abren un buscador del catálogo — ofrecen lo que ya existe en [Productos](/es/manuals/backoffice/products) y [Categorías](/es/manuals/backoffice/categories). Lo que agregas se suma a este menú y no toca a nadie más.
* **Se reordena arrastrando.** Las categorías entre sí y los productos dentro de cada categoría. El orden que dejas es el orden en que el cliente ve la carta.
* Dos vistas del mismo menú: **Visual**, para acomodar y ver cómo queda, y **Table**, para revisar muchos productos de corrido con sus precios y sus marcas.

***

## Guardar es todo lo que hay que hacer

Esta es la parte que sorprende a todo el mundo: **en el editor no hay botón de publicar**.

El menú mantiene su estructura al día **solo con guardar**. Lo que antes eran botones de publicar, sincronizar y previsualizar dentro del editor se mudó entero a la pantalla de asignaciones, porque publicar no es una propiedad del menú: es una decisión sobre en qué tienda y en qué canal se usa.

Mientras tengas cambios sin guardar verás el chip ámbar **Unsaved changes**. Con **Save draft** pasa a **Draft saved**.

<Warning>
  **Si te vas del editor con cambios sin guardar, se pierden y nadie te pregunta nada.** A diferencia de Listas de precios, esta pantalla no tiene una guarda que te detenga al salir: el chip **Unsaved changes** es todo el aviso que hay.

  Guarda antes de cambiar de pestaña, de menú o de pantalla.
</Warning>

***

## Sacar no es lo mismo que ocultar

Dos acciones que se parecen y hacen cosas distintas. La diferencia aparece cuando quieres volver atrás.

|               | **Remove from menu**                             | **Hide**                                                             |
| ------------- | ------------------------------------------------ | -------------------------------------------------------------------- |
| Qué hace      | Saca el producto del menú por completo           | Lo deja en el menú, pero no se muestra                               |
| Dónde queda   | En la pestaña **Removed** del diálogo de agregar | En la pestaña **Hidden**                                             |
| Cómo vuelve   | **Restore**                                      | **Show**                                                             |
| Cuándo usarlo | El producto no va en esta carta, punto           | Está fuera de venta por un rato, pero sigue siendo parte de la carta |

La propia interfaz lo resume: *"Removed products are taken out of this menu entirely. To keep a product but not show it, use Hide instead."*

<Warning>
  **Nada de esto sirve para "se acabó a mitad del servicio".** Sacar u ocultar un producto aquí es una decisión de carta, permanente hasta que alguien la deshaga a mano. Si lo que pasó es que se terminaron las papas a las dos de la tarde, eso se resuelve en [Agotados](/es/manuals/backoffice/out-of-stock), que vuelve solo al cierre y no te obliga a acordarte.
</Warning>

***

## Lo que puedes cambiar solo en este menú

Un menú custom puede apartarse del padre en varias cosas a la vez. Cada campo que cambias queda marcado con un chip azul **Override**, y todas las diferencias juntas se ven en la pestaña **Overrides**.

<Frame>
  <img src="https://mintcdn.com/firepos/fMgbql6u0dMQH9DE/images/manuals/backoffice/menus/04-overrides.png?fit=max&auto=format&n=fMgbql6u0dMQH9DE&q=85&s=9a83fa6c2f8ecf2ab914ad5bf513fb91" alt="Pestaña Overrides con las diferencias respecto del menú padre" width="3200" height="2000" data-path="images/manuals/backoffice/menus/04-overrides.png" />
</Frame>

| Qué puedes cambiar             | En                                                                                    |
| ------------------------------ | ------------------------------------------------------------------------------------- |
| **Name** · **Description**     | Producto y categoría                                                                  |
| **Image**                      | Producto y categoría — *"Only applies to this menu. The base image stays untouched."* |
| **Visibility** *(Hide / Show)* | Producto y categoría                                                                  |
| **Availability**               | Producto                                                                              |
| **Modifiers**                  | Producto: nombre del grupo, mínimos y máximos, qué opciones se ofrecen                |
| **Price by service type**      | Producto                                                                              |

La pestaña **Overrides** encabeza con *"Inherits from \<menú padre> — this tab shows only the differences"* y separa tres bloques: diferencias de producto, productos sacados y overrides de categoría. Cada uno tiene **Reset**, y arriba está **Reset all**: devuelven ese campo —o todos— al valor del padre.

<Info>
  **El chip Price que verás ahí no es un cambio del menú.** Es la diferencia entre lo que cuesta el producto en la lista de precios con la que estás mirando el menú y su precio en el catálogo, más la cuenta de precios de opciones de modificadores fijados en esa lista. Aparece junto a los demás para que veas todas las diferencias en un solo lugar, pero se corrige en la [lista de precios](/es/manuals/backoffice/price-lists), no en el menú.
</Info>

<Note>
  **La pestaña Overrides solo aparece en los menús custom.** El Golden no hereda de nadie, así que no tiene diferencias que mostrar.
</Note>

Las sugerencias de **upselling** y **cross-selling** se ven desde la fila del producto, pero son de solo lectura: hoy se heredan siempre del producto y no se pueden cambiar por menú.

***

## Las dos lentes: precios y día

Dos selectores arriba del editor que cambian **lo que ves**, no lo que el menú es.

### Prices from — la lente de precios

Muestra los precios de la lista que elijas, y te deja editarlos ahí mismo sin salir del menú. Útil para revisar la carta con los ojos del canal: *"así se ve el menú de delivery con la lista de delivery"*.

<Frame>
  <img src="https://mintcdn.com/firepos/fMgbql6u0dMQH9DE/images/manuals/backoffice/menus/05-lente-precios.png?fit=max&auto=format&n=fMgbql6u0dMQH9DE&q=85&s=524b37cdde1c85760d199203ef71ece6" alt="El selector Prices from abierto, con la lente de día sobre la estructura del menú" width="3200" height="2000" data-path="images/manuals/backoffice/menus/05-lente-precios.png" />
</Frame>

Si la lista elegida está conectada a otra, cada celda muestra su marca —**Formula** o **Fixed**— y arriba el conteo de cuántas hay de cada una.

<Warning>
  **Cambiar de lente con precios sin guardar los descarta.** Aparece el aviso *Unsaved prices* y la única salida es **Discard and switch**. Guarda antes de cambiar de lista.
</Warning>

<Info>
  **Lo que la lente no hace: no cambia la lista del menú.** Mirar los precios de otra lista no reasigna nada. Qué lista usa cada tienda se decide en [Asignación de menús](/es/manuals/backoffice/menu-assignments).
</Info>

### Day — la lente de día

**Day** y **Time** filtran la vista para mostrarte cómo queda la carta ese día a esa hora. Las categorías con horario propio que no cubren ese momento desaparecen, y arriba se lee cuántas quedaron *hidden by schedule*.

Es **solo un filtro**: no edita horarios ni cambia el menú. Los horarios se cargan en las categorías y los productos, no aquí.

***

## El precio no vive en el menú

<Info>
  **Un menú dice qué se vende y en qué orden. Nunca cuánto cuesta.** El precio vive en las [listas de precios](/es/manuals/backoffice/price-lists), y el que se aplica sale de la lista asignada a esa tienda y ese canal.

  Por eso dos tiendas pueden usar exactamente el mismo menú y cobrar distinto: mismo menú, distinta lista. Y por eso subir un precio no requiere tocar ningún menú.
</Info>

***

## Un menú no vende hasta que se asigna

Terminaste de armar el menú, guardaste, y no pasó nada. Es correcto: **guardar no publica**.

Un menú recién sale a vender cuando alguien dice en qué tienda, en qué canal y para qué fulfillment se usa, y aprieta **Sync**. Eso ocurre en [Asignación de menús](/es/manuals/backoffice/menu-assignments), y es también donde se resuelven los avisos de **sync pending** y **sync failed** que ves en el listado.

***

## Recetas: cómo se resuelven los casos reales

<AccordionGroup>
  <Accordion title="Armar la carta de la madrugada">
    Después de las 22:00 la cocina trabaja con media brigada y no puede sostener toda la carta.

    1. **Crear menú custom**. Nombre: *Madrugada*.
    2. **Base menu**: **Golden Menu** — arranca con todo y le quitas lo que no va.
    3. **Fulfillment type**: el que corresponda. Revisa dos veces: no se cambia después.
    4. En **Structure**, saca con **Remove from menu** todo lo que la cocina no puede hacer de noche.
    5. **Save draft**.
    6. Ve a **Asignación de menús** y asígnalo a las tiendas que abren de madrugada.

    Los productos que quedaron siguen heredando del Golden: si mañana cambia la ficha de uno, el menú de madrugada se entera solo.
  </Accordion>

  <Accordion title="Abrir una tienda de aeropuerto con carta reducida y precios más altos">
    Son dos cosas distintas y se resuelven en dos pantallas distintas.

    1. **La carta**: crea un menú custom que herede del Golden y saca lo que no se vende en el aeropuerto.
    2. **Los precios**: crea una [lista de precios](/es/manuals/backoffice/price-lists) conectada a la base, con `=P*1.15`.
    3. En **Asignación de menús**, a la tienda del aeropuerto asígnale **ese menú y esa lista**.

    No hace falta tocar precios dentro del menú. Son ejes independientes a propósito: el mismo menú puede convivir con cinco listas distintas.
  </Accordion>

  <Accordion title="Sacar un producto de delivery sin tocar el local">
    Las milanesas llegan frías y decidieron no venderlas más por delivery.

    1. Abre el menú **custom de delivery** (no el Golden: el local se queda como está).
    2. Busca el producto y usa **Remove from menu**.
    3. **Save draft**.
    4. En **Asignación de menús**, sincroniza las ternas que usan ese menú.

    En el Golden el producto sigue intacto, y por lo tanto en el salón se sigue vendiendo. Si más adelante cambias de idea, está en la pestaña **Removed** del diálogo de agregar, con **Restore**.
  </Accordion>

  <Accordion title="Abrir una marca nueva que no comparte nada con la actual">
    1. **Crear menú custom** con **Base menu → No parent (empty menu)**.
    2. Agrega las categorías con **Add category** y los productos con **Add**.
    3. Acomoda el orden arrastrando.
    4. **Save draft** y asigna en la otra pantalla.

    Este menú no hereda de nadie: lo que entre al catálogo mañana **no** va a aparecer aquí solo. Es la contrapartida de arrancar vacío, y es la razón por la que conviene elegir esta opción solo cuando de verdad no hay nada que compartir.
  </Accordion>

  <Accordion title="Preparar la carta para un agregador">
    Un agregador suele querer menos productos y fotos propias.

    1. Crea un menú custom que herede del **Golden**, con el fulfillment que corresponda.
    2. Saca los productos que no van en ese canal.
    3. Donde haga falta otra foto o un nombre más comercial, edítalos: quedan marcados con el chip **Override** y **no tocan la ficha original**.
    4. Los precios, aparte: una lista conectada a la base que compense la comisión.
    5. Asigna menú y lista a la terna de ese canal, y sincroniza.

    Todo lo que no cambiaste sigue heredando. El día que subas una foto nueva al catálogo, este menú la toma sola — salvo en los productos donde pusiste una propia.
  </Accordion>
</AccordionGroup>

***

## Errores que salen caros

<Warning>
  **Elegir mal el fulfillment al crear el menú.** No se puede corregir. Hay que crear otro menú y volver a armarlo entero.
</Warning>

<Warning>
  **Irse del editor con cambios sin guardar.** No hay ninguna pregunta al salir: el trabajo se pierde en silencio. El chip **Unsaved changes** es el único aviso.
</Warning>

<Warning>
  **Usar Remove from menu para un producto que se acabó hoy.** Sacarlo es una decisión de carta y se queda ahí hasta que alguien lo restaure a mano. Para lo temporal está [Agotados](/es/manuals/backoffice/out-of-stock), que vuelve solo.
</Warning>

<Warning>
  **Creer que guardar el menú lo publica.** Guardar deja la estructura al día; el canal no se entera de nada hasta que alguien sincroniza en [Asignación de menús](/es/manuals/backoffice/menu-assignments).
</Warning>

<Warning>
  **Arrancar con No parent (empty menu) por costumbre.** Un menú sin padre no hereda: los productos nuevos del catálogo nunca van a aparecer solos, y seis meses después la carta está incompleta sin que nada lo avise.
</Warning>

***

## Glosario

| Término         | Qué significa                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------- |
| **Golden**      | El menú del catálogo. Se crea solo, contiene todo y no se elimina.                                |
| **Custom**      | Un menú que hereda de otro y guarda solo las diferencias.                                         |
| **Base menu**   | De quién hereda un menú custom. Se elige al crearlo.                                              |
| **Fulfillment** | El tipo de entrega para el que sirve el menú. Se elige una vez y es definitivo.                   |
| **Override**    | Un campo que en este menú vale distinto que en el padre. Se marca con un chip azul.               |
| **Reset**       | Devolver un override al valor del padre.                                                          |
| **Removed**     | Un producto sacado del menú por completo. Se recupera con **Restore**.                            |
| **Hidden**      | Un producto que sigue en el menú pero no se muestra. Se recupera con **Show**.                    |
| **Lente**       | Un selector que cambia lo que ves —precios de otra lista, un día y una hora— sin cambiar el menú. |
| **Snapshot**    | La foto de la estructura del menú. Se regenera sola cada vez que guardas.                         |

***

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="Guardé el menú y en la app no cambió nada">
    Guardar no publica. El canal recibe el menú recién cuando alguien sincroniza la terna correspondiente en [Asignación de menús](/es/manuals/backoffice/menu-assignments).
  </Accordion>

  <Accordion title="Me equivoqué en el fulfillment, ¿cómo lo cambio?">
    No se puede. El campo es definitivo desde el momento en que se crea el menú. La salida es crear otro menú con el fulfillment correcto y volver a armarlo.
  </Accordion>

  <Accordion title="Agregué un producto al catálogo y no aparece en mi menú custom">
    Revisa de quién hereda ese menú. Si nació con **No parent (empty menu)**, no hereda de nadie y los productos nuevos hay que agregarlos a mano con **Add**. Si hereda del Golden, debería aparecer solo; si no está, fíjate si alguien lo sacó con **Remove from menu** — estará en la pestaña **Removed**, con **Restore**.
  </Accordion>

  <Accordion title="¿Puedo tener dos menús de delivery?">
    Sí. Un vendor puede tener varios menús para el mismo fulfillment: uno por franja horaria, por zona o por marca. Lo que no existe es un menú que sirva para dos fulfillments a la vez — para eso está el Golden, que no tiene ninguno asignado.
  </Accordion>

  <Accordion title="¿Por qué no puedo eliminar el menú Golden?">
    Porque es el catálogo. Es donde aterrizan los productos que cargas y el punto de partida del que heredan los demás menús. Eliminarlo dejaría a los custom heredando de la nada.
  </Accordion>
</AccordionGroup>

***

## Lo que viene

* **La pestaña History**, hoy vacía. El banner ya anticipa el alcance: eventos de publicación, overrides, estructura y asignaciones, con la auditoría completa planificada para una segunda etapa.
* **Duplicar un menú** y **ver su JSON** — las acciones están en el menú del editor, todavía deshabilitadas.
* **Horarios del menú** desde esta pantalla: hoy la lente de día solo filtra, y los horarios se cargan en categorías y productos.
* **Sugerencias por menú**: hoy el upselling y el cross-selling se heredan siempre del producto y no se pueden cambiar para un menú en particular.
