tipre

base_amount — beneficio sobre un monto base acumulado

Visión general del concepto, de punta a punta · DINI/DINO · Tipre · 12/10/2026 · BORRADOR

1. La idea en una frase

Hoy el beneficio se calcula como un % del total del ticket. La idea es calcularlo sobre un monto base (base_amount) que define el negocio vía promociones, no sobre el total. El cliente paga lo mismo menos el descuento; cambia sobre qué se calcula ese descuento.

Ejemplo. Ticket de $1.000. El negocio quiere que el 10% de beneficio aplique solo sobre ciertos productos que suman $300. Entonces el descuento es 10% de $300 = $30 (no 10% de $1.000). El cliente paga $970.

2. Por qué

Opciones de comportamiento que proponemos (detalle en §5):

3. Cómo funciona, de punta a punta

Cinco actores, cada uno con un rol claro:

ActorRol en base_amount
POSCalcula el monto base acumulando las promociones que correspondan y lo envía. Nunca aplica el descuento él mismo.
RouterQRRelaya el dato (transparente).
GatewayQRLleva base_amount al resolvedor y se lo informa al autorizador.
BeneficiosCenterCalcula el beneficio: % sobre el monto base (con tope y mínimo), sin cambiar el total.
TECSO (autorizador)Aplica el descuento y lo confirma; el POS lo imputa y reparte el IVA.
Secuencia del pago QR con beneficio sobre monto base (ida y vuelta).

4. El dato nuevo: base_amount

5. Reglas que importan

ReglaQué significa
Cálculodescuento = mín( base × % , tope ).
Tope por el monto QREl monto base nunca supera lo que se paga por QR → el descuento nunca deja el pago en negativo.
Monto mínimoEl mínimo del beneficio se evalúa contra el monto base (no contra el total).
Default (ausente)Sin base_amount → se usa el total (comportamiento actual). Pensado para promos clásicas sobre todo el ticket.
Un beneficio por medio de pagoNunca se suman beneficios; se elige uno (sin cambios respecto de hoy).
El total no cambiaEl descuento se resta de lo que se cobra; el ticket sigue valiendo lo mismo.

6. La vuelta: descuento e IVA

El autorizador confirma el descuento aplicado. El POS lo recibe e imputa el descuento repartiéndolo sobre todo el ticket (de forma proporcional por alícuota de IVA), de modo que lo informado al fisco cierra contra lo cobrado. El cálculo del beneficio usa el monto base; el reparte fiscal es sobre el ticket completo — son dos cosas distintas y así queda validado.

7. Estado y alcance

Concepto / contratoDefinido y coordinado entre las sesiones POS y server.
POSBuild de prueba ya emite base_amount; falta el E2E real y el build de prod.
Server (GW + BeneficiosCenter)Implementado y verificado con tests + E2E de server (rama aislada, sin tocar producción).

Todo este cambio se desarrolla aparte del release en QA; no afecta lo que ya está en producción. El formato del campo quedó confirmado entre POS y server. Falta la prueba de punta a punta con el POS real (build de prod).

Para profundizar: el circuito técnico completo (configuración del POS, tablas, wire, cálculo del server y reparto de IVA) está en docs/base-amount-circuito-completo.html. El contrato con el autorizador, en docs/Beneficios-contrato-autorizador.html.
base_amount · visión general · 12/10/2026 · Tipre. Documento de concepto; sujeto a confirmación de la prueba de punta a punta.