{{ nombreUsuarioIncidencia(m.autor_id) }} · {{ m.banco || 'Banco' }}
{{ m.mensaje }}
{{ resumenFilaIncidencia(m) }}
Un paso más: configura tu llave de acceso
Por seguridad, cada usuario debe registrar una llave de acceso (Windows Hello, huella, Face ID o tu gestor de contraseñas) antes de poder entrar. Es obligatorio.
Configura una llave para este dispositivo
Un admin te ha autorizado a añadir una llave nueva. No afecta a las que ya tienes en otros dispositivos.
Necesitas autorización de un admin
Por seguridad, no puedes añadir una llave nueva por tu cuenta. Pide a un administrador que te autorice desde Ajustes → Gestión de Usuarios (así se comprueba que eres tú de verdad, no solo alguien con tu contraseña).
Verifica tu llave de acceso
Confirma con Windows Hello, tu huella o tu gestor de contraseñas para continuar.
{{ errorGatePasskey }}
¿Un administrador te ha habilitado acceso sin llave durante 48 horas?
Tienes una autorización administrativa pendiente. Si LastPass no responde, puedes entrar temporalmente en este dispositivo.
·
Conciliación 1:1, validaciones IBAN y configuración avanzada
Mensajes pendientes
Incidencias de tus filas · {{ totalIncidenciasPendientes() }} sin gestionar
No tienes mensajes pendientes.
{{ nombreUsuarioIncidencia(m.autor_id) }} · {{ m.banco || 'Banco' }}
{{ m.mensaje }}
{{ resumenFilaIncidencia(m) }}
Cargando movimientos...
| # |
{{ tituloColumna(col) }}
|
Base Cálculo | Hon. (10%) | IVA (21%) | Ntro. Recibo |
{{ titulosEspeciales[bancoActivo].ingresoCliente }}
|
{{ titulosEspeciales[bancoActivo].beneficiarioTransf }}
|
{{ titulosEspeciales[bancoActivo].cuentaCliente }}
|
{{ titulosEspeciales[bancoActivo].conceptoRemesa }}
|
{{ titulosEspeciales[bancoActivo].fechaRemesado }}
|
Última Edición | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{{ obtenerIndiceReal(fila.id) }}
|
|
|
{{ esPrincipalOBalaguer(fila.gestion) ? formatearMoneda(calcularBase(fila)) : '—' }} | {{ esPrincipalOBalaguer(fila.gestion) ? formatearMoneda(calcularHonorarios(fila)) : '—' }} | {{ esPrincipalOBalaguer(fila.gestion) ? formatearMoneda(calcularIVA(fila)) : '—' }} |
{{ esPrincipalOBalaguer(fila.gestion) ? formatearMoneda(calcularTotalRecibo(fila)) : '—' }}
|
{{ permiteTransferencia(fila) ? formatearMoneda(calcularIngresoCliente(fila)) : '—' }}
|
{{ fila.gestion === 'BALAGUER' ? 'BAL -' : (fila.beneficiarioTransf || fila.nombre || 'Cliente') + ' -' }}
|
{{ nombreUsuarioPorId(fila.actualizadoPor) }}
{{ new Date(fila.actualizadoEn).toLocaleDateString('es-ES') }} {{ new Date(fila.actualizadoEn).toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit' }) }}
—
|
|||||
Desmarca las columnas que no te interesen. Solo afecta a tu vista — los demás usuarios siguen viéndolas, y tu elección se recuerda aunque cambies de ordenador.
Pulsa cada sección para desplegarla. Ordenadas por importancia.
El reloj habilita o revoca el acceso sin llave durante 48 horas.
| Nombre | Apellido | Rol | ||
|---|---|---|---|---|
|
{{ u.email }}
Sin llave hasta {{ formatearFinAccesoTemporal(u.acceso_temporal_hasta) }}
|
||||
|
Cargando llaves...
Este usuario no tiene ninguna llave de acceso registrada.
{{ pk.friendly_name || 'Sin nombre' }} · creada {{ (pk.created_at || '').slice(0,10) }}
|
||||
{{ invitarError }}
{{ invitarOk }}
El perfil Admin siempre tiene acceso completo: su columna sale marcada y no se puede editar. "Editar cabeceras" solo controla el renombrado de las columnas de la tabla — el resto de Ajustes (usuarios, IBANs, backup) sigue siendo exclusivo de Admin.
Ojo: crear facturas y poner "En REMESA" no van por esta tabla, sino por persona (ver más abajo), así que ahí ni siquiera el Admin entra si no está en la lista.
| Permiso | Admin | Gestor | Espectador | Contable |
|---|---|---|---|---|
| {{ p.nombre }} |
Conexión directa con el banco (PSD2, vía Enable Banking): los movimientos nuevos entran solos cada mañana, con la misma deduplicación que la importación por Excel. La autorización del banco caduca a los 90 días y hay que renovarla desde aquí. Mientras un banco esté conectado, no importes extractos Excel de ese banco — la sincronización ya los trae.
{{ feedbackBanco }}
Quién hizo cada acción sensible (remesas, pagos, conciliaciones, borrados). El registro no se puede editar ni borrar. Se muestran los 500 apuntes más recientes.
| Fecha | Usuario | Acción | Detalle | Importe |
|---|---|---|---|---|
| {{ new Date(r.creado_en).toLocaleString('es-ES') }} | {{ r.usuario_nombre || r.usuario_email || '—' }} | {{ r.accion }} · {{ r.banco }} · {{ r.cantidad }} | {{ r.detalle }} | {{ r.importe != null ? formatearMoneda(r.importe) : '' }} |
Resumen de lo que ha gestionado cada usuario en el mes elegido (remesas, pagos, conciliaciones, borrados).
{{ informeDatos.totalAcciones }} acciones registradas en {{ informeDatos.mes }}.
{{ informeDatos.error }}
Reordena las columnas (el orden afecta a los dos bancos), cambia su nombre y visibilidad de forma individual por banco. También puedes añadir columnas nuevas de texto libre aquí o con el botón (+) al final de la tabla. Las columnas personalizadas se pueden borrar con la X (los datos que ya tuvieran no se pierden, solo dejan de verse).
{{ banco }}
Debe coincidir con el titular de la cuenta en el banco (si no, Santander pide seleccionar la cuenta a mano).
Los movimientos anteriores a esta fecha no participan en la detección de conciliación 1:1 (útil al importar un histórico grande).
Cada vez que un pago de BBVA o Santander pase de "Incidencia" a cualquier otro estado, a esta persona le sale un aviso con su campanita. El aviso no desaparece hasta que ella lo marca como hecho. Solo aparece en la vista de la persona contable configurada; la vista Admin no recibe esta campana. Además, Thais recibe por separado cada pago que otra persona ponga en "Incidencia".
Descarga un backup completo (movimientos, remesas, usuarios y configuración) en un archivo JSON a tu equipo. Con el volumen actual de datos puede tardar un poco.
Restaurar un backup JSON generado con el botón anterior. Solo inserta o actualiza (upsert) por id — nunca borra nada de lo que ya existe. No restaura la configuración de Ajustes.
Importar un extracto Excel de un banco (el mismo que descargas de la banca online). Normalmente no hará falta: los movimientos entran solos con la sincronización bancaria.
Volcado histórico de otra empresa/sistema (hojas "BBVA" y "SANTANDER" en el mismo archivo Excel). Uso puntual.
| Cliente Beneficiario | Concepto Completo Enviado | Cuenta IBAN Destino | Transferido (Neto) |
|---|---|---|---|
| {{ item.beneficiarioTransf || item.nombre || 'General' }} | {{ item.conceptoFinal }} | {{ item.cuentaCliente || '—' }} | {{ formatearMoneda(item.ingresoCliente) }} |
Las filas nuevas ya se han importado — no hay nada que esperar. Estas otras coinciden con movimientos que ya constan en la tabla: debajo de cada una tienes lo que ya hay guardado, para comparar. Marca solo las que en realidad NO estén y confírmalas para importarlas igualmente.
{{ g.banco }} — ✅ {{ g.resultadoNuevas ? g.resultadoNuevas.n : 0 }} nuevas YA importadas · {{ g.filasOmitidas.length }} coinciden con algo ya guardado
| Importar igualmente | Fecha | Concepto | Beneficiario | Observaciones | Importe |
|---|---|---|---|---|---|
| {{ f.fecha }} | {{ f.concepto }} | {{ f.beneficiario }} | {{ f.observaciones }} | {{ formatearMoneda(f.importe) }} | |
| Ya en la tabla: {{ f.existente.estado || 'sin estado' }} · gestión: {{ f.existente.gestion || '—' }} · nombre: {{ f.existente.nombre }} · notas: «{{ f.existente.calculos }}» · última edición: {{ new Date(f.existente.actualizadoEn).toLocaleString('es-ES') }} por {{ nombreMostrado(usuariosPorId[f.existente.actualizadoPor]) }} | |||||
Vista de consulta: puedes comprobar la factura, el cliente y el expediente asociados a este pago TPV. No se modificará ningún dato.
Buscando otras facturas de este cliente...
Facturar nuestro recibo (honorarios de este ingreso)
Facturar al cliente lo que falta
Crear la factura de este ingreso
Base
{{ formatearMoneda(baseNuevaFactura) }}
IVA (21%)
{{ formatearMoneda(ivaNuevaFactura) }}
Total
{{ formatearMoneda(totalNuevaFactura) }}
Es la columna Nuestro recibo (honorarios 10% + IVA) del ingreso de {{ formatearMoneda(filaFacturaMonday && filaFacturaMonday.importe) }}.
El movimiento no se toca: mantiene su estado, su gestión y sus datos de remesa, para que al cliente se le siga transfiriendo su parte.
El juzgado ingresó {{ formatearMoneda(filaFacturaMonday && filaFacturaMonday.importe) }} y nuestro recibo es de {{ formatearMoneda(filaFacturaMonday ? calcularTotalRecibo(filaFacturaMonday) : 0) }}: faltan {{ formatearMoneda(totalNuevaFactura) }}, que nos los debe el cliente.
La factura se crea y se deja en PROFORMA, sin cobrar: es la que hay que mandarle al cliente. El movimiento tampoco se toca.
El total es el ingreso del banco, con el IVA dentro: así la factura cuadra al céntimo al darla por cobrada.
Comprobando facturas anteriores de este cliente…
{{ errorRevisionFacturasRecibo }}
Ya existe una factura cobrada con el mismo importe
Este cliente debe otras facturas de honorarios
⛔ {{ errorFacturaMonday }}
Este cliente tiene más facturas sin cobrar. ¿Quieres marcar alguna más?
Factura elegida
Otras pendientes de este cliente
Remesa TPV exacta · {{ remesaTPVFactura.cantidad }} {{ remesaTPVFactura.cantidad === 1 ? 'pago' : 'pagos' }} · {{ formatearMoneda(remesaTPVFactura.totalBanco) }}
Pagos realizados el {{ formatearFechaCorta(remesaTPVFactura.fechaPago) }}. Debajo aparecen todos los clientes, expedientes y facturas incluidos.
Total cobrado: {{ formatearMoneda(remesaTPVFactura.totalPagos) }} · comisión TPV: {{ formatearMoneda(remesaTPVFactura.comision) }} · ingreso neto: {{ formatearMoneda(remesaTPVFactura.totalBanco) }}
Remesa TPV para revisar
El importe del banco ({{ formatearMoneda(remesaTPVFactura.totalBanco) }}) no coincide exactamente con un lote diario de FRIDAY. No se han atribuido pagos para evitar relacionarla con clientes equivocados.
¿La factura no está hecha?
{{ c.name }} TPV exacto Pago de esta remesa ⭐ Recomendada coincide
YA COBRADA (cuota) — {{ c.cobradaPorEnlace ? 'la pagó el cliente por el enlace' : 'consta cobrada en el CRM' }}{{ c.pagadoEn ? ' el ' + formatearFechaCorta(c.pagadoEn) : '' }}
SENTENCIA — revisa esta factura antes de darla por cobrada
{{ c.cliente || '—' }} · {{ c.estado }} · Factura: {{ c.fecha || '—' }} · Exp: {{ c.expediente }}
Pedido FRIDAY: {{ c.pedidoTPV }} · identificación directa, no por similitud
Pedido FRIDAY: {{ c.pedidoTPV }} · {{ c.metodoTPV || 'TPV' }} · {{ formatearMoneda(c.importePagoTPV) }}
Cuota del plan {{ c.planNumero }} de {{ formatearMoneda(c.planTotal) }} — al marcarla solo se cobra esta cuota, no el plan entero
{{ c.concepto }} → {{ gestionDesdeConceptoFactura(c.concepto) }}
Etiquetas: {{ c.etiquetas.join(', ') }}
Antes de marcar la factura como cobrada
¿Quién ha pagado estas costas?
{{ f.name || 'Factura' }} · Exp. {{ f.expediente }}
La elección aparecerá en la columna Origen Costas del movimiento.
A {{ modalFiscal.cliente || 'este cliente' }} le falta {{ modalFiscal.faltan.join(' y ') }} en el CRM. Sin eso la factura no se puede emitir.
Hay {{ modalFiscal.otros }} cliente(s) más en esta operación a los que también les faltan datos: se irán pidiendo uno a uno.
{{ modalFiscal.error }}
Se guarda en la ficha del cliente del CRM, así que queda bien para las próximas facturas.
Los que han entrado o salido de Incidencia y aquellos a los que han cambiado la gestión. Se quedan aquí hasta que los marques como gestionados — no desaparecen solos.
No hay ningún aviso pendiente.
{{ a.banco }} {{ esAvisoDeGestion(a) ? 'GESTIÓN' : 'INCIDENCIA' }} {{ infoClienteDelAviso(a) || '(sin info cliente)' }}
{{ a.fecha_mov || 'sin fecha' }} · {{ formatearMoneda(a.importe) }} · {{ a.estado_anterior }} → {{ a.estado_nuevo }}
{{ new Date(a.creado_en).toLocaleString('es-ES') }} · lo cambió {{ nombreMostrado(usuariosPorId[a.creado_por]) }}
{{ textoParaOficina(oficinaSugerida.fila) }}
Este cliente está en las DOS oficinas
En el CRM aparece con ese nombre tanto en Balaguer como en Lleida. Elige tú cuál corresponde a este movimiento.
No se ha encontrado a este cliente en el CRM
Se ha buscado por: {{ (oficinaSugerida.palabrasUsadas || []).join(', ') || '—' }}. Si el nombre está escrito de otra forma en el CRM, no lo encontrará: asígnalo a mano.
Coincidencia no del todo segura
Se ha buscado por: {{ (oficinaSugerida.palabrasUsadas || []).join(', ') }}. Confirma si es correcto.
En Balaguer ({{ oficinaSugerida.candidatos.balaguer.length }}):
y {{ oficinaSugerida.candidatos.balaguer.length - 8 }} más…
En Lleida ({{ oficinaSugerida.candidatos.lleida.length }}):
y {{ oficinaSugerida.candidatos.lleida.length - 8 }} más…
{{ bancoActivo }} · {{ incidenciaFilaActiva.fecha || 'Sin fecha' }} · {{ incidenciaFilaActiva.concepto || 'Sin concepto' }}
{{ nombreUsuarioIncidencia(m.autor_id) }} · {{ new Date(m.creado_en).toLocaleString('es-ES') }}
{{ m.mensaje }}
{{ perfil?.email }}
{{ e.emoji }} {{ e.nombre }}
{{ cat.cat }}
Sin resultados
Arrastra aquí el PDF de mandamientos de la semana
Cada página, un mandamiento. Claude extraerá nombre, DNI, importe y número.
Tu perfil es de solo lectura: no puedes subir mandamientos.
{{ progresoMandamientos }}
| Pág. | Beneficiario | NIF | Importe | Nº Expediente | Nº Orden | Juzgado | Concepto | Fecha emisión | ||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.pagina_origen }} |
| Beneficiario | Oficina | NIF | Importe | Nº Expediente | Nº Orden | Juzgado | Lote | Fecha emisión | Fecha subida a LexLedger | |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.nombre_beneficiario || '—' }} | ~? | {{ m.nif || '—' }} | {{ formatearMoneda(m.importe) }} | {{ m.num_expediente || '—' }} → Info Cliente: {{ expedienteCorto(m.num_expediente) || '—' }} (revisar) | {{ m.num_orden || '—' }} | {{ m.juzgado || '—' }} | — | {{ m.fecha_emision || '—' }} | {{ (m.creado_en || '').slice(0, 10) || '—' }} |
| Cliente → Info Cliente | Nº Expediente | Importe | Ingreso Santander (fecha · concepto) | |
|---|---|---|---|---|
| {{ p.mand.nombre_beneficiario || '—' }} exp. parcial {{ p.confianza === 'importe' ? 'solo importe' : 'manual' }} | {{ p.mand.num_expediente }} concepto: {{ p.expConcepto }} | {{ formatearMoneda(p.mand.importe) }} | {{ p.mov.fecha }} · {{ (p.mov.concepto || '').slice(0, 60) }} |
{{ conciliacionesYaGestionadas.length }} mandamiento(s) cuyo ingreso YA está gestionado
Su ingreso ya se gestionó en su día, así que no se le escribe nada ni se le cambia el estado. Darlos por cobrados solo cierra el mandamiento aquí y lo pasa al histórico, con la fecha del ingreso.
| {{ p.mand.nombre_beneficiario || '—' }} | {{ p.mand.num_expediente }} | {{ formatearMoneda(p.mand.importe) }} | {{ p.mov.fecha }} · {{ (p.mov.concepto || '').slice(0, 45) }} {{ p.mov.estado }} |
Estos mandamientos hay que decidirlos a mano — ninguno se aplica solo:
El importe coincide, pero el expediente NO. El concepto de {{ p.candidatos.length === 1 ? 'este ingreso trae otro nº de expediente' : 'estos ingresos trae otro nº de expediente' }}, así que lo más probable es que {{ p.candidatos.length === 1 ? 'sea' : 'sean' }} de otro caso y solo coincida la cantidad. Comprueba el mandamiento (abre su PDF desde la columna Lote) y decide: "No es este" lo deja pendiente de cobro y no te lo vuelve a proponer; "Usar igualmente" lo da por bueno.
| {{ cand.mov.fecha }} | {{ (cand.mov.concepto || '').slice(0, 70) }} exp. del concepto: {{ cand.expConcepto }} ≠ {{ p.mand.num_expediente }} | {{ formatearMoneda(cand.mov.importe) }} |
| Beneficiario | NIF | Importe | Nº Expediente | Nº Orden | Juzgado | Lote | Fecha cobro (Santander) | Fecha subida a LexLedger | ||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.nombre_beneficiario || '—' }} {{ m.notas }} | {{ m.nif || '—' }} | {{ formatearMoneda(m.importe) }} | {{ m.num_expediente || '—' }} | {{ m.num_orden || '—' }} | {{ m.juzgado || '—' }} | — | {{ m.fecha_cobro || '—' }} | {{ (m.creado_en || '').slice(0, 10) || '—' }} |
{{ mandamientoEditando.nombre_beneficiario || '—' }}
NIF {{ mandamientoEditando.nif || '—' }} · {{ formatearMoneda(mandamientoEditando.importe) }} · orden {{ mandamientoEditando.num_orden || '—' }}
{{ mandamientoEditando.juzgado || '—' }}
Página {{ mandamientoEditando.pagina_origen }} de "{{ mandamientoEditando.lote }}"
{{ digitosExpedienteEditado }} dígito(s){{ digitosExpedienteEditado === 16 ? ' — correcto' : ' — deberían ser 16' }}
Se escribirá en Info Cliente
{{ vistaPreviaInfoCliente || '—' }}
⛔ {{ errorCorreccion }}
Sube el cuadro de amortización para calcular la devolución y la deuda, localiza el expediente en Friday y genera la proforma del 10% más IVA.
Reconoce los dos formatos de CaixaBank y calcula las cantidades resaltadas como recuperación y deuda.
⛔ {{ errorAmortizacion }}
¿Quieres incluir este importe como intereses recuperados?
Inclúyelo si todavía no se había facturado. Si ya se facturó anteriormente, no lo incluyas.
{{ resultadoAmortizacion.metodo }}
⛔ {{ errorFacturaCalc }}
Selecciona el expediente correcto ({{ expedientesCalc.length }})
No se ha encontrado ningún expediente. Prueba con menos palabras, con los apellidos o con el número de expediente.
La cantidad ingresada y la deuda se suman. Sobre ese total se calcula el 10% de honorarios y el IVA correspondiente.
| Fecha de creación | Usuario | Cliente | Expediente | Importe de la factura | Friday | |
|---|---|---|---|---|---|---|
| {{ new Date(c.created_at).toLocaleString('es-ES', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }) }} | {{ c.creado_por_nombre || '—' }} | {{ c.nombre_cliente || '—' }} | {{ c.expediente || 'Sin expediente' }} | {{ formatearMoneda(c.total_factura) }} | Abrir — |
Total pendiente de cobro
{{ formatearMoneda(totalImpagado) }}
{{ impagos.length }} facturas sin cobrar · ⚠️ lista incompleta (tope de lectura alcanzado)
No hay coincidencia exacta. Estos son los clientes más parecidos — verifica que es la persona correcta antes de contactar.
Elige de qué factura suya sale la devolución. Se crea una rectificativa nueva en negativo por su mismo importe, ya cobrada.
La factura que pagó el cliente no se toca: se queda en positivo y cobrada. Quedan las dos, una en positivo y la nueva en negativo.
Al crearla, este movimiento pasa a Preparando Remesa con gestión Devolución, listo para devolverle el dinero.
⛔ {{ errorRectificativa }}
{{ cobroManualMandamiento.nombre_beneficiario || 'Sin nombre' }}
{{ formatearMoneda(cobroManualMandamiento.importe) }} · Exp. {{ cobroManualMandamiento.num_expediente }} · {{ cobroManualMandamiento.juzgado }}
No se vincula a ningún ingreso del banco ni se toca ninguna fila: solo cierra este mandamiento y lo pasa al histórico de cobrados.
⛔ {{ errorMandamientos }}
La factura ya queda cobrada. Si este cobro cambia el estado de la sentencia, actualízalo aquí: se guarda en friday (el CRM), en la misma sentencia que ves en su pantalla.
⚠️ {{ fichaSentencia.aviso }}
{{ feedbackSentencia }}
{{ a.detalle || a.tipo }}
{{ a.usuario || '—' }} · {{ new Date(a.created_at).toLocaleString('es-ES', { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) }}
Los avisos marcados en Monday van aparte, en "Aviso (CC cliente)": {{ fichaCobro.ccCliente || 'sin avisos' }}. Las llamadas y WhatsApp hechos desde el botón Contactar se registran aquí solos.
Se creará en 💲Facturas Lleida (grupo "No abonadas", estado Factura Proforma) con base {{ formatearMoneda(calcularBase(filaCalculadora)) }}, IVA {{ formatearMoneda(calcularIVA(filaCalculadora)) }} y total {{ formatearMoneda(calcTotalReclamar) }}.
⛔ {{ errorFacturaCalc }}
Ya está guardada correctamente en Friday.
«Enviar al cliente» abre directamente la misma Fusión de Friday, con la plantilla de la proforma y el envío por Aircall.