Módulo de Caja y Cobranza
El módulo de Caja es el punto central para la recepción de ingresos. Permite registrar pagos de manera ágil buscando al cliente por nombre, número de teléfono o escaneando su tarjeta RFID.
A continuación se describen los controles principales de esta pantalla:
1. Controles de Caja
| Campo | Descripción |
|---|---|
| Barra de Búsqueda | Escriba el nombre, teléfono o pase la tarjeta RFID y presione ENTER para cargar los datos. |
| Selector de Meses | Define la cantidad de meses que el cliente desea pagar por adelantado (Predeterminado: 1). |
| Campo de Pago | Área final donde se ingresa el dinero recibido para confirmar la transacción. |
2. Búsqueda y Cálculo Automático
Al seleccionar un cliente, el sistema carga automáticamente su plan de internet y servicios adicionales (si los tiene). El total a pagar se calcula en tiempo real con la siguiente lógica:
Total = (Costo del Paquete + Servicios Extras) × Meses seleccionados
3. Detección de Adeudos
La lógica de cobro respeta el ciclo de facturación del cliente, no la fecha actual.
- Ejemplo: Si el cliente debió pagar el 10/08/2025 y acude a pagar hoy 04/12/2025.
- Resultado: El sistema cobrará el mes vencido y moverá la próxima fecha de pago al 10/09/2025 (un mes después de su fecha de corte original), asegurando que no se pierda la continuidad del servicio.
4. Reactivación de Clientes Suspendidos
Si el cliente al que se le está cobrando se encuentra actualmente en estado SUSPENDIDO, el sistema se comportará de forma distinta según quién esté operando la caja:
Al finalizar el cobro, aparecerá una ventana emergente preguntando:
"El cliente está suspendido. ¿Desea activarlo?"
Si el administrador presiona SÍ, el sistema realizará dos acciones críticas:
- Cambiará el estado del cliente en la base de datos a Activo.
- Se conectará al MikroTik correspondiente para levantar la suspensión del servicio.
Esto ocurre únicamente para usuarios con permisos de administrador (tipo_usuario = 0).
Código correspondiente:
if (tipo_usuario == 0) { // ADMIN
if (estado != null && estado.equalsIgnoreCase("Suspendido")) {
Mensajes m = new Mensajes();
boolean deseaActivar = m.confirmacionesGenericas(
"El cliente \"" + nombre + "\" está actualmente SUSPENDIDO.\n\n"
+ "¿Desea ACTIVARLO?\n"
+ "Recuerde tener conexión al Mikrotik correspondiente antes de continuar."
);
if (deseaActivar) {
// Activar en BD
actualizar_datos.bloqueo(idCliente, "Activo");
// Jalar información del Mikrotik
new auxiliar_cliente_caja().jalar_informacion(idCliente);
}
}
}
El sistema registrará el dinero y generará el ticket, pero NO preguntará ni reactivará el servicio.
Esto se debe a que los cajeros no cuentan con permisos para modificar el estado de un cliente ni para ejecutar acciones sobre MikroTik.
En este caso, el sistema muestra únicamente un mensaje informativo:
"No tienes permisos para ACTIVAR clientes. Contacta a tu ADMINISTRADOR si el cliente requiere reactivación."
El cliente permanece suspendido hasta que un administrador intervenga manualmente.
Código correspondiente:
} else if (tipo_usuario == 1) { // CAJERO
new Mensajes().enviarInformacion(
"No tienes permisos para ACTIVAR clientes.\n"
+ "Contacta a tu ADMINISTRADOR si el cliente requiere reactivación."
);
// IMPORTANTE: NO CAMBIAR ESTADO DEL CLIENTE.
// No ejecutar actualizar_datos.bloqueo()
}
Diagrama de Flujo del Proceso de Activación
┌───────────────────────────┐
│ ¿El cliente está SUSPENDIDO? │
└───────────────┬─────────────┘
│ SÍ
▼
┌─────────────────────────┐
│ ¿Quién realiza el cobro? │
└──────────┬──────────────┘
│
┌────────────┴────────────┐
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ ADMINISTRADOR │ │ CAJERO │
└─────────┬─────────┘ └─────────┬─────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────────────┐
│ Mostrar confirmación │ │ Mostrar mensaje informativo: │
│ "¿Desea activarlo?" │ │ "No tienes permisos..." │
└─────────┬────────────┘ └──────────────────────────────┘
│
┌───────┴──────────┐
▼ ▼
┌─────────────┐ ┌──────────────┐
│ SÍ activar │ │ NO activar │
└───────┬─────┘ └───────┬──────┘
│ │
▼ ▼
┌────────────────────┐ ┌───────────────────┐
│ Cambiar estado a │ │ Mantener estado │
│ Activo en la BD │ │ Suspendido │
└─────────┬──────────┘ └──────────┬────────┘
│ │
▼ ▼
┌───────────────────────┐ ┌─────────────────────┐
│ Reactivar en Mikrotik │ │ NO tocar Mikrotik │
└───────────────────────┘ └─────────────────────┘
5. Descuentos y Recargos
Puede ajustar el total final aplicando descuentos manuales o cargos por reconexión antes de procesar el pago.
| Campo | Función |
|---|---|
| Ingresa cantidad que restas | Descuento directo al total (ej. promoción o ajuste por centavos). |
| Cobro por reconexión | Cargo adicional (ej. penalización por pago tardío). Se suma al total. |
6. Confirmación de Transacción
Para procesar: Escriba la cantidad recibida y presione ENTER.
Si el monto es correcto, el sistema confirmará la operación y mostrará la nueva fecha de vencimiento.
7. Impresión y Recibos
Seleccione el método de entrega del comprobante:
| Opción | Acción del Sistema |
|---|---|
| Generar PDF | Crea un archivo digital tamaño carta con los datos fiscales, ideal para enviar por WhatsApp o Email. |
| Imprimir Ticket | Envía la orden a la impresora térmica configurada (58mm u 80mm). |
| Ambos | Genera el archivo digital Y emite el ticket físico simultáneamente. |
8. Vista Previa del Recibo PDF
Documentos / iWISP Comprobantes / [Mes Año].