Conflictos offline
Para qué sirve
Cuando el POS sincroniza las ventas cobradas sin conexión, el servidor vuelve a validarlas. Si alguna no se puede registrar tal cual (el turno ya estaba cerrado, el total no coincide, el número ya existe…), no se pierde: queda en esta bandeja como conflicto para que el jefe de playa o el administrador decida qué hacer. El cliente ya se llevó su comprobante impreso, por eso la resolución busca respetar lo impreso.
Dónde está
/conflictos-offlineLa pantalla se titula Conflictos de ventas sin conexión ("Ventas emitidas offline que el servidor no pudo registrar tal cual. Resuélvalas con motivo."). En el POS, el indicador de la cabecera muestra "N con conflicto".
Quién puede
| Acción | Permiso |
|---|---|
| Ver la bandeja y resolver conflictos | Permisoventas.resolver_conflicto_offline |
Por defecto lo tiene el Jefe de Playa (y el Administrador). Requiere el módulo Ventas en el plan.
Conceptos
- Conflicto: una venta sin conexión con un motivo por el que el servidor no la registró.
- Resolución: la decisión del jefe. Cada motivo admite una sola resolución.
- Fecha real: la hora en que se cobró en la isla (no la hora de sincronización).
- Total impreso: lo que dice el comprobante que se llevó el cliente.
La bandeja
Filtro Estado: Pendientes (por defecto), Resueltos o Todos.
| Columna | Qué muestra |
|---|---|
| Documento | Serie y número impresos, ej. B501-00000012. |
| Fecha real | Fecha y hora del cobro en la isla. |
| Terminal | Terminal que la emitió. |
| Motivo | Por qué no se registró (ver tabla de motivos). |
| Total | Total impreso. |
| Estado | Pendiente o Resuelto: y la resolución aplicada. |
Acciones por fila: Ver detalle y Resolver (solo pendientes). Sin datos: "No hay conflictos en este estado.".
Motivos y su resolución
| Motivo (como aparece) | Qué pasó | Resolución permitida |
|---|---|---|
| Sin turno para la hora de la venta | No había turno que contuviera la fecha real. | Emitir en el turno abierto actual |
| Turno ya cerrado o con el cierre aprobado | La venta llegó cuando su turno ya se había cerrado. | Emitir en el turno abierto actual |
| Fuera de la ventana de caída | La fecha real no cae dentro de una caída de conexión registrada. | Emitir tal como se imprimió |
| Total distinto al recalculado | El servidor recalculó otro total (más de S/ 0.01 de diferencia, incluso probando el precio de un cambio de precio cercano). | Emitir tal como se imprimió |
| Rechazada por reglas de la venta | Falló una regla de la venta (playero sin asignación, playero sin caja recaudadora abierta, producto sin precio, pagos, percepción…). | Emitir tal como se imprimió (después de corregir la causa) |
| Número ya registrado con otro contenido | Ese serie-número ya existe con otros datos. | Descartar: es un duplicado |
| Hueco en la numeración | Faltan números entre la última venta registrada y esta (la venta sí se registró). | Marcar como revisado (informativo) |
Qué hace cada resolución:
- Emitir en el turno abierto actual: registra la venta con su mismo serie-número y su misma fecha real, pero dentro del turno abierto ahora en la estación. El efectivo entra a la caja recaudadora abierta del playero que hizo la venta; el faltante del turno anterior se queda en el turno anterior. No revisa la asignación del playero a esa hora.
- Emitir tal como se imprimió: registra la venta omitiendo el control que falló (la ventana de caída o el total recalculado). En un rechazo por reglas, reintenta la venta tal cual: corrige antes la causa (por ejemplo, asigna al playero, pide que abra su caja o activa el precio).
- Descartar: es un duplicado y Marcar como revisado (informativo): cierran el conflicto sin emitir nada.
Paso a paso
Revisar un conflicto
- Entra a Conflictos offline
Deja el filtro en Pendientes.
- Pulsa «Ver detalle»
Verás el documento, la fecha real y el terminal; el motivo y el mensaje del servidor; el playero y el Total impreso; los Ítems y los Pagos tal como se imprimieron.
Resolver un conflicto
- Pulsa «Resolver»
Se abre Resolver (documento).
- Elige la resolución
El campo Resolución solo ofrece la resolución válida para ese motivo.
- Escribe el motivo
De 10 a 200 caracteres. Ejemplo: "Venta real del turno noche, sincronizó tras el cierre".
- Pulsa «Resolver»
Verás "Conflicto B501-00000012 resuelto." y la fila pasa a Resueltos.
| Campo | ¿Obligatorio? | Descripción |
|---|---|---|
| ResoluciónLista | Sí | La única resolución permitida para el motivo del conflicto. |
| MotivoTexto | Sí | Por qué decides así. De 10 a 200 caracteres. Queda en la auditoría. |
Estados y reglas
Pendiente → Resuelto
- Un conflicto resuelto no se puede volver a resolver.
- Si la sincronización reenvía la misma venta, se devuelve el mismo conflicto (no se duplica).
- La resolución que emite la venta es segura ante reintentos: si se corta la red, pulsa Resolver otra vez.
- Las ventas sincronizadas sin problema no aparecen aquí: van directo al Historial de ventas.
Mensajes de error frecuentes y qué hacer
| Mensaje | Por qué pasa | Qué hacer |
|---|---|---|
| "El motivo debe tener al menos 10 caracteres." | Motivo corto. | Amplíalo. |
| "No se pudo resolver el conflicto. Reintente." | Falló la operación (red o regla). | Reintenta; si persiste, revisa la causa (turno abierto, asignación, caja del playero abierta, precio). |
| "No hay conflictos en este estado." | Bandeja vacía. | Nada que hacer. |
Relación con otros módulos
- POS sin conexión: de dónde vienen estos conflictos.
- Turnos: turno abierto actual y asignaciones.
- Contingencias: las caídas registradas por el POS.
Ejemplo
El turno noche se cerró a las 06:05, pero la tablet de la Isla 3 recuperó la conexión a las 06:20 con la boleta
B502-00000041 de las 05:48 (S/ 60.00) aún en cola. El servidor la marca Turno ya cerrado o con el cierre
aprobado. El jefe pulsa Resolver, deja Emitir en el turno abierto actual y escribe "Venta real del turno
noche, sincronizó tras el cierre". La boleta queda registrada con su número y hora originales en el turno de la mañana.