Cajas Diario
Gestion de cajas diario con apertura, cierre, movimientos de ingreso y egreso, y detalle de metodos de pago.
Que es Cajas Diario
El modulo Cajas Diario permite gestionar el ciclo diario de caja de cada cajero o responsable financiero. Una caja diario representa el periodo operativo en el que un cajero registra todos los movimientos de dinero (ingresos y egresos) durante su turno. El flujo va desde la apertura de la caja (inicio del turno) hasta el cierre (fin del turno), controlando los montos totales y los metodos de pago utilizados.
Ruta de navegacion: Inicio > Finanzas > Cajas diario
Estados de una caja diario
Cada caja diario tiene un ciclo de vida con dos estados posibles:
| Estado | Color del badge | Descripcion |
|---|---|---|
| APERTURA | Azul (bgblue) | La caja fue abierta y esta operativa. El cajero puede registrar movimientos de ingreso y egreso durante este periodo. |
| CIERRE | Verde (bggreen) | La caja fue cerrada. Se registro el monto final y ya no acepta nuevos movimientos. |
Una caja en estado APERTURA es una caja activa. Solo puede existir una caja abierta por responsable por dia. Si intenta abrir otra caja para el mismo responsable en la misma fecha, el sistema mostrara el mensaje: "El responsable ya tiene una caja aperturada."
Pantalla principal: listado de cajas diario
Descripcion general
La pantalla principal muestra el titulo "Cajas diario" con la descripcion "Muestra el listado y las herramientas para gestionar las cajas diario".
Barra de herramientas
En la parte superior derecha se encuentran dos botones:
| Boton | Icono | Descripcion |
|---|---|---|
| Actualizar | pi pi-refresh | Recarga la tabla con los datos mas recientes del servidor. |
| Apertura | pi pi-plus | Abre el formulario para crear una nueva caja diario (apertura). |
Columnas de la tabla principal
La tabla muestra las siguientes columnas:
| # | Columna | Descripcion | Formato |
|---|---|---|---|
| 1 | RESPONSABLE | Nombre del cajero responsable de la caja. Se muestra como la inicial del nombre + apellido paterno (ej: "JPerez"). | Texto |
| 2 | APERTURA FECHA | Fecha y hora en que se abrio la caja. | DD/MM/YYYY hh:mm AM/PM |
| 3 | MOVIMIENTO INGRESO CANTIDAD | Numero total de movimientos de tipo INGRESO registrados en esta caja. | Numero entero |
| 4 | MOVIMIENTO INGRESO MONTO | Suma total de los montos de todos los movimientos de tipo INGRESO. | Numero decimal |
| 5 | MOVIMIENTO EGRESO CANTIDAD | Numero total de movimientos de tipo EGRESO registrados en esta caja. | Numero entero |
| 6 | MOVIMIENTO EGRESO MONTO | Suma total de los montos de todos los movimientos de tipo EGRESO. | Numero decimal |
| 7 | ESTADO | Estado actual de la caja diario (APERTURA o CIERRE) mostrado como badge con color. | Badge de color |
| 8 | ACCIONES | Icono de tres puntos horizontales (pi pi-ellipsis-h) que despliega el menu contextual. | Icono clickeable |
Las columnas de Apertura Monto, Apertura Monto Efectivo, Cierre Fecha, Cierre Monto y Cierre Monto Efectivo existen en el modelo de datos pero estan ocultas (comentadas) en la interfaz de la tabla principal. Los valores se pueden ver al abrir el detalle de cada caja.
Paginacion
La tabla incluye un sistema de paginacion con los siguientes controles:
- Texto informativo: "Mostrando pagina {X} con {Y} registros de {Z} entradas"
- Boton Primera pagina (
pi pi-angle-double-left): va a la primera pagina - Boton Pagina anterior (
pi pi-angle-left): retrocede una pagina - Selector de pagina: dropdown que muestra "1 de N" y permite saltar a cualquier pagina
- Boton Pagina siguiente (
pi pi-angle-right): avanza una pagina - Boton Ultima pagina (
pi pi-angle-double-right): va a la ultima pagina
El tamano de pagina por defecto es 50 registros.
Menu contextual
El menu contextual aparece al hacer clic derecho sobre una fila o al hacer clic en el icono de tres puntos de la columna ACCIONES. Las opciones disponibles dependen del estado de la caja:
Estado APERTURA (estado = 0)
| Opcion | Icono | Descripcion |
|---|---|---|
| Detalles | pi pi-info-circle | Redirige a la pantalla de movimientos de la caja: /comercial/mis-cajas-diario-movimientos/\{id\} |
| Cierre | pi pi-check-circle | Abre el formulario de cierre de caja con la seccion CIERRE visible. |
| --- | --- | Separador visual |
| Baja | pi pi-trash | Inicia el proceso de eliminacion de la caja diario. |
El menu contextual solo tiene opciones para el estado APERTURA (estado = 0). Las cajas en estado CIERRE no muestran opciones en el menu contextual, ya que la caja cerrada no admite mas acciones.
Filtros de busqueda
La barra de filtros se ubica debajo de la barra de herramientas e incluye:
Busqueda por texto libre
Un campo de texto con icono de lupa (pi pi-search) permite buscar por cualquier texto. La busqueda se aplica como *texto* sobre todos los campos indexados.
Filtros avanzados
Al hacer clic en "Agregar filtro" se abre un panel superpuesto (overlay) con un dropdown que permite seleccionar el tipo de filtro:
| # | Tipo de filtro | Valor del dropdown | Campos que muestra | Descripcion |
|---|---|---|---|---|
| 1 | Fecha de apertura | FECHA APERTURA | Apertura Fecha inicio + Apertura Fecha fin | Filtra cajas cuya fecha de apertura esta dentro del rango indicado. Ambos campos son obligatorios. Formato: selector de fecha (date). |
| 2 | Fecha de cierre | FECHA CIERRE | Cierre Fecha inicio + Cierre Fecha fin | Filtra cajas cuya fecha de cierre esta dentro del rango indicado. Ambos campos son obligatorios. Formato: selector de fecha (date). |
| 3 | Vendedor | VENDEDOR | Responsable (dropdown con busqueda) | Filtra cajas por el responsable/cajero seleccionado. Se puede buscar por nombre. Obligatorio. |
Aunque en el codigo existe una opcion de filtro por Estado (opcion 3 en la lista del TS), en la interfaz del dropdown solo se muestran 3 opciones: Fecha Apertura, Fecha Cierre y Vendedor.
Botones de filtros
| Boton | Icono | Descripcion |
|---|---|---|
| Agregar filtro | pi pi-filter | Abre el panel overlay para configurar un nuevo filtro. |
| Quitar filtros | pi pi-filter-slash | Elimina todos los filtros activos y resetea la busqueda. |
| Buscar | pi pi-search | Ejecuta la busqueda con los filtros activos. |
Chips de filtros activos
Cada filtro agregado se muestra como un chip (etiqueta) encima de los botones. Cada chip muestra:
- Fecha de apertura: "Fecha de apertura desde DD/MM/YYYY hasta DD/MM/YYYY"
- Fecha de cierre: "Fecha de cierre desde DD/MM/YYYY hasta DD/MM/YYYY"
- Responsable: "Responsable == Nombre Completo"
Cada chip tiene un boton X para eliminar ese filtro individual. Al hacer clic sobre el chip se puede editar el filtro existente.
Formulario de apertura de caja
Al hacer clic en el boton "Apertura" de la barra de herramientas, se abre un dialogo a pantalla completa con el titulo "Caja diario".
Seleccionar cajero
El campo Cajero(a) es un dropdown con busqueda que muestra la lista de vendedores/colaboradores configurados. Formato: "Apellido Paterno Apellido Materno Nombres".
- El campo esta deshabilitado visualmente (clase
p-disabled) pero se pre-selecciona automaticamente con el usuario actual si existe en la lista de vendedores - Se puede buscar escribiendo en el filtro del dropdown
- Al escribir, el sistema busca colaboradores en el servidor en tiempo real
- Mensaje si no hay resultados: "No se encontraron registros."
- Mensaje si el filtro no encuentra nada: "No se han encontrado resultados"
El campo Cajero(a) es obligatorio. El sistema lo marca con un asterisco rojo (*).
Seccion APERTURA
Esta seccion se muestra cuando el estado es 0 (nueva caja). Contiene un fieldset con el titulo "APERTURA" y los siguientes campos:
| Campo | Tipo | Obligatorio | Descripcion |
|---|---|---|---|
| Fecha | Calendario con hora (p-calendar) | Si | Se actualiza automaticamente cada segundo con la fecha/hora actual. Formato: DD/MM/YYYY hh:mm AM/PM. El campo esta deshabilitado (no editable manualmente). |
| Monto | Numero decimal (p-inputNumber) | Si | Monto total de apertura. Se calcula automaticamente a partir del detalle de movimientos. Formato decimal con hasta 2 digitos. Valor minimo: 0. |
| Monto efectivo | Numero decimal (p-inputNumber) | Si | Monto en efectivo de apertura. Se calcula automaticamente sumando solo los montos de tipo EFECTIVO del detalle. Formato decimal con hasta 2 digitos. Valor minimo: 0. |
Validaciones de la seccion Apertura:
| Campo | Mensaje de error | Condicion |
|---|---|---|
| Fecha | * Obligatorio | Si el campo esta vacio |
| Monto | * Obligatorio | Si el campo esta vacio |
| Monto efectivo | * Obligatorio | Si el campo esta vacio |
Detalle de movimientos (tabla interna)
Dentro de la seccion APERTURA (y tambien en CIERRE) se incluye una tabla de detalle de movimientos. Esta tabla permite agregar multiples lineas de pago que componen el monto total de apertura o cierre.
Columnas de la tabla de detalle
| # | Columna | Ancho | Descripcion |
|---|---|---|---|
| 1 | TIPO COBRO | 180px | Dropdown para seleccionar el metodo de pago. |
| 2 | TIPO | 150px | Campo dinamico que cambia segun el tipo de cobro seleccionado. |
| 3 | NUMERO REFERENCIA | Flexible | Campo de texto enmascarado (hasta 22 digitos). Solo visible si el tipo de cobro NO es Efectivo. |
| 4 | MONTO RECIBIDO | 150px | Campo numerico decimal para ingresar el monto de esta linea de pago. |
| 5 | VALIDAR | 100px | Checkbox "Validado?" Solo visible si el tipo de cobro NO es Efectivo. |
| 6 | ACCIONES | 80px | Boton X (pi pi-times) para eliminar esta linea de detalle. |
Tipos de cobro disponibles
| # | Tipo de cobro | Valor interno | Campo "TIPO" muestra |
|---|---|---|---|
| 1 | Efectivo | EFECTIVO | No muestra campo adicional (texto: "Seleccione un metodo de pago") |
| 2 | Tarjeta | TARJETA | Dropdown con opciones: Debito / Credito |
| 3 | Deposito en cuenta | DEPOSITO EN CUENTA | Dropdown con lista de bancos |
| 4 | Transferencia | TRANSFERENCIA | Dropdown con lista de bancos |
| 5 | Monedero electronico | MONEDERO ELECTRONICO | Dropdown con lista de monederos |
Lista de bancos disponibles
| # | Banco |
|---|---|
| 1 | BANCO DE COMERCIO |
| 2 | BANCO DE CREDITO DEL PERU |
| 3 | BANCO INTERAMERICANO DE FINANZAS (BanBif) |
| 4 | BANCO PICHINCHA |
| 5 | BBVA |
| 6 | CITIBANK PERU |
| 7 | INTERBANK |
| 8 | MIBANCO |
| 9 | SCOTIABANCK PERU |
| 10 | BANCO GNB PERU |
| 11 | BANCO FALABELLA |
| 12 | BANCO RIPLEY |
| 13 | BANCO SANTANDER PERU |
| 14 | ALFIN BANCO |
| 15 | BANK OF CHINA |
| 16 | BCI PERU |
| 17 | ICBC PERU BANK |
Lista de monederos electronicos disponibles
| # | Monedero | Valor interno |
|---|---|---|
| 1 | Yape | YAPE |
| 2 | Plin | PLIN |
| 3 | IzipayYA | IZIPAYYA |
| 4 | Agora PAY | AGORA |
| 5 | Bim | BIM |
Comportamiento del detalle
- Al abrir el formulario, se crea automaticamente una linea de detalle con tipo de cobro Efectivo y monto 0
- Boton "Agregar" (
pi pi-plus): agrega una nueva linea de detalle con tipo Efectivo y monto 0 - Boton X (
pi pi-times): elimina la linea de detalle correspondiente - Pie de tabla: muestra el texto "Monto total recibido" y el valor total calculado con formato
0.00 - Si no hay lineas, muestra el mensaje: "No se encontraron datos" con icono de advertencia
Calculo automatico de montos
Cada vez que se modifica un monto, tipo de cobro o se agrega/elimina una linea, el sistema recalcula:
- Monto total (
montoTotal): suma de TODOS los montos recibidos de todas las lineas, sin importar el tipo de cobro - Monto total efectivo (
montoTotalRecibido): suma solo de los montos cuyo tipo de cobro es EFECTIVO - Estos valores se envian automaticamente al formulario principal y actualizan los campos Monto y Monto efectivo de la seccion APERTURA o CIERRE
El campo Numero Referencia usa una mascara de entrada (p-inputMask) que acepta hasta 22 digitos numericos. No se muestra para pagos en efectivo.
Observacion
Un campo de texto de multiples lineas (textarea) con 5 filas de alto. Es obligatorio.
- Mensaje de error:
* Obligatorio - Al guardar, el texto se convierte automaticamente a MAYUSCULAS
Guardar apertura
Al hacer clic en "Guardar":
- El sistema verifica si el responsable ya tiene una caja abierta en la misma fecha
- Si ya existe: muestra error "El responsable ya tiene una caja aperturada."
- Si no existe: crea la caja diario y luego guarda cada linea de detalle como movimiento de tipo INGRESO con motivo "APERTURA"
- Mensaje de exito: "Registros exitosos."
- El dialogo se cierra automaticamente y la tabla se actualiza
Formulario de cierre de caja
Al seleccionar "Cierre" en el menu contextual de una caja en estado APERTURA, se abre el mismo dialogo a pantalla completa pero con la seccion CIERRE visible.
Cajero(a) deshabilitado
El campo Cajero(a) se muestra deshabilitado cuando el estado es CIERRE (estado = 1). Se muestra el cajero que abrio la caja, sin posibilidad de cambiarlo.
Seccion CIERRE
Esta seccion se muestra cuando el estado es 1 (cierre de caja existente). Contiene un fieldset con el titulo "CIERRE" y los siguientes campos:
| Campo | Tipo | Obligatorio | Descripcion |
|---|---|---|---|
| Fecha | Calendario con hora (p-calendar) | Si | Se actualiza automaticamente cada segundo con la fecha/hora actual. Formato: DD/MM/YYYY hh:mm AM/PM. |
| Monto | Numero decimal (p-inputNumber) | Si | Monto total de cierre. Se calcula automaticamente del detalle de movimientos. |
| Monto efectivo | Numero decimal (p-inputNumber) | Si | Monto en efectivo de cierre. Se calcula automaticamente del detalle de movimientos. |
Al abrir el formulario de cierre, el sistema carga los datos de apertura de la caja (fecha, monto, monto efectivo, observaciones) como referencia, pero estos campos NO son editables en el modo cierre.
Detalle de movimientos de cierre
Funciona exactamente igual que en la apertura. La diferencia es:
- Los movimientos se guardan con tipo EGRESO y motivo "CIERRE"
- Los montos calculados actualizan los campos Monto y Monto efectivo de la seccion CIERRE
Observacion de cierre
Campo de texto de multiples lineas (textarea) con 5 filas. Es obligatorio. Se convierte a mayusculas al guardar.
Guardar cierre
Al hacer clic en "Guardar":
- El sistema actualiza la caja diario existente con los datos de cierre
- El estado cambia de APERTURA a CIERRE
- Mensaje de exito: "Registro exitoso."
- El dialogo se cierra y la tabla se actualiza
Eliminar caja diario (Baja)
Al seleccionar "Baja" en el menu contextual de una caja en estado APERTURA:
- Se abre un dialogo de confirmacion con el titulo "Confirmacion"
- Se muestra un icono de advertencia (
pi pi-exclamation-triangle) con el mensaje: "Estas seguro de proceder con la eliminacion?" - Dos botones:
- No (
pi pi-times): cierra el dialogo sin eliminar - Si (
pi pi-check): procede con la eliminacion
- No (
Al confirmar:
- El sistema envia una solicitud de eliminacion al servidor
- Mensaje de exito: "Eliminado."
- La tabla se recarga automaticamente
- Si hay error, se muestra un mensaje con el detalle del error
Detalle de movimientos
Al seleccionar "Detalles" en el menu contextual, el sistema redirige a la pagina de movimientos de la caja diario en la ruta:
/comercial/mis-cajas-diario-movimientos/{id}
Donde \{id\} es el identificador unico de la caja diario. Esta vista se documenta por separado en el modulo Cajas Diario Movimientos.
Mensajes del sistema
Mensajes de exito
| Mensaje | Contexto |
|---|---|
| "Registros exitosos." | Apertura de caja creada correctamente (con detalles de movimiento). |
| "Registro exitoso." | Cierre de caja actualizado correctamente. |
| "Eliminado." | Caja diario eliminada correctamente. |
Mensajes de error
| Mensaje | Contexto |
|---|---|
| "El responsable ya tiene una caja aperturada." | Se intento abrir una segunda caja para el mismo responsable en la misma fecha. |
| "Revise bien, hay formularios por validar." | Hay campos obligatorios sin completar (validacion del formulario). |
| " Obligatorio"* | Campo requerido que no fue completado (aparece en rojo debajo del campo). |
| "No se encontro el servidor de respuestas, consulte con el Administrador. ERROR 404" | El servidor no responde (error 404). |
| "Error interno del servidor. ERROR 500" | Error interno del servidor (error 500). |
| "Error 404 consulte con su admin." | Error generico de comunicacion con el servidor. |
Datos tecnicos de la caja diario
Estructura de datos de una caja diario
| Campo | Tipo | Descripcion |
|---|---|---|
id | UUID | Identificador unico de la caja diario |
estado | Numero | 0 = APERTURA, 1 = CIERRE |
responsable_id | UUID | ID del cajero/colaborador responsable |
receptor_id | UUID | ID del receptor (si aplica) |
apertura_fecha | Fecha/Hora | Fecha y hora de apertura |
apertura_monto | Decimal | Monto total al momento de la apertura |
apertura_monto_efectivo | Decimal | Monto en efectivo al momento de la apertura |
apertura_observaciones | Texto | Observaciones de la apertura (en mayusculas) |
cierre_fecha | Fecha/Hora | Fecha y hora del cierre |
cierre_monto | Decimal | Monto total al momento del cierre |
cierre_monto_efectivo | Decimal | Monto en efectivo al momento del cierre |
cierre_observaciones | Texto | Observaciones del cierre (en mayusculas) |
movimientos | Array | Lista de movimientos asociados a esta caja |
Estructura de un movimiento de caja
Cada linea de detalle se guarda como un movimiento independiente:
| Campo | Tipo | Descripcion |
|---|---|---|
fecha | Fecha/Hora | Fecha y hora del movimiento |
tipo | Texto | INGRESO (apertura) o EGRESO (cierre) |
motivo | Texto | APERTURA o CIERRE |
monto | Decimal | Monto de esta linea de pago |
monto_tipo | Texto | Tipo de cobro: EFECTIVO, TARJETA, DEPOSITO EN CUENTA, TRANSFERENCIA, MONEDERO ELECTRONICO |
tarjeta_tipo | Texto | Subtipo: DEBITO/CREDITO (tarjeta), nombre del banco (deposito/transferencia), nombre del monedero |
numero_referencia | Texto | Numero de referencia de la transaccion (no aplica para efectivo) |
verificado | Boolean | Si el pago fue validado |
banco_nombre | Texto | Nombre del banco (para deposito y transferencia) |
monedero_nombre | Texto | Nombre del monedero (para monedero electronico) |
caja_id | UUID | ID de la caja diario a la que pertenece |
monto_total | Decimal | Monto total de todos los movimientos |
monto_total_efectivo | Decimal | Monto total en efectivo de todos los movimientos |
responsable_id | UUID | ID del responsable |
Problemas comunes y soluciones
| Problema | Causa probable | Solucion |
|---|---|---|
| "El responsable ya tiene una caja aperturada" | El cajero ya tiene una caja abierta hoy | Cierre la caja existente antes de abrir una nueva, o verifique si la caja anterior debe darse de baja. |
| No aparece el boton "Cierre" en el menu | La caja ya esta en estado CIERRE | Las cajas cerradas no tienen opciones adicionales. Solo cajas en APERTURA muestran las opciones Detalles, Cierre y Baja. |
| Los campos Monto y Monto efectivo no se pueden editar | Son campos calculados | Estos campos se calculan automaticamente a partir del detalle de movimientos. Modifique los montos en las lineas de detalle. |
| La fecha se actualiza sola constantemente | Es el comportamiento normal | La fecha de apertura/cierre se actualiza automaticamente cada segundo para reflejar la hora exacta del registro. |
| No puedo cambiar el cajero en el formulario de cierre | El campo esta deshabilitado en modo cierre | El cajero se hereda de la apertura y no puede modificarse al cerrar la caja. |
| No veo el campo Numero de Referencia | El tipo de cobro es Efectivo | El campo Numero de Referencia solo aparece para metodos de pago distintos a Efectivo (Tarjeta, Deposito, Transferencia, Monedero). |
| El checkbox "Validado?" no aparece | El tipo de cobro es Efectivo | La validacion solo aplica para metodos de pago distintos a Efectivo. |
| El monto total no coincide con lo esperado | Error en las lineas de detalle | Revise cada linea del detalle de movimientos. El monto total es la suma de todos los montos recibidos. El monto efectivo solo suma las lineas de tipo EFECTIVO. |
| Error al guardar la caja | Campos obligatorios vacios | Verifique que todos los campos marcados con * esten completados: Cajero, Fecha, Monto, Monto efectivo y Observacion. |
Relacion con otros modulos
| Modulo relacionado | Relacion |
|---|---|
| Cajas Diario Movimientos | Muestra el detalle de todos los movimientos (ingresos y egresos) de una caja diario especifica. Se accede desde la opcion "Detalles" del menu contextual. |
| Mis Cajas Diario | Vista personal que permite al cajero ver unicamente sus propias cajas diario. |
| Cobros | Los cobros pueden generar movimientos de ingreso en las cajas diario. |
| Cobros Ventas | Los cobros asociados a ventas tambien se reflejan como movimientos en las cajas diario. |