{{ notification.message }}
Logaritmo

VoIP Billing Solution

Logaritmo

VoIP System

{{ user.username.charAt(0).toUpperCase() }}

{{ user.username }}

{{ user.role }}

{{ currentView.replace('-', ' ') }}

Resumen Detallado por Cliente

Cliente Moneda Llamadas Minutos Min. Móvil Min. Fijo Venta Móvil Venta Fijo Total Venta Total Costo Utilidad
{{ cs.client_name }} {{ cs.currency }} {{ cs.llamadas }} {{ cs.total_minutos }}m {{ cs.minutos_movil }}m {{ cs.minutos_fijo }}m ${{ cs.venta_movil }} ${{ cs.venta_fijo }} ${{ cs.total_venta }} ${{ cs.total_costo }} ${{ cs.total_utilidad }}

Resumen Detallado por Proveedor

Proveedor Moneda Llamadas Minutos Min. Móvil Min. Fijo Venta Móvil Venta Fijo Total Venta Total Costo Utilidad
{{ ps.provider_name || 'Desconocido' }} {{ ps.currency }} {{ ps.llamadas }} {{ ps.total_minutos }}m {{ ps.minutos_movil }}m {{ ps.minutos_fijo }}m ${{ ps.venta_movil }} ${{ ps.venta_fijo }} ${{ ps.total_venta }} ${{ ps.total_costo }} ${{ ps.total_utilidad }}

Análisis de Finalización de Llamadas (Causas)

Causa (Hangup Cause) Código Cantidad de Llamadas
{{ cause.hangup_cause || 'Desconocido' }}
{{ cause.hangup_code || '--' }} {{ cause.cantidad }}

Registros Detallados (CDR)

Fecha / Hora Cliente Destino Troncal Pref. Cliente Pref. Proveedor Moneda Tipo T. Total T. Hablado Code Causa Precio Venta Costo Utilidad
{{ String(cdr.fecha).substring(0,10) }}
{{ cdr.hora }}
{{ cdr.client_name || 'Desconocido' }} {{ cdr.dialed_number }} {{ cdr.trunk_name || '--' }} {{ cdr.client_prefix || '--' }} {{ cdr.provider_prefix || '--' }} {{ cdr.currency || '--' }} {{ cdr.dest_type }} {{ cdr.total_time }}s {{ cdr.talk_time }}s {{ cdr.hangup_code }} {{ cdr.hangup_cause }} {{ fmtMoney(cdr.sale_price, cdr.currency) }} {{ fmtMoney(cdr.cost_price, cdr.currency) }} {{ fmtMoney(cdr.profit, cdr.currency) }}

Directorio de Clientes

RUT / DNI Nombre Venta Móvil Venta Fijo Moneda Estado Acciones
{{ c.rut_dni }} {{ c.name }} ${{ Number(c.sale_mobile).toFixed(c.currency === 'USD' ? 4 : 2) }} ${{ Number(c.sale_fixed).toFixed(c.currency === 'USD' ? 4 : 2) }} {{ c.currency || 'CLP' }} Activo Inactivo

{{ isEditingClient ? 'Editar Cliente' : 'Crear Nuevo Cliente' }}

Credenciales de Acceso

Agregar IP a WhiteList

Formatos aceptados:

  • IP única: 192.168.100.22
  • Rango: 192.168.100.22 - 192.168.100.30
  • CIDR: 192.168.100.0/24

Troncales de Clientes

Cliente Prefijo In Autenticación (IP/User) Proveedor Asignado Estado Lógico Enlace SIP Acciones
{{ t.client_name }} {{ t.prefix }} {{ t.ip || t.username || '--' }} {{ t.provider_name || 'Balanceo Automático' }} Prefijo Add: {{t.provider_prefix}} Activa Inactiva
-
No hay troncales de clientes

Troncales de Proveedor (Salida)

Proveedor Host / IP Auth SIP Compra Movil Compra Fijo Estado Lógico Enlace SIP Acciones
{{ t.provider_name }} {{ t.ip }} {{ t.username || '--' }} ${{ Number(t.buy_mobile).toFixed(2) }} ${{ Number(t.buy_fixed).toFixed(2) }} Activa Inactiva
-
No hay troncales de proveedor

{{ isEditingTrunk ? 'Editar' : 'Crear' }} {{ trunkType === 'client' ? 'Troncal Cliente' : 'Troncal Proveedor' }}

Enrutamiento de Salida a Proveedor
⚠ {{ currencyMismatchWarning }}
Opciones Avanzadas PJSIP
Método de Autenticación PJSIP
Opciones Avanzadas PJSIP
Configuración de Salida PJSIP

Historial de Estado de Troncales

Fecha / Hora Nombre de Troncal Estado Detectado Latencia (Ping)
{{ String(log.fecha).substring(0,10) }}
{{ log.hora }}
{{ log.trunk_name }} {{ log.status }} {{ log.ping_ms ? log.ping_ms + ' ms' : '--' }}
No hay logs de estado en la tabla

Gestión de Clientes Prepago

Clientes Prepago
{{ prepaidClients.length }}
Minutos Totales
{{ prepaidClients.reduce((sum,c) => sum + (parseFloat(c.minutes_balance)||0), 0).toFixed(0) }}
Saldo Total
{{ fmtMoney(prepaidClients.reduce((sum,c) => sum + (parseFloat(c.balance)||0), 0), 'CLP') }}
Cliente Minutos Saldo Vencimiento Acciones
{{ c.name }} {{ parseFloat(c.minutes_balance||0).toFixed(1) }} {{ fmtMoney(c.balance, c.currency) }} {{ c.expiration_date ? c.expiration_date.split('T')[0] : 'Sin fecha' }}
No hay clientes prepago

IP's Permitidas en Firewall

IP / Rango Descripción Estado Acciones
{{ item.ip_range }} {{ item.description || '-' }} {{ item.active ? 'Activo' : 'Inactivo' }}
No hay IPs en la whitelist
Tu cuenta está configurada como postpago. Tu moneda es {{ myBalance.currency || 'CLP' }}.

Mis Consumos Recientes

Fecha Destino Prefijo Minutos Moneda Costo
{{ String(cdr.fecha).substring(0,10) }} {{ cdr.hora }} {{ cdr.dialed_number }} {{ cdr.client_prefix || '--' }} {{ cdr.talk_time }}s {{ cdr.currency || myBalance.currency }} {{ fmtMoney(cdr.sale_price, cdr.currency || myBalance.currency) }}
Sin consumos recientes

{{ selectedClient ? 'Recargar a ' + selectedClient.name : 'Nueva Recarga' }}

Se convertiran a {{ Math.floor(rechargeForm.amount / selectedClientPrice) }} minutos

Costo: {{ fmtMoney(rechargeForm.minutes * selectedClientPrice, selectedClient?.currency) }}

Historial de Transacciones - {{ selectedClient?.name }}

Fecha Tipo Monto Minutos Descripción
{{ new Date(t.created_at).toLocaleString() }} {{ t.type === 'recharge' ? 'Recarga' : t.type === 'consumption' ? 'Consumo' : t.type }} {{ t.amount >= 0 ? '+' : '' }}{{ fmtMoney(t.amount, t.currency || myBalance.currency) }} {{ t.minutes_change >= 0 ? '+' : '' }}{{ parseFloat(t.minutes_change).toFixed(1) }} {{ t.description }}
No hay transacciones
{{ clientTransactions.length }} transacciones

Cambiar Contraseña

{{ changePasswordError }}