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.


Interfaz de Caja

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

Búsqueda de cliente

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

Alerta de Adeudo
Atención: El sistema detecta automáticamente si el cliente tiene meses pendientes.

La lógica de cobro respeta el ciclo de facturación del cliente, no la fecha actual.


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:

Si cobra un ADMINISTRADOR
Confirmación de pago

Al finalizar el cobro, aparecerá una ventana emergente preguntando:

"El cliente está suspendido. ¿Desea activarlo?"

Si el administrador presiona , 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);
        }

    }
}
Si cobra un CAJERO
Confirmación de pago

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

Panel de descuentos

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

Confirmación de pago

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

Opciones de impresión

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.
Nota de configuración: Por defecto, se imprimen 2 tickets (Original y Copia). Puede desactivar la copia desde Ajustes del Sistema > Impresora.

8. Vista Previa del Recibo PDF

Ubicación de Archivos: Todos los PDFs generados se guardan automáticamente en:
Documentos / iWISP Comprobantes / [Mes Año].