Documentacion de comunicacion CtaCte

Arquitectura POS → Gateway → Autorizador, con foco en compra, cobro, adelanto, consultas y gestion profesional de reversas. Esta version incorpora la Evolucion 2: el Gateway deja de ejecutar reintentos periodicos de reversa y el POS vuelve a concentrar la gestion de reversas pendientes.

Version: v6 / Evolucion 2 Foco: POS gestor de reversas Gateway: APROBADO / DENEGADO / DENEGADO_REVERSAR

Resumen ejecutivo

El POS historico ya contiene una proteccion local: antes de enviar operaciones financieras de CtaCte guarda una transaccion pendiente en disco para poder reversarla si la operacion queda en estado incierto.

Con la arquitectura POS → Gateway → Autorizador, el Gateway actua como intermediario. En la Evolucion 2, el Gateway no mantiene un worker periodico de reversas. En su lugar, responde al POS con un estado suficientemente claro para que el POS decida si elimina o conserva la reversa local.

Decision clave de Evolucion 2 La reversa pendiente vuelve a quedar concentrada en el POS. El Gateway puede indicar explicitamente DENEGADO_REVERSAR para que el POS conserve la reversa local.
Regla de oro El POS solo elimina la reversa si tiene una confirmacion clara: APROBADO, DENEGADO, o una consulta post-timeout que confirme que la operacion no existe, esta denegada o esta aprobada.

1. Operaciones CtaCte

OperacionCodigoOrigen tipicoModifica saldoRiesgo de reversa
Consulta de saldoOP_CONSULTAConsulta informativaNoNo genera reversa
Ultimas operaciones / liquidacionOP_ULTOPS / OP_ULTLIQConsulta informativaNoNo genera reversa
Compra CtaCteOP_CARGOVenta POS con medio CtaCteSiDebe protegerse con reversa local previa
AdelantoOP_ADELANTOOperacion financieraSiDebe protegerse con reversa local previa
Cobro en cuentaOP_COBROPago de deuda / cuentaSiDebe protegerse con reversa local previa
ReversaOP_REVERSOCompensacion de operacion inciertaCompensaLa administra el POS en Evolucion 2

2. Logica POS historica

El POS guarda una operacion financiera pendiente en CtaCtes.Rev antes de transmitir. Si posteriormente no puede cerrar con certeza el resultado, esa reversa local queda disponible para ser enviada como OP_REVERSO.

Flujo POS historico de reversa local

flowchart TD A([Inicio operacion CtaCte en POS]) --> B{Tipo de operacion} B -->|Consulta| C[Enviar consulta sin reversa local] B -->|Compra / adelanto / cobro| D[Persistir CtaCtes.Rev antes de enviar] D --> E[Enviar operacion] C --> E E --> F{Resultado recibido?} F -->|Si, claro| G[Resolver segun respuesta] F -->|No / incierto| H[(Conservar CtaCtes.Rev)] H --> I[Queda reversa pendiente POS]
Que se conserva de la logica historica El POS sigue siendo el punto que prepara y conserva la reversa local antes de enviar una operacion financiera. Esta proteccion es necesaria para cubrir caidas, cortes de energia o falta de respuesta.

3. Gateway en Evolucion 2

En la Evolucion 2 se elimina del Gateway la logica de envio periodico de reversas. El Gateway deja de ser el actor que mantiene un circuito autonomo de compensacion. Su responsabilidad principal pasa a ser procesar la compra, registrar el estado consultable y devolver al POS una respuesta funcional clara.

Respuestas permitidas del Gateway al POS

Respuesta GatewaySignificado funcionalAccion obligatoria del POS
APROBADOLa operacion quedo aceptada.Eliminar reversa local e informar aprobada.
DENEGADOLa operacion fue rechazada de forma clara o el Gateway determina que no existe operacion que reversar.Eliminar reversa local e informar denegada.
DENEGADO_REVERSARNo se aprueba para el POS, pero existe condicion incierta o compensable. El POS debe conservar la reversa.Mantener reversa local pendiente.
Diferencia critica DENEGADO permite borrar la reversa. DENEGADO_REVERSAR prohibe borrarla: el POS debe conservar la reversa local para resolver la incertidumbre.

4. Flujo de compra con Evolucion 2

El POS prepara la reversa antes de enviar la compra al Gateway. Luego decide que hacer con esa reversa segun la respuesta recibida.

Flujo principal POS → Gateway → Autorizador

flowchart TD A([POS inicia compra CtaCte]) --> B[(POS persiste reversa local previa)] B --> C[POS envia compra al Gateway] C --> D[Gateway procesa y comunica con Autorizador] D --> E{Respuesta Gateway al POS} E -->|APROBADO| F[POS elimina reversa local] F --> G([Informar operacion aprobada]) E -->|DENEGADO| H[POS elimina reversa local] H --> I([Informar operacion denegada]) E -->|DENEGADO_REVERSAR| J[(POS conserva reversa local)] J --> K([Informar denegada con reversa pendiente]) E -->|Sin respuesta| L[(POS conserva reversa local)] L --> M[POS ejecuta una consulta unica de estado]

Secuencia operacional

Secuencia de compra y respuesta

sequenceDiagram participant POS participant GW as Gateway participant AUT as Autorizador POS->>POS: Persistir reversa local previa POS->>GW: Compra CtaCte GW->>AUT: Solicitud de compra alt Autorizador aprueba AUT-->>GW: Aprobada GW-->>POS: APROBADO POS->>POS: Eliminar reversa local POS->>POS: Informar aprobada else Autorizador deniega claramente AUT-->>GW: Denegada GW-->>POS: DENEGADO POS->>POS: Eliminar reversa local POS->>POS: Informar denegada else Incertidumbre compensable AUT--xGW: Timeout / error incierto GW-->>POS: DENEGADO_REVERSAR POS->>POS: Mantener reversa local POS->>POS: Informar denegada con reversa pendiente else POS no recibe respuesta GW--xPOS: Sin respuesta / corte POS->>POS: Mantener reversa local POS->>GW: Consulta unica de estado end

5. Consulta unica post-timeout

Si el POS no recibe respuesta de la compra, no debe decidir a ciegas. Debe conservar inicialmente la reversa local y realizar una unica consulta al Gateway para conocer el estado de la operacion enviada.

Resolucion por consulta post-timeout

flowchart TD A([POS no recibe respuesta de compra]) --> B[(Mantener reversa local)] B --> C[Enviar una consulta unica al Gateway] C --> D{Estado informado por Gateway} D -->|No existe operacion| E[POS elimina reversa local] E --> F([Informar denegada]) D -->|Operacion DENEGADA| G[POS elimina reversa local] G --> H([Informar denegada]) D -->|Operacion APROBADA| I[POS elimina reversa local] I --> J([Informar aprobada]) D -->|Sin respuesta / error consulta| K[(POS mantiene reversa local)] K --> L([Queda reversa pendiente para gestion posterior])
Interpretacion Si el Gateway no tiene la operacion, responde funcionalmente como DENEGADA. El POS elimina la reversa porque no existe evidencia de una operacion tomada por Gateway/Autorizador.

Datos recomendados para consultar estado

DatoMotivo
posId, sucursal, cajaIdentificar el origen exacto de la operacion.
nroTicketPOS / numero de operacion POSCorrelacionar la compra original con la consulta.
Cuenta / cliente / tarjetaEvitar falsos positivos por tickets repetidos o reintentos.
Importe, moneda, cuotasVerificar que el estado corresponde a la misma operacion.
Fecha/hora aproximadaAcotar busqueda y auditar.
idOperacionGateway, si existeClave ideal de idempotencia si el POS llego a recibirla o construirla.

6. Matriz de decisiones POS

MomentoRespuesta / eventoAccion sobre reversa POSResultado para usuario POS
CompraAPROBADOEliminar reversaOperacion aprobada
CompraDENEGADOEliminar reversaOperacion denegada
CompraDENEGADO_REVERSARMantener reversaDenegada con reversa pendiente
CompraSin respuestaMantener inicialmenteEjecutar consulta unica
Consulta post-timeoutNo existe operacionEliminar reversaDenegada
Consulta post-timeoutOperacion denegadaEliminar reversaDenegada
Consulta post-timeoutOperacion aprobadaEliminar reversaAprobada
Consulta post-timeoutSin respuesta / error consultaMantener reversaReversa pendiente
Regla de seguridad Ante duda o falta de respuesta, el POS conserva la reversa. Solo la elimina cuando recibe una respuesta final clara o cuando la consulta confirma que no hay operacion tomada.

7. Responsabilidades por componente

POS

Persistir reversa antes de operaciones financieras, interpretar las tres respuestas del Gateway, consultar una vez ante timeout y conservar la reversa si no hay certeza.

Gateway

Procesar compra, comunicarse con Autorizador, registrar estado consultable y responder APROBADO, DENEGADO o DENEGADO_REVERSAR. No ejecuta reintentos periodicos de reversa.

Autorizador

Autorizar o denegar la operacion financiera. Sus timeouts o errores inciertos son traducidos por el Gateway para que el POS gestione la reversa local.

Comparativa contra evolucion anterior

AspectoEvolucion anteriorEvolucion 2
Worker periodico de reversasLo administraba el GatewaySe elimina a nivel server
Dueño de reversa pendienteGateway para incertidumbre Gateway-AutorizadorPOS como gestor principal
Bloqueo por reversa pendienteGateway podia bloquear nuevas compras del POSPOS conserva y gestiona su reversa; Gateway informa estados
Respuesta especialError / reversa pendiente en cursoDENEGADO_REVERSAR
Reconciliacion inmediataGateway reintentaba reversa periodicamentePOS hace una consulta unica post-timeout

8. Estados sugeridos

La implementacion puede variar, pero estos estados ayudan a mantener trazabilidad sin introducir reintentos periodicos en el Gateway.

Estados de la reversa local en POS

stateDiagram-v2 [*] --> SinReversa SinReversa --> ReversaPreparada: Antes de enviar compra ReversaPreparada --> Cerrada: APROBADO ReversaPreparada --> Cerrada: DENEGADO ReversaPreparada --> Pendiente: DENEGADO_REVERSAR ReversaPreparada --> ConsultaEstado: Sin respuesta ConsultaEstado --> Cerrada: No existe / DENEGADA / APROBADA ConsultaEstado --> Pendiente: Sin respuesta consulta Pendiente --> Cerrada: Reversa resuelta posteriormente Cerrada --> SinReversa

9. Mensajes operativos sugeridos

SituacionMensaje sugerido al POS / usuarioAccion tecnica
APROBADOOperacion aprobadaEliminar reversa
DENEGADOOperacion denegadaEliminar reversa
DENEGADO_REVERSAROperacion denegada. Reversa pendienteMantener reversa
Sin respuesta y consulta aprobadaOperacion aprobada por consulta de estadoEliminar reversa
Sin respuesta y consulta denegada/no existeOperacion denegada por consulta de estadoEliminar reversa
Sin respuesta y consulta fallaNo se pudo confirmar estado. Reversa pendienteMantener reversa y escalar

Conclusion

La Evolucion 2 simplifica el Gateway eliminando el circuito periodico de reversas, pero exige que el POS sea estricto: preparar reversa antes de enviar, eliminarla solo ante estados finales claros y conservarla cuando el Gateway indique DENEGADO_REVERSAR o cuando no exista confirmacion confiable.

Principio final APROBADO y DENEGADO cierran la reversa. DENEGADO_REVERSAR, timeout o error de consulta la mantienen pendiente.