{{pageTitle}}

{{k.label}}
{{k.value}}
{{k.change}}

Evolución

Top Clientes

{{i+1}}
{{c.nombre_comercial||c.nombre}}
{{money(c.total)}}

Rutas Semana

No hay rutas esta semana

FechaRutaComercialParadasEstado
{{formatDate(r.fecha)}}{{r.nombre}}{{r.comercial_nombre}}{{r.paradas}}{{r.estado}}
{{k.label}}
{{k.value}}

Distribución por Frecuencia

Riesgo de Abandono (Smart Score)

Clientes en Riesgo con Alta Facturación

Clientes importantes (>1.000€) con riesgo alto o crítico de abandono, ordenados por score

ClienteScoreRiesgoFacturaciónDías s/compraIntervaloRatio RetrasoFactores
{{c.nombre_comercial||c.nombre}} {{c.riesgo_score}} {{c.riesgo_abandono}} {{money(c.facturacion)}} {{c.dias_sin_compra}}d {{c.intervalo_medio ? c.intervalo_medio+'d' : '-'}} {{c.ratio_retraso ? c.ratio_retraso+'x' : '-'}}
R:{{c.riesgo_factores.retraso}} I:{{c.riesgo_factores.inactividad}} V:{{c.riesgo_factores.valor}} F:{{c.riesgo_factores.regularidad}}
-

Todos los Clientes

{{clientes.length}} registros
Cliente Facturación Ped. Score Riesgo Frecuencia Últ. Compra Intervalo Comercial
{{c.nombre_comercial||c.nombre}}
{{c.cif}} · {{c.ciudad}}
{{money(c.facturacion)}} {{c.num_pedidos}} {{c.riesgo_score}} {{c.riesgo_abandono}} {{c.frecuencia}} {{c.ultima_compra ? formatDate(c.ultima_compra) : '-'}}
{{c.dias_sin_compra}}d
{{c.intervalo_medio ? c.intervalo_medio+'d' : '-'}} {{c.comercial_nombre}}
{{k.label}}
{{k.value}}

Estado del Stock

Top Familias por Valor

Distribución de Margen

Alertas de Stock

#ProductoEstadoStockMínimoIdealCoberturaValor StockFamilia
#{{p.ranking}} {{p.nombre}}
{{p.codigo}}
{{p.estado_stock}} {{p.stock_actual}} {{p.stock_minimo}} {{p.stock_ideal}} {{p.cobertura_dias ? p.cobertura_dias+'d' : '-'}} {{money(p.valor_stock)}} {{p.familia}}

Inventario Completo

{{productos.length}} referencias
Producto Estado Stock Mín/Máx V.3M Rotación Cobert. Valor Margen Familia
{{p.nombre}}
{{p.codigo}}
{{p.estado_stock}} {{p.stock_actual}} {{p.stock_minimo}}/{{p.stock_maximo}} {{p.ventas_3m||'-'}} {{p.rotacion_meses ? p.rotacion_meses+'m' : '-'}} {{p.cobertura_dias ? p.cobertura_dias+'d' : '-'}} {{money(p.valor_stock)}} {{p.margen ? p.margen+'%' : '-'}} {{p.familia}}
Total Pedidos
{{pedidosStats.total}}
{{pedidosStats.entregados}} entregados
Facturación Total
{{money(pedidosStats.importe_total)}}
Ticket Medio
{{money(pedidosStats.ticket_medio)}}
En Pipeline
{{pedidosStats.en_proceso}}
{{pedidosStats.cancelados}} cancelados

Por Estado

Por Comercial

{{c.nombre?.charAt(0)}}
{{c.nombre}}
{{money(c.facturacion)}}
{{c.pedidos}} ped.

Canal de Venta

{{ch.canal}}
{{ch.count}}
{{ch.pct}}%

Análisis Inteligente

{{ins.titulo}}
{{ins.desc}}

Listado de Pedidos

{{pedidos.length}} registros
NúmeroClienteComercialCanalFechaImporteEstado
{{p.numero}} {{p.nombre_comercial||p.cliente_nombre}} {{p.comercial_nombre}}- {{canalLabel(p)}} {{formatDate(p.fecha)}} {{money(p.importe_total)}} {{p.estado}}
FechaNombreComercialParadasProgresoDist.EstadoIA
{{formatDate(r.fecha)}}{{r.nombre}}{{r.comercial_nombre}}{{r.paradas_completadas||0}}/{{r.total_paradas}}
{{r.distancia_total?r.distancia_total+'km':'-'}}{{r.estado}}

{{rutaDetail.ruta?.nombre}}

{{rutaDetail.ruta?.estado}}
Paradas
{{(rutaDetail.paradas||[]).length}}
Distancia
{{rutaDetail.ruta?.distancia_total||0}} km
Duración
{{Math.round((rutaDetail.ruta?.duracion_estimada||0)/60*10)/10}}h
Venta
{{money((rutaDetail.paradas||[]).reduce((a,p)=>a+Number(p.importe_venta||0),0))}}

Paradas

📍

Sin paradas

{{i+1}}
{{p.cliente_nombre}}{{p.hora_estimada?.substring(0,5)}}
{{p.cliente_direccion}}, {{p.cliente_ciudad}}
{{p.prioridad}}R:{{p.riesgo_nivel}}
{{p.objetivo}}
{{s.nombre}}

Info

Comercial: {{rutaDetail.ruta?.comercial_nombre}}

Fecha: {{formatDate(rutaDetail.ruta?.fecha)}}

Optimizada por IA

Mapa

{{monthNames[calMonth]}} {{calYear}}

{{d}}
{{d.day}}
{{e.nombre}}
{{c.nombre?.charAt(0)}}

{{c.nombre}}

{{c.zona}}

{{c.clientes||0}}
Clientes
{{money(c.facturacion_mes||0)}}
Mes
{{c.rutas_pendientes||0}}
Rutas
WhatsApp
{{autoConfig.whatsapp_enabled?'Activo':'Inactivo'}}
Email
{{autoConfig.email_enabled?'Activo':'Inactivo'}}
Automatizaciones
{{autoRules.length}}

Configuración WhatsApp

Estado

Envío automático de mensajes

Próximamente: conecta tu cuenta de WhatsApp Business para enviar recordatorios, confirmaciones de pedido y seguimiento automático.

Configuración Email

Estado

Envío automático de emails

Próximamente: configura campañas de email automáticas para recuperar clientes inactivos, enviar ofertas y reportes.

Reglas de Automatización

{{rule.nombre}}

{{rule.descripcion}}

{{rule.activo?'Activo':'Inactivo'}}
Clientes en Riesgo
{{alerts.riesgo}}
Stock Bajo
{{alerts.stock}}
Alertas
{{alerts.ia}}

Riesgos

⚠️

{{r.nombre}} {{r.nivel}} ({{r.score}})

{{r.factores?.join('. ')}}

Sin alertas

Alertas

{{a.tipo==='riesgo_cliente'?'🔴':'🟡'}}

{{a.titulo}}

{{a.descripcion}}

Sin alertas