{{ agendarOTForm.otId }} · {{ agendarOTForm.clienteNombre }} · {{ agendarOTForm.vehiculoPatente }}
Las OT deben tener materiales antes de completarse.
Resumen diario de alertas vencidas y próximas.
Separá múltiples emails con coma.
{{ notif.mensaje }}
{{ formatRelativeTime(notif.created_at) }}
No hay clientes registrados.
ID: {{ selectedClientFromSubmenu.id }}
Nombre: {{ selectedClientFromSubmenu.nombre }}
Domicilio: {{ selectedClientFromSubmenu.domicilio || 'N/A' }}
Teléfono: {{ selectedClientFromSubmenu.telefono || 'N/A' }}
Email: {{ selectedClientFromSubmenu.email || 'N/A' }}
Sin vehículos registrados.
{{ day.dayNameShort }}
{{ day.dayOfMonth }}
🔧 {{ event.tarea }}
🔧 {{ event.tarea }}
{{ event.horaProgramada }} · {{ event.clienteNombre }} ({{ event.vehiculoPatente }})
{{ addEventForm.clienteNombre }} - {{ addEventForm.vehiculoDescripcion }} ({{ addEventForm.vehiculoPatente }})
No hay órdenes de trabajo activas en este momento.
No tienes órdenes asignadas activas.
No se completaron órdenes de trabajo hoy.
| OT | Cliente | Vehículo | Ingreso | Completado | Estado | |
|---|---|---|---|---|---|---|
| {{ orden.id }} | {{ orden.cliente?.nombre || '—' }} | {{ orden.vehiculo?.patente || '—' }} {{ orden.vehiculo?.marca }} {{ orden.vehiculo?.modelo }} | {{ formatDate(orden.fechaEntrada) }} | {{ formatDate(orden.fechaCompletado) || '—' }} | {{ orden.estado }} |
{{ historialOTsBusqueda ? 'Sin resultados para "' + historialOTsBusqueda + '".' : 'No hay órdenes completadas registradas.' }}
No hay presupuestos pendientes.
{{ newPresupuesto.vehiculoObj.patente }} — {{ newPresupuesto.vehiculoObj.marca }} {{ newPresupuesto.vehiculoObj.modelo }}
{{ newPresupuesto.clienteObj.nombre }}
| Descripción | Tipo | Cant. | Precio unit. | Subtotal | |
|---|---|---|---|---|---|
| {{ item.descripcion }} | {{ item.tipo === 'mano_de_obra' ? 'Mano de obra' : item.tipo === 'repuesto' ? 'Repuesto' : 'Otro' }} | {{ item.cantidad }} | {{ formatCurrency(item.precioUnitario) }} | {{ formatCurrency(item.cantidad * item.precioUnitario) }} | |
| TOTAL: | {{ formatCurrency(presupuestoTotal) }} | ||||
No se encontraron vehículos o clientes con esos criterios.
{{ item.vehiculo?.patente || 'N/A' }} - {{ item.vehiculo?.marca || 'N/A' }} {{ item.vehiculo?.modelo || 'N/A' }} ({{item.vehiculo?.anio || 'N/A'}})
Cliente: {{ item.cliente?.nombre || 'N/A' }} (ID: {{ item.cliente?.id || 'N/A' }})
Cliente: {{ newOrdenMantenimiento.cliente?.nombre || 'N/A' }} (ID: {{ newOrdenMantenimiento.cliente?.id || 'N/A' }})
Vehículo: {{ newOrdenMantenimiento.vehiculo?.patente || 'N/A' }} - {{ newOrdenMantenimiento.vehiculo?.marca || 'N/A' }} {{ newOrdenMantenimiento.vehiculo?.modelo || 'N/A' }} ({{newOrdenMantenimiento.vehiculo?.anio || 'N/A'}}) - {{ newOrdenMantenimiento.vehiculo?.kilometraje ? newOrdenMantenimiento.vehiculo.kilometraje.toLocaleString() + ' km' : 'N/A km' }} - Comb: {{ newOrdenMantenimiento.vehiculo?.tipoCombustible || 'N/A' }}
Fecha de Ingreso: {{ formatDate(newOrdenMantenimiento.fechaEntrada) }}
Kilometraje Actual:
No hay técnicos cargados en el sistema.
Costo estimado: {{ formatCurrency(newOrdenMantenimiento.horasTrabajadas * (empleados.find(e => e.id === newOrdenMantenimiento.tecnico_asignado_id)?.valorHora || 0)) }} ({{ newOrdenMantenimiento.horasTrabajadas }} hs × ${{ Number(empleados.find(e => e.id === newOrdenMantenimiento.tecnico_asignado_id)?.valorHora || 0).toLocaleString('es-AR') }}/h)
Asigná un técnico con valor hora cargado para calcular el costo.
No hay tareas agregadas a esta orden.
| Producto | Cant. | P. Unit. | Subtotal | |
|---|---|---|---|---|
| {{ mat.nombre_item }} | {{ mat.cantidad }} | ${{ Number(mat.precio_unitario).toFixed(2) }} | ${{ (mat.cantidad * Number(mat.precio_unitario)).toFixed(2) }} | |
| Total materiales: | ${{ otMaterialesTotalCalc.toFixed(2) }} | |||
Sin materiales registrados. ⚠ Requerido antes de completar.
Km de entrada: {{ newOrdenMantenimiento.kilometrajeEntrada ? newOrdenMantenimiento.kilometrajeEntrada.toLocaleString() + ' km' : 'No registrado' }}
No hay órdenes disponibles para tomar en este momento.
Todavía no tienes órdenes tomadas.
| OT | Tarea | Cliente / Vehículo | Estado | Acción |
|---|---|---|---|---|
| {{ tarea.ordenId }} |
{{ tarea.nombre }} {{ tarea.comentario }} |
{{ tarea.clienteNombre }} {{ tarea.vehiculoPatente }} |
{{ tarea.completado ? 'Completada' : 'Pendiente' }} |
No hay tareas para los filtros seleccionados.
No se encontraron empleados con esos criterios.
{{ empleado.nombreCompleto }} (ID: {{ empleado.id }})
BAJAPuesto: {{ empleado.puesto || 'No especificado' }}
CUIL: {{ empleado.cuil || 'N/A' }}
Fecha Ingreso: {{ empleado.fechaIngreso ? formatDate(empleado.fechaIngreso) : 'N/A' }}
Fecha Baja: {{ formatDate(empleado.fechaBaja) }}
Antigüedad: {{ empleado.antiguedad || 'N/A' }}
Días de Vacaciones: {{ calcularDiasVacaciones(empleado.fechaIngreso, empleado.fechaBaja) }} días
{{ verEmpleadosBaja ? 'No hay empleados dados de baja.' : 'No hay empleados activos registrados.' }}
Empleado dado de baja
Este empleado fue dado de baja el {{ formatDate(newEmpleado.fechaBaja) }}. No es posible cargar nuevas licencias. El historial se muestra a continuación solo para consulta.
Días Anuales Otorgados: {{ newEmpleado.diasVacacionesAnualesOtorgados }} días
Días Utilizados (Periodo Actual): {{ newEmpleado.diasVacacionesUtilizados }} días
Días Disponibles: {{ newEmpleado.diasVacacionesAnualesOtorgados - newEmpleado.diasVacacionesUtilizados }} días
Nota: Los días otorgados se basan en la antigüedad calculada. El descuento de vacaciones se aplica al guardar una licencia de tipo "Vacaciones".
No hay licencias registradas para este empleado.
Nombre: {{ newEmpleado.nombreCompleto || 'N/A' }}
DNI: {{ newEmpleado.dni || 'N/A' }}
CUIL: {{ newEmpleado.cuil || 'N/A' }}
Nacimiento: {{ newEmpleado.fechaNacimiento ? formatDate(newEmpleado.fechaNacimiento) : 'N/A' }}
Domicilio: {{ newEmpleado.domicilio || 'N/A' }}
Localidad: {{ newEmpleado.localidad || 'N/A' }}
Código Postal: {{ newEmpleado.codigoPostal || 'N/A' }}
Teléfono: {{ newEmpleado.telefono || 'N/A' }}
Email: {{ newEmpleado.email || 'N/A' }}
Puesto: {{ newEmpleado.puesto || 'N/A' }}
Fecha de Ingreso: {{ newEmpleado.fechaIngreso ? formatDate(newEmpleado.fechaIngreso) : 'N/A' }}
Fecha de Baja: {{ newEmpleado.fechaBaja ? formatDate(newEmpleado.fechaBaja) : 'N/A' }}
Antigüedad: {{ newEmpleado.antiguedad || 'N/A' }}
Tipo de Contrato: {{ newEmpleado.tipoContrato || 'N/A' }}
Forma de Pago: {{ newEmpleado.formaPago || 'N/A' }}
Valor Hora: {{ newEmpleado.valorHora ? '$' + Number(newEmpleado.valorHora).toLocaleString('es-AR') : 'N/A' }}
Vacaciones Otorgadas: {{ newEmpleado.diasVacacionesAnualesOtorgados ?? 0 }} días
Vacaciones Utilizadas: {{ newEmpleado.diasVacacionesUtilizados ?? 0 }} días
Vacaciones Disponibles: {{ (newEmpleado.diasVacacionesAnualesOtorgados ?? 0) - (newEmpleado.diasVacacionesUtilizados ?? 0) }} días
Obra Social: {{ newEmpleado.obraSocial?.nombre || 'N/A' }}
N° Afiliado: {{ newEmpleado.obraSocial?.numeroAfiliado || 'N/A' }}
Banco: {{ newEmpleado.datosBancarios?.banco || 'N/A' }}
CBU/CVU: {{ newEmpleado.datosBancarios?.cbu || 'N/A' }}
Alias: {{ newEmpleado.datosBancarios?.alias || 'N/A' }}
ART: {{ newEmpleado.art?.nombre || 'N/A' }}
N° Póliza/Socio ART: {{ newEmpleado.art?.numeroSocio || 'N/A' }}
No hay licencias registradas para este empleado.
{{ item.vehiculo?.patente || 'N/A' }} - {{ item.vehiculo?.marca || 'N/A' }} {{ item.vehiculo?.modelo || 'N/A' }}
Cliente: {{ item.cliente?.nombre || 'N/A' }} (ID: {{ item.cliente?.id || 'N/A' }})
No se encontraron vehículos con esos criterios.
No hay servicios completados recientemente.
Cliente: {{ vehiculoSeleccionadoGlobal.cliente?.nombre || 'N/A' }}
ID Cliente: {{ vehiculoSeleccionadoGlobal.cliente?.id || 'N/A' }}
Domicilio: {{ vehiculoSeleccionadoGlobal.cliente?.domicilio || 'N/A' }}
Teléfono: {{ vehiculoSeleccionadoGlobal.cliente?.telefono || 'N/A' }}
Email: {{ vehiculoSeleccionadoGlobal.cliente?.email || 'N/A' }}
Patente: {{ vehiculoSeleccionadoGlobal.vehiculo?.patente || 'N/A' }}
Marca: {{ vehiculoSeleccionadoGlobal.vehiculo?.marca || 'N/A' }}
Modelo: {{ vehiculoSeleccionadoGlobal.vehiculo?.modelo || 'N/A' }}
Año: {{ vehiculoSeleccionadoGlobal.vehiculo?.anio || 'N/A' }}
Kilometraje: {{ vehiculoSeleccionadoGlobal.vehiculo?.kilometraje ? vehiculoSeleccionadoGlobal.vehiculo.kilometraje.toLocaleString() + ' km' : 'N/A' }}
Combustible: {{ vehiculoSeleccionadoGlobal.vehiculo?.tipoCombustible || vehiculoSeleccionadoGlobal.vehiculo?.tipo_combustible || 'N/A' }}
VTV / RTO: {{ vehiculoSeleccionadoGlobal.vehiculo.fecha_vtv.slice(0, 10) }} No registrada
Patente: {{ vehiculoSeleccionadoGlobal.vehiculo?.patente }} (no editable)
Orden ID: {{ orden.id }} - Fecha Ingreso: {{ orden.fechaEntrada }}
Estado: {{ orden.estado }}
Obs: {{ tarea.comentario }}
No hay historial de mantenimiento registrado para este vehículo.
{{ al.tipo_servicio_nombre }}
📅 {{ al.fecha_proxima.slice(0, 10) }} 🔢 {{ al.km_proximo.toLocaleString('es-AR') }} km · {{ al.notas }}
| ID | Cód. Parte | Nombre | Marca | Categoría | Ubic. | Stock | Mín. | P.Compra | P.Venta | Proveedor | Acciones |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ item.id }} | {{ item.numero_parte || '—' }} | {{ item.nombre }} | {{ item.marca_repuesto || '—' }} | {{ item.categoria }} — | {{ item.ubicacion_deposito || '—' }} | {{ item.stock }} ↓ {{ item.unidad_medida || 'un.' }} | {{ item.stock_minimo || 0 }} | $ {{ item.precio_compra ? Number(item.precio_compra).toFixed(2) : '—' }} | {{ item.precio_venta ? '$ ' + Number(item.precio_venta).toFixed(2) : '—' }} | {{ item.proveedor_nombre || item.proveedor_id || '—' }} |
No hay productos en el inventario. Agregue el primero o importe desde Excel.
No hay productos que coincidan con los filtros.
Columnas: ID_Producto (opcional),
Nombre,
Categoria,
Stock,
StockMinimo,
PrecioCompra,
PrecioVenta,
NumeroParte,
MarcaRepuesto,
UnidadMedida,
UbicacionDeposito,
Compatibilidad,
ProveedorID.
{{ inventarioAlertas.length }} producto(s) con stock igual o por debajo del mínimo configurado.
costo × (1+gan%) × (1+IVA%)
{{ inventarioMovimientoItemNombre }}
Stock actual: {{ inventarioMovimientoItemStock }}
Stock actual: {{ inventarioMovimientoItemStock }} → nuevo valor: {{ movimientoForm.cantidad || '?' }}
{{ inventarioHistorialItemNombre }}
| Fecha | Tipo | Cant. | Ant. | Post. | Motivo | OT |
|---|---|---|---|---|---|---|
| {{ mov.fecha ? mov.fecha.slice(0,16).replace('T',' ') : '—' }} | {{ mov.tipo }} | {{ mov.tipo === 'salida' ? '-' : (mov.tipo === 'ajuste' ? '→' : '+') }}{{ mov.cantidad }} | {{ mov.stock_anterior }} | {{ mov.stock_posterior }} | {{ mov.motivo || '—' }} | {{ mov.orden_trabajo_id || '—' }} |
{{ alertasMantenimientoCounts.vencidas }}
Vencidas
{{ alertasMantenimientoCounts.esta_semana }}
Esta semana
{{ alertasMantenimientoCounts.este_mes }}
Este mes
| Vehículo | Servicio | Fecha | |
|---|---|---|---|
| {{ al.vehiculo_patente }} | {{ al.tipo_servicio_nombre }} | {{ al.fecha_proxima ? al.fecha_proxima.slice(0, 10) : '—' }} ⚠ |
Actualizado: {{ formatDateTime(dashboardReportes.generatedAt) }}
Órdenes Mes
{{ dashboardReportes.kpis.ordenesMesActual }}
vs mes anterior: {{ formatVariacion(dashboardReportes.kpis.variacionMensualPct) }}
Completadas Mes
{{ dashboardReportes.kpis.completadasMesActual }}
Cumplimiento: {{ dashboardReportes.kpis.tasaCumplimientoMesPct.toFixed(2) }}%
Mat. Mes ($)
${{ Number(dashboardReportes.kpis.costoMaterialesMesActual).toLocaleString('es-AR', {minimumFractionDigits:0, maximumFractionDigits:0}) }}
Costo materiales en OTs completadas
Servicios Prog. Mes
{{ dashboardReportes.kpis.serviciosProgramadosMesActual }}
Agenda del mes en curso
Órdenes Año
{{ dashboardReportes.kpis.ordenesAnioActual }}
vs año anterior: {{ formatVariacion(dashboardReportes.kpis.variacionAnualPct) }}
Completadas Año
{{ dashboardReportes.kpis.completadasAnioActual }}
Completadas + entregadas
Mat. Año ($)
${{ Number(dashboardReportes.kpis.costoMaterialesAnioActual).toLocaleString('es-AR', {minimumFractionDigits:0, maximumFractionDigits:0}) }}
Costo materiales en el año
Alertas de Tendencia
{{ alerta.titulo }}
{{ alerta.descripcion }}
Top Técnicos (Mes)
Sin registros este mes.
#{{ idx + 1 }} {{ t.tecnico_nombre }}
Completadas: {{ t.ordenes_completadas }} | Prom. cierre: {{ t.promedio_dias_cierre || 0 }} d
Gráfico de Tareas Más Realizadas (Mes actual)
Lógica: OT + tipo de trabajo + categoría + tarea específica.
Top {{ dashboardReportes.tareasMasRealizadasMes.length }}
Sin resultados para los filtros seleccionados en el mes actual.
Mejor mes (ingresadas)
{{ dashboardResumenMensual.mejorMes.periodo }}: {{ dashboardResumenMensual.mejorMes.ordenes_ingresadas }}
Sin datos
Mes más bajo (ingresadas)
{{ dashboardResumenMensual.peorMes.periodo }}: {{ dashboardResumenMensual.peorMes.ordenes_ingresadas }}
Sin datos
Cumplimiento promedio
{{ dashboardResumenMensual.promedioCumplimientoPct.toFixed(2) }}%
Comparativo mensual (ingresadas, completadas, programadas)
Comparativo anual por barras
| Año | Ingresadas | Completadas | Programadas | Var. Ingresadas |
|---|---|---|---|---|
| {{ y.anio }} | {{ y.ordenes_ingresadas }} | {{ y.ordenes_completadas }} | {{ y.servicios_programados }} | {{ formatVariacion(y.variacion_ingresadas_pct) }} |
Distribución de Estados (Mes actual)
Sin datos
Distribución de Estados (Año actual)
Sin datos
Top Técnicos (Año)
Sin registros este año.
#{{ idx + 1 }} {{ t.tecnico_nombre }}
Completadas: {{ t.ordenes_completadas }} | Prom. cierre: {{ t.promedio_dias_cierre || 0 }} d
| Fecha | OT | Acción | Técnico | Usuario | Rol |
|---|---|---|---|---|---|
| {{ formatDateTime(evento.fecha_evento) }} | {{ evento.orden_id }} | {{ evento.accion }} | {{ evento.tecnico_id || 'N/A' }} | {{ evento.username || 'N/A' }} | {{ evento.rol || 'N/A' }} |
No hay eventos para los filtros seleccionados.
Total registros: {{ auditoriaTotal }}
Días cerrados
{{ cajaCierres.length }}
Total Ingresos
{{ formatCurrency(cajaCierres.reduce((s, c) => s + parseFloat(c.total_ingresos || 0), 0)) }}
Total Egresos
{{ formatCurrency(cajaCierres.reduce((s, c) => s + parseFloat(c.total_egresos || 0), 0)) }}
Resultado Neto
{{ formatCurrency(cajaCierres.reduce((s, c) => s + parseFloat(c.total_ingresos||0) - parseFloat(c.total_egresos||0), 0)) }}
| Fecha | Apertura | Ingresos | Egresos | Saldo Cierre | Acciones |
|---|---|---|---|---|---|
| {{ c.fecha ? c.fecha.split('-').reverse().join('/') : '' }} | {{ formatCurrency(c.saldo_apertura) }} | {{ formatCurrency(c.total_ingresos) }} | {{ formatCurrency(c.total_egresos) }} | {{ formatCurrency(c.saldo_cierre) }} |
|
Margen neto = cobrado − materiales − mano de obra
OTs cobradas
{{ rentabilidadData.resumen.ots_cobradas }}
Sin cobrar
{{ rentabilidadData.resumen.ots_sin_cobrar }}
Total cobrado
{{ formatCurrency(rentabilidadData.resumen.total_cobrado) }}
Costo materiales
{{ formatCurrency(rentabilidadData.resumen.total_costo_materiales) }}
Mano de obra
{{ formatCurrency(rentabilidadData.resumen.total_costo_mano_obra) }}
Margen neto
{{ formatCurrency(rentabilidadData.resumen.margen_neto) }}
% Margen
{{ rentabilidadData.resumen.margen_pct }}%
Por técnico
| Técnico | OTs | Cobrado | Materiales | Margen neto | % |
|---|---|---|---|---|---|
| {{ t.tecnico_nombre }} | {{ t.ots_cobradas }} | {{ formatCurrency(t.total_cobrado) }} | {{ formatCurrency(t.total_costo_materiales) }} | {{ formatCurrency(t.margen_neto) }} | {{ t.margen_pct }}% |
Detalle por OT
| OT | Cliente | Cobrado $ | Margen neto | % |
|---|---|---|---|---|
| {{ ot.id }} | {{ ot.cliente_nombre || '—' }} | {{ formatCurrency(ot.monto_cobrado) }} | {{ formatCurrency(ot.margen_neto) }} | {{ ot.margen_pct }}% |
No hay OTs cobradas para el período seleccionado.
| Username | Rol | Módulos Usuario | Empleado Asociado | Estado | Acciones |
|---|---|---|---|---|---|
| {{ user.username }} | {{ user.role }} | {{ user.modulos.length }} módulos Por rol (sin override) | {{ getEmpleadoNombre(user.empleado_id) }} | {{ user.is_active ? 'Activo' : 'Inactivo' }} |
No se encontraron usuarios con los criterios de búsqueda.
Si no seleccionas módulos, el usuario hereda permisos por su rol.
Define qué módulos puede acceder cada rol. Los cambios aplican a todos los usuarios que usen ese rol sin asignación individual.
El nombre se normalizará a minúsculas sin espacios. Los roles del sistema (admin, tecnico, recepcionista) no pueden duplicarse.
El rol admin siempre tiene acceso total independientemente de esta configuración.
{{ (permisosEditando[roleInfo.name] || []).length }} de {{ permisosData.modulos.length }} módulos activos
⚠ Vencimientos próximos (próximos 7 días)
Saldo General
{{ formatCurrency(cajaBalance.saldo_general) }}
Ingresos del mes
{{ formatCurrency(cajaBalance.ingresos_mes) }}
Egresos del mes
{{ formatCurrency(cajaBalance.egresos_mes) }}
Ingresos hoy
{{ formatCurrency(cajaBalance.ingresos_hoy) }}
OTs a cobrar
{{ cajaBalance.ots_pendientes_cobro || 0 }}
| Fecha | Tipo | Categoría | Descripción | Medio pago | Monto | Acciones |
|---|---|---|---|---|---|---|
| No hay movimientos para el período seleccionado. | ||||||
| {{ mov.fecha }} | {{ mov.tipo }} | {{ mov.categoria }} | {{ mov.descripcion || '—' }} | {{ mov.medio_pago }} | {{ mov.tipo === 'ingreso' ? '+' : '-' }}{{ formatCurrency(mov.monto) }} | |
Servicios y gastos recurrentes del taller con recordatorio de vencimiento mensual.
{{ g.nombre }}
{{ g.categoria }} · Vence el día {{ g.dia_vencimiento }} de cada mes · {{ formatCurrency(g.monto_estimado) }}
Órdenes de trabajo completadas o entregadas que aún no tienen cobro registrado.
✓
¡Todas las OTs están cobradas!
| OT | Cliente | Vehículo | Estado | Completado | Mat. usados | Acción |
|---|---|---|---|---|---|---|
| {{ ot.id }} | {{ ot.cliente_nombre }} | {{ ot.vehiculo_patente }} {{ ot.vehiculo_marca }} {{ ot.vehiculo_modelo }} | {{ ot.estado }} | {{ ot.fecha_completado || '—' }} | {{ formatCurrency(ot.costo_materiales) }} |
El cierre diario congela los movimientos del día y calcula el saldo final.
Este día ya tiene cierre registrado
ID #{{ cajaCierrePreview.cierre_existente }} — podés ver el detalle en el historial abajo.
Saldo Apertura
{{ formatCurrency(cajaCierrePreview.saldo_apertura) }}
Ingresos del día
{{ formatCurrency(cajaCierrePreview.total_ingresos) }}
Egresos del día
{{ formatCurrency(cajaCierrePreview.total_egresos) }}
Saldo Cierre
{{ formatCurrency(cajaCierrePreview.saldo_cierre) }}
No hay movimientos registrados para este día.
| Fecha | Apertura | Ingresos | Egresos | Cierre | Mov. | Acciones |
|---|---|---|---|---|---|---|
| {{ c.fecha ? c.fecha.split('-').reverse().join('/') : '' }} | {{ formatCurrency(c.saldo_apertura) }} | {{ formatCurrency(c.total_ingresos) }} | {{ formatCurrency(c.total_egresos) }} | {{ formatCurrency(c.saldo_cierre) }} | {{ c.cantidad_movimientos }} |
|
Se registrará el cierre del {{ cajaCierrePreview.fecha ? cajaCierrePreview.fecha.split('-').reverse().join('/') : '' }}. Esta acción es definitiva.
Ingresos
{{ formatCurrency(cajaCierrePreview.total_ingresos) }}
Egresos
{{ formatCurrency(cajaCierrePreview.total_egresos) }}
Movimientos
{{ cajaCierrePreview.cantidad_movimientos }}
Saldo Final
{{ formatCurrency(cajaCierrePreview.saldo_cierre) }}
{{ cajaCobrarOT.otLabel }}
{{ cajaPagarGasto.nombre }}
Apertura
{{ formatCurrency(cajaCierreDetalle.saldo_apertura) }}
Ingresos
{{ formatCurrency(cajaCierreDetalle.total_ingresos) }}
Egresos
{{ formatCurrency(cajaCierreDetalle.total_egresos) }}
Cierre
{{ formatCurrency(cajaCierreDetalle.saldo_cierre) }}
| Hora | Tipo | Categoría | Descripción | Monto | Medio |
|---|---|---|---|---|---|
| {{ m.hora }} | {{ m.tipo }} | {{ m.categoria }} | {{ m.descripcion || '—' }} | {{ formatCurrency(m.monto) }} | {{ m.medio_pago || 'efectivo' }} |
Notas: {{ cajaCierreDetalle.notas }}
Registrado por {{ cajaCierreDetalle.username || 'N/A' }} el {{ cajaCierreDetalle.created_at }}
El acceso al sistema está temporalmente suspendido. Contactá al administrador para regularizar la situación.
Renovar suscripciónLa suscripción venció. Quedan {{ suscripcionStatus.graceRemaining }} día(s) de gracia antes del bloqueo.
La suscripción vence en {{ suscripcionStatus.days }} día(s).
Contactá al administrador para renovarla.
{{ emailModalLabel }}