Cómo aplicar un descuento
Aplica un descuento porcentual o de importe a una o varias líneas pendientes del ticket desde el cobro avanzado. El descuento se guarda en cada línea elegible, recalcula el ticket y no registra ningún pago.
En este artículo
Este flujo sirve para ajustar una cuenta antes de cobrarla, por ejemplo aplicando un 10% a una línea pendiente o repartiendo un importe manual entre varias líneas seleccionadas.
En las capturas del demo ES se usa Grupo Marea Demo y la ubicación Marea Gran Via. En producción, el requisito operativo es el mismo: trabajar sobre un ticket existente, no anulado y con líneas pendientes sin pagos registrados.
Antes de empezar
- Tener contexto activo de organización y ubicación.
- Abrir el ticket en la pantalla de cobro avanzado del TPV.
- Tener permiso `tpv:use` para cargar el cobro y `tpv:discount` o `tickets:manage` para aplicar descuentos.
- El ticket debe existir en la ubicación actual, no estar anulado y tener al menos una línea pendiente sin pagos registrados.
Instrucciones
- 1.
Abre el cobro avanzado
Entra en la pantalla de cobro del ticket. Debes ver las líneas, el importe pendiente, los métodos de pago y la acción Aplicar descuento.
- 2.
Selecciona líneas pendientes
Marca una o varias líneas del ticket. La pantalla solo considera elegibles las líneas seleccionadas con importe pendiente y sin pagos asignados.
- 3.
Abre Aplicar descuento
Pulsa Aplicar descuento para abrir el modal. Puedes elegir porcentaje o importe, usar presets de 10%, 20% y 50%, o introducir un valor manual.
- 4.
Elige el descuento
En porcentaje, el sistema calcula el descuento sobre el total actual de cada línea. En importe, reparte el valor entre las líneas elegibles según su total actual y lo limita al máximo disponible.
- 5.
Confirma y revisa el resultado
Confirma el descuento. La pantalla actualiza cada línea elegible, cierra el modal y muestra Descuento aplicado correctamente. Revisa que la línea muestre el descuento y que el pendiente del ticket haya cambiado.
Validaciones y límites
- El botón Aplicar descuento permanece deshabilitado si no hay líneas elegibles seleccionadas o si el usuario no tiene permiso de descuento.
- El campo acepta coma decimal, pero rechaza valores vacíos, no numéricos, negativos o iguales a cero.
- La selección parcial por unidades no cambia el cálculo: se usa el total actual completo de cada línea elegible.
- Si el importe manual supera la suma disponible de las líneas, la pantalla lo limita antes de repartirlo.
- Si una línea ya tenía descuento, el nuevo importe se suma al descuento existente y la etiqueta se reemplaza por Descuento {value}% o Descuento manual.
- Con varias líneas, la UI actualiza cada línea de forma secuencial; si una actualización posterior falla, las líneas ya actualizadas pueden conservar el descuento.
- La restricción de líneas sin pagos está implementada en la UI; no se identificó una validación backend equivalente específica para impedir cambios de descuento en ítems con pagos registrados.
Resultado esperado
Cada `ticket_item` elegible conserva sus datos principales y actualiza `discount_amount` y `discount_label`. El backend recalcula `subtotal_price`, `tax_amount` y `total_price` de la línea, recompone subtotal, impuestos y total del ticket, y sincroniza el estado de pago sin crear `ticket_payment` ni `ticket_payment_allocation`.