Cómo actualizar la nota de un producto
Añade o cambia una observación interna en un producto concreto de un ticket TPV desde el editor rápido. La nota se guarda en el item del ticket, recortada al inicio y al final, sin cambiar importes por sí sola.
En este artículo
Este flujo sirve para registrar instrucciones operativas sobre una línea del ticket, por ejemplo `Sin cebolla, salsa aparte`, sin salir del detalle TPV.
La acción usa la actualización completa del producto del ticket. Por eso respeta el estado del ticket, la sesión de servicio activa, los bloqueos de KDS y los permisos asociados a descuentos existentes.
Antes de empezar
- Estar dentro de la organización y ubicación correctas, por ejemplo Grupo Marea Demo en Marea Gran Via.
- Tener permiso `tpv:use` para abrir el TPV y el detalle del ticket desde la interfaz.
- Trabajar sobre un ticket abierto de la `service_session` activa y con al menos un producto visible.
- El ticket no debe estar anulado ni cerrado desde la interfaz.
- Si KDS está activado, el producto debe seguir editable: no puede estar en `sent`, `preparing` ni `ready`.
- Si el producto ya tiene descuento, el usuario necesita `tickets:manage` o `tpv:discount`, aunque solo cambie la nota.
Instrucciones
- 1.
Abre el ticket TPV
Desde el TPV de Marea Gran Via, abre el detalle del ticket operativo. En el entorno documental se usa `TPV_TICKET_ID` junto con `TPV_TERMINAL_ID` y `TPV_STAFF_ID`.
- 2.
Selecciona el producto
Pulsa el producto que necesita la observación, como `Croquetas de jamon` o `Patatas bravas Marea` si están presentes en el ticket demo. Se abre el editor rápido del producto.
- 3.
Escribe la nota
En el campo `Notas`, introduce una instrucción breve y clara, por ejemplo `Sin cebolla, salsa aparte`. `Guardar` solo se activa si el texto cambia respecto al valor anterior después de recortar espacios.
- 4.
Guarda el cambio
Pulsa `Guardar`. La app actualiza el producto del ticket y cierra el editor cuando el servidor devuelve el `TicketDetail` actualizado.
- 5.
Comprueba el resultado
Vuelve a abrir el mismo producto si necesitas verificarlo. El campo `Notas` debe mostrar el texto guardado y el editor puede indicar `Con notas` cuando hay contenido.
Validaciones y límites
- La pantalla necesita `selectedOrgId` y `selectedLocationId`; si falta contexto, no se puede operar el ticket.
- La interfaz exige `tpv:use` para cargar el TPV y el detalle del ticket.
- Con `tpv:use`, el backend limita la edición a tickets de la `service_session` activa.
- El editor solo se abre si hay un `ticket_item` seleccionado.
- La UI bloquea tickets cerrados o anulados; el backend rechaza explícitamente tickets `void`.
- Si KDS está activo, la UI bloquea notas en items `sent`, `preparing` o `ready`.
- Si la nota no cambia después de `trim`, `Guardar` permanece deshabilitado.
- Mientras hay una mutación en curso, el campo de notas y el cierre del editor quedan bloqueados.
- La app envía un `TicketItemPayload` completo, no solo `{ notes }`.
- El backend recorta `notes` con `strings.TrimSpace` antes de persistir.
- No se debe documentar el borrado de una nota como caso confirmado: el análisis indica que un valor vacío puede conservar la nota existente.
- No se encontró límite máximo de longitud para `notes` en UI ni backend.
Resultado esperado
La observación queda guardada en `ticket_item.notes`, el detalle del ticket se refresca con la respuesta completa del servidor y el operador mantiene la instrucción asociada al producto correcto sin generar impresión ni un nuevo trabajo KDS por esta acción.