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

# Presentaciones y códigos

> Describe los envases en que se compra un insumo, asocia los códigos impresos en ellos y corrige, mueve o retira ambos de forma segura.

Una *presentación* es un envase en el que se compra y se recibe un insumo, como una caja de 100 guantes. Indica cuántas unidades base del insumo contiene, de modo que recibir 3 cajas de 100 suma exactamente 300 unidades a las existencias.

Un *código* es un identificador impreso en ese envase: un código de barras (GTIN), una referencia del proveedor o un código que asigna tu clínica. Cuando alguien escanea o escribe un código en la pantalla de recepción, muveya encuentra la presentación y, a través de ella, el insumo y la cantidad.

<Info>
  Los códigos del envase dicen *qué* es un producto: todas las cajas del mismo artículo traen el mismo código. Son distintos de los códigos de caja como `BX-000123`, que identifican *cuál* es el contenedor físico que está en el estante. Los códigos de caja se crean al recibir existencias. Consulta [Cajas y etiquetas](/docs/es/inventory/boxes).
</Info>

<Warning>
  En el formulario del insumo hay un campo de texto libre llamado **Presentación**. Ese campo es solo una descripción y nunca cambia una cantidad. Esta página trata de la sección **Presentaciones** del detalle del insumo, que es la que se usa para contar.
</Warning>

## Qué está disponible

| Disponible en la versión actual | No disponible |
| - | - |
| Ver las presentaciones de un insumo con sus códigos. | Envases anidados (una caja que contiene cajas). Registra el envase exterior como una presentación propia con el total de unidades base. |
| Agregar, corregir y retirar una presentación. | Reactivar una presentación retirada. Publica una nueva en su lugar. |
| Agregar un código, moverlo a otra presentación del mismo insumo y retirarlo. | Editar el valor de un código. Retíralo y agrega el correcto. |
| Escanear códigos en la pantalla de recepción. | Presentaciones o códigos en la importación o exportación CSV. |
| | Presentaciones o códigos en la API pública o en MCP. |

## Quién puede hacerlo

| Acción | Permiso |
| - | - |
| Ver presentaciones y códigos | `catalog.read` (todos los roles), `catalog.manage` o `inventory.receive` |
| Agregar, corregir o retirar una presentación; agregar, mover o retirar un código | `catalog.manage` |

Consulta [Roles y permisos](/docs/es/account/roles-and-permissions).

## Dónde

Abre un insumo desde **Catálogo**. La sección **Presentaciones** está debajo de la sección de estado, con la descripción **Cómo se compra y se recibe este insumo. Recibir N de una presentación suma N × su contenido.**

Cada presentación muestra:

* Su nombre, por ejemplo "Caja de 100".
* Su contenido, por ejemplo **Contiene 100 × Unidad**.
* Su versión y su estado, por ejemplo **Versión 2** y **Activa** o **Retirada**.
* Los botones **Corregir** y **Retirar**, para quien gestiona el catálogo, en las presentaciones activas.
* Debajo, **Códigos de** seguido del nombre de la presentación, con los códigos activos.

La lista muestra la versión vigente de cada presentación, incluidas las retiradas. Si el insumo no tiene ninguna, muestra **Todavía no hay presentaciones** y, para quien gestiona el catálogo, **Agrega el envase que compras, como una caja de 100, y el código impreso en él.** (el resto ve **Una persona que gestiona el catálogo puede agregar presentaciones a este insumo.**).

## Agregar una presentación

<Steps>
  <Step title="Abre el diálogo">
    En **Presentaciones**, haz clic en **Agregar presentación**. Se abre el diálogo **Nueva presentación**.
  </Step>

  <Step title="Ponle nombre">
    Ingresa el **Nombre de la presentación** como tu equipo llama al envase, con hasta 120 caracteres.
  </Step>

  <Step title="Indica qué contiene">
    Ingresa **Unidades base que contiene**: un número entero de 1 a 1.000.000.000. La ayuda te recuerda la unidad del insumo, por ejemplo **Unidad base de este insumo: Unidad.**
  </Step>

  <Step title="Publica">
    Haz clic en **Publicar presentación**. La lista muestra la nueva presentación y la pantalla anuncia que se publicó como versión 1.
  </Step>
</Steps>

Puedes agregar presentaciones aunque el insumo todavía esté en borrador. La presentación guarda una copia de la unidad del insumo en el momento de publicarla.

### Ejemplos

| Unidad del insumo | Envase | Nombre de la presentación | Unidades base que contiene |
| - | - | - | - |
| **Unidad** | Caja de 100 guantes | Caja de 100 | `100` |
| **Unidad** | Bulto de 3 cajas de 100 guantes | Bulto 3 × 100 | `300` |
| **Mililitro** | Botella de desinfectante de 500 ml | Botella 500 ml | `500` |
| **Caja** | Una caja que se cuenta como una | Caja | `1` |

No se aceptan decimales: si un envase trae media unidad, elige una unidad base más pequeña para el insumo antes de que quede fija.

## Corregir una presentación

Una corrección nunca edita la presentación guardada. Publica la versión siguiente y deja legible la anterior, porque las cajas recibidas con la versión 1 deben seguir significando lo mismo.

<Steps>
  <Step title="Abre el diálogo">
    Haz clic en **Corregir** en la presentación. Se abre el diálogo **Corregir** seguido del nombre, con los valores actuales y la nota **La corrección publica la versión 3. Las cajas ya recibidas conservan la versión con la que se recibieron.** (con el número de la versión siguiente).
  </Step>

  <Step title="Cambia los valores">
    Edita **Nombre de la presentación** o **Unidades base que contiene**.
  </Step>

  <Step title="Publica">
    Haz clic en **Publicar corrección**. La pantalla anuncia la nueva versión.
  </Step>
</Steps>

* Los códigos de la presentación siguen asociados: pertenecen a la presentación, no a una versión.
* Una corrección también vuelve a publicar la presentación con la unidad actual del insumo. Úsala si la unidad del insumo cambió después de publicar la presentación.
* Si alguien está recibiendo existencias con la presentación mientras la corriges, la pantalla de recepción se detiene y muestra el nuevo contenido. Consulta [Recibir existencias](/docs/es/inventory/receive).

## Retirar una presentación

<Steps>
  <Step title="Abre el diálogo">
    Haz clic en **Retirar** en la presentación.
  </Step>

  <Step title="Confirma">
    El diálogo pregunta **¿Retirar** seguido del nombre y advierte **Ya no se podrá recibir. Las cajas y los movimientos ya registrados conservan sus cantidades. No se puede deshacer.** Haz clic en **Retirar presentación**.
  </Step>
</Steps>

Retirar marca todas las versiones de la presentación como **Retirada**. Sigue en la lista, sin **Corregir** ni **Retirar**. Sus códigos siguen visibles para que puedas moverlos o retirarlos; si alguien escanea un código que todavía apunta a ella, la recepción muestra **Esta presentación está retirada y ya no admite nuevas entradas.** Para seguir recibiendo ese envase, agrega una presentación nueva y mueve los códigos a ella.

## Códigos

### Tipos de código

| Tipo | Etiqueta | Qué es | Formato |
| - | - | - | - |
| `supplier` | **Código del proveedor** | La referencia de catálogo del propio proveedor. El formulario elige este tipo por defecto. | De 1 a 64 caracteres. |
| `gtin` | **GTIN (código de barras)** | La familia de códigos de barras impresa en envases comerciales y logísticos (EAN-13, UPC-A, ITF-14). | De 8 a 14 dígitos. |
| `internal` | **Código interno** | Un código que tu clínica asigna e imprime. | De 1 a 64 caracteres. |

### Agregar un código

<Steps>
  <Step title="Abre el diálogo">
    Bajo **Códigos de** la presentación, haz clic en **Agregar código**. Solo las presentaciones activas lo ofrecen.
  </Step>

  <Step title="Completa el código">
    Elige el **Tipo de código**, escribe el **Código** (**Tal como está impreso, con los ceros iniciales.**) y, si sirve, el **Emisor (opcional)**, por ejemplo el nombre del proveedor, con hasta 120 caracteres.
  </Step>

  <Step title="Guarda">
    Haz clic en **Agregar código**. El código aparece en la lista con su tipo y, si lo indicaste, **Emitido por** y el emisor.
  </Step>
</Steps>

Cómo lee muveya un código:

* Se ignoran los espacios y los guiones, y las letras se comparan en mayúsculas. `7 501234 567890` y `7501234-567890` son el mismo código. La lista sigue mostrando el código tal como está impreso.
* Un GTIN conserva sus ceros iniciales. Sin espacios ni guiones debe tener de 8 a 14 dígitos; si no, el formulario dice **Un GTIN tiene de 8 a 14 dígitos.**
* Se verifica el dígito verificador de un GTIN. Si no coincide, el código se guarda de todos modos y se marca con **El dígito verificador no coincide. Confirma el código impreso.** Las etiquetas reales a veces vienen con errores, y rechazarlas impediría registrar existencias que la clínica tiene en la mano.
* Un código de un tipo determinado puede estar activo en una sola presentación de toda tu clínica dental. Agregarlo a una segunda presentación falla con **Otra presentación ya usa este código. Retíralo o muévelo allí primero.** Agregarlo de nuevo a la misma presentación no cambia nada.
* El mismo valor puede existir con dos tipos distintos, por ejemplo como GTIN en una presentación y como código del proveedor en otra. Al escanear ese valor, la recepción pide elegir: **Este código corresponde a más de una presentación. Elige la que llegó.**

### Mover un código

Úsalo cuando un código quedó asociado al envase equivocado del mismo insumo.

<Steps>
  <Step title="Abre el diálogo">
    Haz clic en **Mover** junto al código. El diálogo **Mover código** explica **Elige otra presentación activa de este insumo. El código deja** la presentación actual **en el mismo paso.**
  </Step>

  <Step title="Elige el destino">
    En **Mover a**, elige una presentación (**Elige una presentación**). Solo se ofrecen otras presentaciones activas del mismo insumo. Si no hay ninguna, el diálogo dice **Primero agrega otra presentación activa de este insumo.**
  </Step>

  <Step title="Confirma">
    Haz clic en **Mover código**. El código se mueve con su valor impreso, su emisor y su aviso de dígito verificador.
  </Step>
</Steps>

Para llevar un código a otro insumo, retíralo aquí y agrégalo a una presentación del otro insumo.

### Retirar un código

<Steps>
  <Step title="Abre el diálogo">
    Haz clic en **Retirar** junto al código.
  </Step>

  <Step title="Confirma">
    El diálogo advierte que la recepción deja de encontrar la presentación por este código y que **Puedes volver a agregarlo después.** Haz clic en **Retirar código**.
  </Step>
</Steps>

El código desaparece de la lista y los escaneos ya no lo encuentran. muveya conserva el código retirado, quién lo retiró y cuándo, como evidencia.

## Cómo los usa la recepción

En [Recibir existencias](/docs/es/inventory/receive), quien recibe escanea o escribe un código. muveya lo busca en los tres tipos:

| Resultado | Lo que ve quien recibe |
| - | - |
| Una presentación | El insumo y la presentación quedan completos. Recibir N suma N × el contenido de la presentación. |
| Varias presentaciones | Una elección entre ellas. |
| Ninguna presentación | **Ese código todavía no está vinculado a un insumo. Abre el insumo en el catálogo y agrega el código en Presentaciones, o elige el insumo para recibirlo sin código.** |

Los códigos solo se asocian desde el catálogo, no desde la pantalla de recepción.

## Qué registra el sistema

* Cada versión de una presentación se guarda de forma permanente con su nombre, su contenido, la unidad que tenía el insumo en ese momento y quién la publicó. Una caja recibida mediante una presentación registra con qué versión se recibió.
* Retirar una presentación marca todas sus versiones como retiradas. Ninguna cantidad ya registrada cambia.
* Cada código registra quién lo agregó. Retirar o mover un código conserva el registro anterior con quién lo retiró y cuándo, y escribe un registro de auditoría, `catalog.identifier.retired`, que, cuando el código se mueve, también indica la presentación de destino.

Internamente, una presentación tiene un `presentationId` estable que comparten todas sus versiones y un número de `version`. La consola nunca muestra estos identificadores.

## Qué puede salir mal

| Mensaje | Código | Qué hacer |
| - | - | - |
| **Otra presentación ya usa este código. Retíralo o muévelo allí primero.** | `catalog.identifier_taken` | Busca la presentación que lo tiene y retíralo o muévelo. |
| **Otra persona corrigió esta presentación al mismo tiempo. Revisa la versión vigente y aplica tu cambio de nuevo.** | `catalog.presentation_version_conflict` | Cierra el diálogo, revisa la nueva versión y corrige otra vez si hace falta. |
| **Esta presentación está retirada. Elige una activa.** | `catalog.presentation_retired` | Usa o crea una presentación activa. |
| **Este código ya no está en esta presentación. Revisa la lista.** | `catalog.identifier_not_found` | Otra persona lo movió o lo retiró; actualiza la página. |
| **Este código no es válido para el tipo elegido.** | `catalog.identifier_invalid` | Revisa el tipo; un GTIN debe tener de 8 a 14 dígitos. |
| **El contenido debe ser un número entero de unidades base desde 1.** | `catalog.presentation_invalid_content` | Ingresa un número entero de 1 a 1.000.000.000. |
| **Esta presentación no está disponible para este insumo.** | `catalog.presentation_not_found` | Actualiza la página; la presentación pertenece a otro insumo o ya no existe. |
| **No pudimos cargar las presentaciones.** | | Haz clic en **Reintentar**. |
| **Ingresa un número entero desde 1.** | | Corrige **Unidades base que contiene**. |
| **Completa este campo.** / **Usa un máximo de 120 caracteres.** | | Corrige el nombre o el emisor. |
| **Tu cuenta no tiene permiso para esta acción.** | `tenants.insufficient_role` | Solicita `catalog.manage`. |

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Recibir existencias" icon="truck-ramp-box" href="/docs/es/inventory/receive">
    Escanea un código y recibe envases en una bodega.
  </Card>

  <Card title="Insumos del catálogo" icon="box" href="/docs/es/catalog/items">
    Define la unidad base del insumo.
  </Card>

  <Card title="Cajas y etiquetas" icon="boxes-stacked" href="/docs/es/inventory/boxes">
    Los contenedores que se crean cuando llegan existencias.
  </Card>

  <Card title="Roles y permisos" icon="user-shield" href="/docs/es/account/roles-and-permissions">
    Quién puede gestionar el catálogo.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.