Modo Super Administrador · Solo personal autorizado

{{ viewTitle }}

← Volver a la app
OpenPay: {{ opBanner.text }} merchant {{ openpayStatus.merchantId }}
Cargando indicadores…

Planes y precios

Cargando planes…
No hay planes registrados.
{{ p.planName }} {{ p.active ? 'Activo' : 'Archivado' }}
Cotización
Propiedades {{ planRangeLabel(p) }}
Miembros {{ p.maxMembers == null ? 'Ilimitados' : p.maxMembers }}
{{ p.priceType === 'PER_UNIT' ? 'Anual / propiedad' : 'Precio anual' }} ${{ fmtMoney(planAnnualPrice(p)) }}/mes
Cuota base anual ${{ fmtMoney(planAnnualCuotaBase(p)) }}/mes
  • {{ f }}
Nuevo plan

Complementos

{{ a.name }}INACTIVO
{{ a.description }}
Se cobra a los planes que NO lo incluyen
{{ priceCcy }}/mes
Mensual {{ priceCcy }}
Anual {{ priceCcy }}/mes
Sin complementos en el catálogo.
OpenPay: {{ opBanner.text }} merchant {{ openpayStatus.merchantId }}
{{ filteredClients.length }} cliente{{ filteredClients.length === 1 ? '' : 's' }}
{{ selectedIds.size }} seleccionado{{ selectedIds.size === 1 ? '' : 's' }}
Cargando clientes…
{{ clients.length ? 'Sin resultados para los filtros aplicados.' : 'No hay clientes registrados.' }}

Correo SMTP

Los cambios aplican al reiniciar el contenedor Docker. El servicio de correo no recarga la configuración en caliente.
Cargando configuración…
Los valores se almacenan en la tabla parameter bajo las claves MAIL_SMTP_SERVER, MAIL_SMTP_PORT, MAIL_USER, MAIL_PASSWORD, MAIL_DISPLAY_NAME.

Proveedores populares

{{ prov.name }}
{{ prov.host }} · {{ prov.port }}
Configuración avanzada de correo remitentes · rebotes

Destinatarios de notificaciones

Estos correos reciben las notificaciones de la plataforma: cancelaciones de servicio, registro de planes y eventos operativos de IDARI. Los SUPER_ADMIN activos siempre reciben estas notificaciones; esta lista agrega destinatarios extra.
Cargando…
Sin destinatarios adicionales — solo los SUPER_ADMIN reciben notificaciones.
{{ email }}

Respuesta y rebotes

Las respuestas de los clientes a los correos llegarán aquí.
Los correos no entregados (hard bounce) se reportan a esta dirección.

INPC / Incrementos de renta

El INPC se baja automáticamente de la fuente pública cuando el motor lo necesita. Aquí puedes consultarlo o capturarlo manualmente si la fuente aún no lo publica. El aumento de rentas corre el día 11 de cada mes (o manualmente con el botón de arriba).
Omitidos/con error — corrida del {{ fmtDateTime(incLastSweepAt) }}:
Contrato {{ d.contractId ?? '—' }} — {{ d.reason }}
{{ d.companyName || 'Arrendatario n/d' }} · {{ d.realEstateName || 'Inmueble n/d' }} · {{ d.accountEmail || 'Cuenta n/d' }}
{{ inpcMsg }}
Datos en caché
Sin datos en caché
Mes Año INPC
{{ row.month }} {{ row.year }}

Parametros

Incrementos en contratos
Usa este botón cuando el INEGI publique el dato de inflación después del día 11 y el aumento no se haya aplicado en automático. El sistema tomará el INPC más reciente y aplicará los incrementos pendientes a todos los contratos que les corresponda ese mes.
Omitidos/con error — corrida del {{ fmtDateTime(incLastSweepAt) }}:
Contrato {{ d.contractId ?? '—' }} — {{ d.reason }}
{{ d.companyName || 'Arrendatario n/d' }} · {{ d.realEstateName || 'Inmueble n/d' }} · {{ d.accountEmail || 'Cuenta n/d' }}
Avisos de vencimiento de contratos
{{ expiryStatus.enabled ? 'Automático: ACTIVO' : 'Automático: apagado' }} · ventana {{ expiryStatus.noticeDays }} días
En automático, el sistema avisa por correo (al administrador, al inmueble y a los miembros con acceso) cuando un contrato está dentro de la ventana de vencimiento — tres meses antes de su terminación. Cada contrato se avisa una sola vez. Usa este botón para correr la revisión a mano y verificar a quién le llegaría el aviso.
Salud de datos — Plazas sin propietario
Detecta y corrige plazas (inmuebles) cuyo propietario en la BD no corresponde a un usuario ADMIN activo. Esto hace que las propiedades de esa plaza sean invisibles al administrador. Reparar automáticamente corrige los casos donde el propietario registrado es un Miembro (lo reasigna a su Admin) o no existe en la tabla de usuarios (lo deriva del único contrato activo del inmueble).
Sin plazas huérfanas detectadas.
PlazaIDuserId actualProblema Correo usuariouserId sugeridoCorreo sugerido PropsContratos
{{ o.realEstateName }} {{ o.realEstateId }} {{ o.currentUserId }} Usuario no existe Usuario eliminado Es Miembro (no Admin) {{ o.ownerEmail || '—' }} {{ o.suggestedUserId }}Sin sugerencia {{ o.suggestedUserEmail || '—' }} {{ o.propertyCount }} {{ o.contractCount }}
Reparación completada: {{ orphanRepairResult.fixed }} plaza(s) corregida(s).
Diagnóstico de ownership de plazas
Muestra qué plazas tienen problemas de ownership (usuario eliminado, MEMBER, etc.), qué contratos están desincronizados, y qué plazas están correctamente asignadas al admin del correo indicado. Filtra por correo para revisar una cuenta específica.
Plazas asignadas correctamente{{ diagEmail ? ' a ' + diagEmail : '' }} ({{ diagResult.adminEstates.length }})
Sin plazas asignadas a ese correo.
PlazaAdminPropiedadesContratos
{{ r.realEstateName }} {{ r.ownerEmail }} {{ r.propertyCount }} {{ r.contractCount }}
Plazas con ownership roto ({{ diagResult.brokenEstates.length }})
Ninguna plaza con problemas.
PlazauserId actualProblemaAdmin probable
{{ r.realEstateName }} {{ r.currentUserEmail || r.currentUserId }} ({{ r.currentUserType || '—' }}) {{ r.problem }} {{ r.likelyAdminEmail || (r.likelyAdminId ? '#' + r.likelyAdminId : 'desconocido') }}
Contratos con ownership roto ({{ diagResult.brokenContracts.length }})
Ningún contrato con problemas.
PlazaContrato #userId contratouserId plazaProblema
{{ r.realEstateName || '(sin plaza)' }} {{ r.contractId }} {{ r.contractUserEmail || r.contractUserId }} {{ r.estateUserEmail || r.estateUserId || '—' }} {{ r.problem }}
Propiedades ocultas en contratos activos ({{ diagResult.hiddenContractProperties.length }})
Propiedades que aparecen en contratos activos pero son invisibles en el grid de Inmuebles. Causas: soft-deleted mientras estaban rentadas (SOFT_DELETED_IN_CONTRACT), realEstateId apuntando a la plaza equivocada (REALESTATE_MISMATCH) o disponibilidad incorrecta (DISPO_NOT_RENTED). La migración 1781379800000 y el endpoint de reparación corrigen esto automáticamente.
Ninguna propiedad oculta detectada.
PropiedadPlaza del contratoPlaza de la propiedadArrendatarioAdminProblema
{{ r.propertyName }} #{{ r.propertyNumber }} · {{ r.floor }} {{ r.contractEstate || '—' }} {{ r.propertyInEstate || '(sin plaza)' }} {{ r.companyName || '—' }} {{ r.adminEmail }} {{ r.problem }}

Facturación global

Datos fiscales de IDARI como emisor de las facturas que se cobran a los clientes por su suscripción (distinto del ContPaq de cada cliente, que sirve para que ellos facturen a sus inquilinos). El timbrado real (CFDI con XML/PDF) se habilita al conectar el PAC de la plataforma; por ahora solo se captura el emisor.
Datos del emisor
Parámetros SAT del CFDI
G03 = Gastos en general
81112501 = Licencias de software
04 = Tarjeta de crédito
PUE = Pago en una exhibición
Completa RFC, razón social, régimen y CP. Emisor completo · falta conectar el PAC para timbrar.
Pendiente (PAC): subir los certificados CSD/FIEL de la plataforma y las credenciales del PAC para emitir el CFDI real. Hasta entonces, cada cobro genera un comprobante de pago (no fiscal).
Volver al panel

Correo de acceso

Es el correo con el que inicias sesión como superadministrador. Al cambiarlo, deberás usar el nuevo correo la próxima vez que entres.

Cambio de contraseña

Las contraseñas no coinciden

Autenticación de dos factores (2FA)

Verificando estado del 2FA…

Resetear 2FA de un usuario

Si un usuario perdió el acceso a su segundo factor (cambió de teléfono, borró la app o ya no recibe el correo) y quedó bloqueado, apaga su 2FA aquí. Verifica su identidad por otro medio antes de hacerlo. La próxima vez entrará solo con su contraseña y podrá volver a activarlo.

Llaves de OpenPay (pagos)

Controlan los cobros con tarjeta. La llave privada se guarda cifrada y nunca se muestra completa. Modo producción = dinero real. Aplica al instante (sin reinicio).
Cargando configuración de OpenPay…
{{ t.msg }}