CONTRIBIA
{{ totales.conteo.DIFERENCIA }}
{{ userInitial }}

Panel

{{ totales.conteo.CUADRADO || 0 }}
NC Cuadradas
{{ totales.conteo.DIFERENCIA || 0 }}
Con diferencia
{{ totales.conteo.SOLO_EN_BANCO || 0 }}
Solo en banco
{{ totales.conteo.SOLO_EN_DATABALANCE || 0 }}
Solo en databalance
{{ (stats && stats.databalance_total ? stats.databalance_total.n : 0) }}
Total transacciones
Pendientes de emisión de NC (databalance)
EstadoFilasSuma
{{ p.estado }}{{ p.n }}{{ fmt(p.suma) }}
No hay filas pendientes.

Importar archivos

Data Balance (contabilidad)

Filtro por adquirente {{ adquirente }}. Duplicados por TDTLF + FECHA_TRX se detectan automáticamente. Si una fila reimportada trae "Conciliado" y NC, se actualiza en vez de ignorarse.

Import #{{ lastDb.import_id }} — Leídas: {{ lastDb.total_leido }} · Nuevas: {{ lastDb.insertadas }} · Actualizadas (NC emitida): {{ lastDb.actualizadas || 0 }} · Duplicadas: {{ lastDb.duplicadas }}
Rango: {{ lastDb.fecha_desde }} → {{ lastDb.fecha_hasta }}
Extracto DINERS CLUB

Solo filas NC Pago Establecimientos. Deduplicación por fecha+NC+monto.

Import #{{ lastBk.import_id }} — Leídas: {{ lastBk.total_leido }} · NCs: {{ lastBk.ncs_encontradas }} · Nuevas: {{ lastBk.insertadas }} · Duplicadas: {{ lastBk.duplicadas }}
{{ uploadError }}

Conciliación

NC Estado Σ Databalance Monto banco Δ Filas DB Fecha pago Fecha banco
{{ it.nc }} ↔ {{ it.n_movs_banco }}{{ it.n_excluidos ? ' ('+it.n_excluidos+' excl.)' : '' }} {{ it.estado }} {{ fmt(it.suma_databalance) }} {{ fmt(it.monto_banco) }} {{ fmt(it.delta) }} {{ it.n_filas_db }} {{ it.fecha_pago_min || '—' }} {{ it.fecha_banco_min || '—' }}
Sin resultados. Ajusta filtros o importa los Excel.
Mostrando {{ (fConc.pagina-1)*fConc.perPage + 1 }}–{{ Math.min(fConc.pagina*fConc.perPage, filteredItems.length) }} de {{ filteredItems.length }}
{{ fConc.pagina }} / {{ totalPages }}

Reporte para el cliente

Incluir en el reporte:
{{ repData.meta.total_transacciones }}
Transacciones
{{ repData.meta.total_acreditadas }}
✓ Acreditadas · {{ fmt(repData.meta.suma_acreditadas) }}
{{ repData.meta.total_pendientes_nc }}
⏳ Pendientes NC · {{ fmt(repData.meta.suma_pendientes_nc) }}
{{ repData.meta.total_con_diferencia }}
⚠ Con diferencia · {{ fmt(repData.meta.suma_con_diferencia) }}
{{ repData.meta.total_no_acreditadas }}
✗ No acreditadas · {{ fmt(repData.meta.suma_no_acreditadas) }}
Acreditadas ({{ repData.acreditadas.length }})
Fecha trxTDTLFTarjetaAutoriz.ValorNCFecha banco
{{ (r.fecha_trx||'').substring(0,10) }}{{ r.tdtlf }}{{ r.tipo_tarjeta }}{{ r.autorizacion }} {{ fmt(r.valor_pagado) }}{{ r.documento_pago_nc }}{{ r.fecha_banco }}
Pendientes de NC ({{ repData.pendientes_nc.length }}) — aún no emiten NC, esperar al adquirente
Fecha trxTDTLFTarjetaAutoriz.ValorEstado databalance
{{ (r.fecha_trx||'').substring(0,10) }}{{ r.tdtlf }}{{ r.tipo_tarjeta }}{{ r.autorizacion }} {{ fmt(r.valor_pagado) }} {{ r.estado_databalance }}
Con diferencia ({{ repData.con_diferencia.length }}) — el banco depositó, pero el monto no coincide
Fecha trxTDTLFTarjetaValorNCMotivo
{{ (r.fecha_trx||'').substring(0,10) }}{{ r.tdtlf }}{{ r.tipo_tarjeta }} {{ fmt(r.valor_pagado) }} {{ r.documento_pago_nc || '—' }} {{ r.motivo }}
No acreditadas ({{ repData.no_acreditadas.length }})
Fecha trxTDTLFTarjetaValorNCMotivo
{{ (r.fecha_trx||'').substring(0,10) }}{{ r.tdtlf }}{{ r.tipo_tarjeta }} {{ fmt(r.valor_pagado) }} {{ r.documento_pago_nc || '—' }} {{ r.motivo }}
Elige el rango y presiona Preview.

Usuarios y accesos

Solo administradores pueden gestionar usuarios.
IDNombreEmailRolEstadoÚltimo loginAcciones
{{ u.id }} {{ u.nombre }} {{ u.email }} {{ u.rol }} {{ u.activo==1 ? 'Activo' : 'Inactivo' }} {{ u.ultimo_login || 'Nunca' }}
Sin usuarios.

Auditoría del sistema

Solo administradores pueden ver la auditoría.
Fecha Usuario Acción Entidad Detalles IP
{{ ev.creado_en }}
{{ ev.user_nombre || '—' }}
{{ ev.user_email || '(sin sesión)' }}
{{ ev.accion }} {{ ev.entidad }} #{{ ev.entidad_id }}
{{ formatDetails(ev.details) }}
{{ ev.ip || '—' }}
Sin eventos que coincidan con los filtros.
Mostrando {{ (auditData.page-1)*auditData.per_page + 1 }}–{{ Math.min(auditData.page*auditData.per_page, auditData.total) }} de {{ auditData.total }} eventos
{{ auditData.page }} / {{ auditData.total_pages }}

Historial de importaciones

#TipoAdquirenteArchivoLeídasNuevasDuplicadasRangoFecha
{{ im.id }} {{ im.tipo }} {{ im.adquirente }} {{ im.nombre_archivo }} {{ im.filas_leidas }} {{ im.filas_insertadas }} {{ im.filas_duplicadas }} {{ im.fecha_desde || '—' }} → {{ im.fecha_hasta || '—' }} {{ im.creado_en }}
Sin importaciones registradas.