Skip to main content

Requisitos Previos

Antes de aperturar una caja, asegúrese de:
  • Tener una caja creada y en estado Activa (habilitada)
  • No tener otra caja abierta simultáneamente (el sistema solo permite una caja abierta por empresa)
  • Contar con el permiso puede_abrir_caja en su usuario
  • Tener el efectivo físico disponible para el fondo inicial
Restricción importante: Solo puede haber UNA caja abierta a la vez por empresa. Si intenta aperturar otra caja, el sistema mostrará un mensaje de bloqueo indicando que debe cerrar la caja actual primero.

Proceso de Apertura

1

Acceder al módulo de Caja

Navegue a Finanzas → Caja en el menú lateral. Verá la lista de cajas registradas con sus estados actuales.
2

Habilitar la caja (si está inactiva)

Si la caja que desea usar muestra el estado Inactiva, debe habilitarla primero:
  • Haga clic en el botón ▶ Habilitar de la caja
  • El estado cambiará a Activa (disponible para aperturar)
Las cajas inactivas aparecen con un badge rojo. Solo las cajas activas (badge verde) pueden aperturarse.
3

Iniciar apertura

Haga clic en el botón Aperturar Caja (ubicado en la fila de la caja activa en la tabla).El sistema abrirá el modal de apertura mostrando:
  • Nombre de la caja
  • Responsable asignado
  • Opciones de fondo inicial
4

Seleccionar tipo de apertura

El sistema ofrece dos métodos para registrar el fondo inicial de efectivo:

Opción 1: Monto Total

Ingrese directamente el monto total en soles (S/):
Fondo inicial (S/): 500.00
Este método es más rápido cuando ya tiene el total contado.

Opción 2: Contar Billetes y Monedas

Seleccione esta opción para desglosar el efectivo por denominaciones:
DenominaciónCantidadTotal
Billete S/. 200.002400.00
Billete S/. 100.005500.00
Billete S/. 50.0010500.00
Billete S/. 20.0015300.00
Billete S/. 10.0020200.00
Moneda S/. 5.001050.00
Moneda S/. 2.001020.00
Moneda S/. 1.002020.00
TotalS/. 1,990.00
El sistema calcula automáticamente el total sumando todas las denominaciones.
El desglose por billetes queda registrado en la tabla apertura_caja_billetes y puede consultarse en el historial de auditoría.
5

Agregar observaciones (opcional)

Puede agregar notas sobre el origen del efectivo:
Observaciones: Fondo asignado por tesorería para jornada del 15/03
6

Confirmar apertura

Haga clic en Aperturar Caja. El sistema:
  1. Actualiza el estado de la caja a “Abierta”
  2. Registra el saldo_inicial con el monto ingresado
  3. Guarda la fecha_apertura (fecha y hora actual)
  4. Asocia el id_usuario del usuario que apertura
  5. Crea un movimiento de tipo “Ingreso” con concepto “Depósito de efectivo”
  6. Registra una auditoría con IP y user agent
Verá el mensaje: “Depósito registrado exitosamente”

Flujo Técnico Interno

Endpoint API

POST /api/cajas/{id_caja}/abrir
Authorization: Bearer {token}
Content-Type: application/json

{
  "tipo_apertura": "billetes",
  "saldo_inicial": 1990.00,
  "billetes": [
    { "id_denominacion": 1, "cantidad": 2 },
    { "id_denominacion": 2, "cantidad": 5 }
  ],
  "observaciones": "Fondo asignado por tesorería"
}
Respuesta exitosa:
{
  "success": true,
  "message": "Depósito registrado exitosamente.",
  "data": {
    "id_caja": 3,
    "nombre": "Caja Principal",
    "estado": "Activa",
    "saldo_inicial": 1990.00,
    "fecha_apertura": "2026-03-06T08:30:00"
  }
}

Código del Servicio

El controlador CajaController.php (línea 91-100) delega la lógica al servicio:
public function abrir(CajaAperturaRequest $request, int $id): JsonResponse
{
    $caja = $this->cajaService->obtener($id, $request->user()->id_empresa);
    if (!$caja) {
        return $this->notFound('Caja no encontrada.');
    }
    
    $caja = $this->sesionService->abrir($caja, $request->validated(), $request->user());
    return $this->success(new CajaResource($caja), 'Depósito registrado exitosamente.');
}
En CajaSesionService.php (línea 17-53):
  1. Valida que la caja esté en estado Activa
  2. Actualiza saldo_inicial, id_usuario, fecha_apertura
  3. Crea un MovimientoCaja de tipo “Ingreso” con concepto “Depósito de efectivo”
  4. Registra una auditoría en auditoria_caja con acción “Depósito”

Verificación Post-Apertura

Después de aperturar:
  1. La caja aparecerá en la sección Caja Abierta del módulo
  2. Verá el resumen con:
    • Saldo inicial
    • Hora de apertura
    • Usuario que aperturó
  3. Ya puede registrar movimientos y ventas asociadas a esta caja

Permisos Requeridos

El permiso caja.open se valida mediante el middleware CheckPermission. Los usuarios con rol_id = 1 (Admin) tienen acceso automático. Para otros roles, configure el permiso en Configuración → Roles y Permisos → [Rol] → Caja.

Solución de Problemas

La caja debe estar en estado Activa (no Inactiva). Vaya a la lista de cajas y haga clic en ▶ Habilitar primero.
La caja ya está habilitada. Proceda directamente a la apertura.
Verifique:
  1. Que no haya otra caja abierta (solo una simultánea permitida)
  2. Que su usuario tenga el permiso puede_abrir_caja
  3. Que la caja esté en estado Activa
No directamente. Debe registrar un movimiento manual de ingreso/egreso para ajustar el saldo. El saldo_inicial permanece fijo para cálculos de arqueo.

Próximos Pasos

Build docs developers (and LLMs) love