⚠️ Confirmar

¿Eliminar?

📊 Dashboard JAC Seguros

📅 Google Calendar

👥 Clientes

NombreEstadoTipoCédula/DocCelularEmailCiudadEtiquetasPólizasWhatsAppCorreoAcciones

🎯 Prospectos

📋 Pólizas

📈 Pipeline de Ventas

🔄 Venta Cruzada

Oportunidades automáticas · Se registran en el Pipeline

🎯 Oportunidades Detectadas

🔔 Renovaciones

Vencimientos con WhatsApp automático

💳 Pagos

📋 Cuotas Pendientes

✅ Marcar al recibir pago
ClientePólizaAseg.RamoPrimaPeríodoVenceWhatsApp✅ Pago

💰 Pagos Registrados

FechaClienteAseg.RamoPólizaCuotaMontoPeríodoEstadoNotasAcc.

🚑 Siniestros

EstadoNro. CIATipoClienteAseg.PólizaFechaReclamoIndem.WAAcc.

🚗 Autos & Motos

🚗 Vehículos y Documentos

ClienteDoc.PlacaSOAT VenceTecno. VenceImpuestosWhatsApp SOATAcc.

📋 Pólizas Auto & Moto

EstadoClientePólizaAseg.RamoRiesgoPrimaVenceWAAcc.

💰 Comisiones

Total Comisiones (pólizas)
$0
de todas las pólizas
Por Cobrar
$0
Cobradas
$0
Este mes
$0

📊 Por Ramo

🏛 Por Aseguradora

⏳ Por Cobrar

✅ Cobradas

📊 Desglose por Póliza

ClienteRamoAseg.Prima%Com.Part.%Mi ComisiónCo-CorredorCom.CoCor

⚙️ Tasas de Comisión por Aseguradora/Ramo

AseguradoraRamo% Comisión

✅ Tareas

🏛 Aseguradoras

📣 WhatsApp Masivo

🎯 Filtros

👁 Vista Previa del Mensaje

📋 Destinatarios

📝 Notas & Recordatorios

🔔 Vencidas / Hoy

📅 Próximos 7 días

📋 Todas las Notas

📊 Informes

Reportes y análisis de cartera

📈 Pólizas por Ramo

🏛 Pólizas por Aseguradora

💰 Comisiones por Mes (año actual)

⚙️ Configuración

🔐 Cambiar Contraseña
🔢 Cambiar PIN
🏷️ Gestión de Etiquetas
📧 Integración EmailJS
¿Qué es EmailJS? Permite enviar correos directamente desde el CRM sin servidor.
Paso 1: Crea cuenta gratuita en emailjs.com (100 emails/mes gratis).
Paso 2: En tu dashboard → Email Services → Add New Service → Gmail o Zoho. Copia el Service ID.
Paso 3: En Email Templates → Create New Template. Variables requeridas: {{to_email}}, {{subject}}, {{message}}, {{from_name}}. Copia el Template ID.
Paso 4: En Account → API Keys. Copia tu Public Key.
Paso 5: Pega los 3 valores abajo y guarda.
🎯 Metas de Comisiones
💬 Plantillas de Mensajes
ℹ️ Sistema & Backup

Clientes: 0 · Pólizas: 0 · Prospectos: 0

Exporta periódicamente como respaldo de seguridad.

📦 Mensajero

Gestión de encomiendas y asignaciones
👤 Mensajero:
📱 Tel:

Detalle

📈Pipeline 🔄V.Cruzada 🔔Renovar 💳Pagos 🚑Siniestros 🚗Autos 🗂Portafolio 💰Comisiones 📣WA Masivo 📝Notas 📦Mensajero Tareas 🏢Empresas 🏛Aseg. ⚙️Config. 🚪Salir
💬

📅 Eventos del día

📦 Nueva Asignación

Archivo

📧 Redactar Correo

Puedes adjuntar varios archivos. EmailJS soporta hasta ~5 MB total.
💡 Opciones de envío:
Abrir app de correo: Abre tu cliente de email predeterminado (Gmail, Outlook, Zoho) con el mensaje listo.
Enviar vía EmailJS: Envía directamente desde el CRM (requiere EmailJS configurado).

🧮 Cotizador Rápido

Enviar cotización a:

💬 Enviar WhatsApp

💡 Usa *texto* para negrita y _texto_ para cursiva en WhatsApp.
📋 Historial completo de comunicaciones ▼ clic para leer cada mensaje
Abre WhatsApp con el mensaje y luego adjunta el archivo manualmente.

📝 Nueva Nota

Nuevo Cliente

📞 Contacto
🏠 Ubicación
👤 Datos Personales
🚨 Contacto de Emergencia
🏦 Datos Bancarios
📋 Info Adicional
👥 Colectivo
🏷️ Etiquetas
📎 Archivos Adjuntos
📎 Toca para adjuntar archivos (máx. 2.5MB c/u)
💬 Historial de WhatsApp
📧 Historial de Correo

Mensaje

Nuevo Prospecto

👤 DATOS PERSONALES
🎯 DATOS COMERCIALES
👥 Colectivo
📅 SEGUIMIENTO
🏷️ Etiquetas
💰 COTIZACIONES POR ASEGURADORA
Agrega las cotizaciones enviadas con sus montos por miembro de familia
📎 Archivos
📎 Cotizaciones, documentos, fotos

📝 Registrar Acción

Nueva Póliza

📋 DATOS PRINCIPALES
💰 PRIMAS Y COMISIONES
🤝 CO-CORRETAJE
👤 ASEGURADO / TOMADOR / BENEFICIARIO
📅 FECHAS Y PAGO
📊 Facturación y Control
📎 Archivos
📎 Adjuntar archivos de póliza
💬 Historial de WhatsApp
📧 Historial de Correo
👥 Beneficiarios
Total: 0%

🔄 Renovar Póliza

Nuevo Siniestro

📎 Archivos
📎 Adjuntar documentos del siniestro

Nuevo Vehículo

Registrar Pago

Registrar Comisión

Nueva Tarea

Nueva Aseguradora

+ Asegurado Colectivo

📬 Historial Completo de Comunicaciones

🧮 Cotizador Pro PRIVADO · ADMIN
17 aseguradoras · 12 ramos · Panamá · Comparativo completo con informe
1
Ramo
Tipo de seguro
2
Datos
Cliente + asegurado
3
Aseguradoras
Seleccionar
4
Resultados
Comparativo
¿Qué tipo de seguro deseas cotizar?
Selecciona el ramo para comparar todas las aseguradoras disponibles en Panamá
👤 Datos del cliente (opcional)

🔗 UniVivir Live Sync

Sin datos
💰 Comisiones
💳 Pagos
📈 Detalle Producción
👥 Asegurados
� Morosidad
💼 Liq. Comisiones
📋 Pólizas

🏥 Internacional de Seguros / BlueCross

Agente: JELY AN CASTRO PEREZ  |  Código: 117391

--
Corte Activo
0
Pólizas
$0.00
+ Saldo Anterior
$0.00
Total a Pagar
💡 Para sincronizar nuevos cortes, acceda al portal iSeguros y extraiga los datos.
Agregar Tarea
Póliza venceTareaSeguimiento
Eventos del día

Comisiones

🔍Esc
↓↑ navegar↵ abrirEsc cerrar
+(p.monto||0).toFixed(2)+' con vencimiento '+esc(p.fecha||'')+'. Por favor coord\u00ednenos. Gracias.'); h+='
'; h+='
'; h+='
'; h+='
'+esc(nom)+'
'; if(ced)h+='
👣 '+esc(ced)+'
'; if(pol.num||pol.aseg)h+='
📄 '+esc(pol.num||pol.id||'')+' • '+esc(pol.aseg||'')+' • '+esc(pol.ramo||pol.subramo||'')+'
'; h+='
📅 '+esc(p.fecha||'')+' '+(p.cuota?'• '+esc(p.cuota):'')+'
'; h+='
function openWAMas(){GI('modWAmas').style.display='flex';renderWAMasivo(30);} function closeWAMas(){GI('modWAmas').style.display='none';} function renderWAMasivo(dias){ var now=new Date(),lim=new Date(now.getTime()+dias*86400000); var items=[]; (S.polizas||[]).forEach(function(p){ if(p.estado==='cancelada'||!p.vencimiento)return; var exp=new Date(p.vencimiento+'T12:00:00'); if(exp>=now&&exp<=lim){ var cl=GC(p.clienteId)||{}; var wu=cl.cel?cl.cel.replace(/[^0-9]/g,''):''; var dl=Math.ceil((exp-now)/86400000); items.push({p:p,cl:cl,wu:wu,exp:exp,days:dl}); }}); items.sort(function(a,b){return a.exp-b.exp;}); var h='
Vencen en:'; [7,15,30,60,90].forEach(function(d){h+='';}); h+='
'; if(!items.length){ h+='
No hay polizas por vencer en los proximos '+dias+' dias
'; }else{ var nWA=items.filter(function(i){return i.wu;}).length; h+='
'+items.length+' poliza(s) — '+nWA+' con WhatsApp disponible
'; h+='
'; h+=''; items.forEach(function(it){ var msg='Hola '+esc(it.cl.nombre||'')+', le recordamos que su poliza '+(it.p.numero||'')+(it.p.aseguradora?' con '+esc(it.p.aseguradora):'')+' vence el '+fmt(it.p.vencimiento)+'. Para renovarla contactenos al 66714215. - JAC Seguros'; var wurl=it.wu?'https://wa.me/507'+it.wu+'?text='+encodeURIComponent(msg):''; var dc=it.days<=7?'#FEE2E2':it.days<=15?'#FEF3C7':'#DCFCE7'; var tc=it.days<=7?'#991B1B':it.days<=15?'#92400E':'#166534'; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; }); h+='
ClientePolizaAseg.VenceDiasWA
'+esc(it.cl.nombre||'-')+''+esc(it.p.numero||'-')+''+esc(it.p.aseguradora||'-')+''+fmt(it.p.vencimiento)+''+it.days+''+(wurl?'WA':'-')+'
'; } GI('wamas-body').innerHTML=h; } function renderCom(view){ view=view||'pol'; GI('com-bpol').className='btn'+(view==='pol'?' bpr':''); GI('com-baseg').className='btn'+(view==='aseg'?' bpr':''); var rows=[]; (S.polizas||[]).forEach(function(p){ if(p.estado==='cancelada')return; var cl=GC(p.clienteId)||{}; var pa=parseFloat(p.prima)||0; var pm=parseFloat(p.primaMensual)||pa/12; var pct=parseFloat(p.comisionPct)||0; var ca=pa*pct/100,cm=pm*pct/100; rows.push({p:p,cl:cl,pa:pa,pm:pm,pct:pct,ca:ca,cm:cm,aseg:p.aseguradora||'Sin aseg.'}); }); rows.sort(function(a,b){return b.ca-a.ca;}); var tPa=rows.reduce(function(s,r){return s+r.pa;},0); var tCa=rows.reduce(function(s,r){return s+r.ca;},0); var tCm=rows.reduce(function(s,r){return s+r.cm;},0); GI('com-kpi').innerHTML='
Primas Anuales
'+fmtM(tPa)+'
Comision Anual Est.
'+fmtM(tCa)+'
Comision Mensual Est.
'+fmtM(tCm)+'
'; if(view==='pol'){ var h='
'; h+=''; rows.forEach(function(r){ h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+='';}); h+='
ClientePolizaAseguradoraPrima AnualCom%Com. AnualCom. Mensual
'+esc(r.cl.nombre||'-')+''+esc(r.p.numero||'-')+''+esc(r.aseg)+''+fmtM(r.pa)+''+(r.pct?r.pct+'%':'-')+''+fmtM(r.ca)+''+fmtM(r.cm)+'
'; GI('com-body').innerHTML=h; }else{ var byA={}; rows.forEach(function(r){if(!byA[r.aseg])byA[r.aseg]={aseg:r.aseg,cnt:0,pa:0,ca:0,cm:0};byA[r.aseg].cnt++;byA[r.aseg].pa+=r.pa;byA[r.aseg].ca+=r.ca;byA[r.aseg].cm+=r.cm;}); var arows=Object.values(byA).sort(function(a,b){return b.ca-a.ca;}); var h='
'; h+=''; arows.forEach(function(a){ h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+='';}); h+='
AseguradoraPolizasTotal PrimaCom. Anual Est.Com. Mensual Est.
'+esc(a.aseg)+''+a.cnt+''+fmtM(a.pa)+''+fmtM(a.ca)+''+fmtM(a.cm)+'
'; GI('com-body').innerHTML=h; }} function OHist(tipo,id){window._histBack=window._lastTab||'pol';renderHist(tipo,id);} function renderHist(tipo,id){ SH('hist'); var title=GI('hist-title'),body=GI('hist-body'),items=[]; if(tipo==='pol'){ var pol=GP(id);if(!pol){body.innerHTML='

No encontrado

';return;} title.textContent='Historial Póliza '+(pol.num||id); (S.tareas||[]).filter(function(t){return t._autoRef===id;}).forEach(function(t){ items.push({fecha:t.fechaCreacion||'',tipo:'tarea',icon:t.estado==='done'?'\u2705':'\uD83D\uDCCB',desc:t.titulo||t.desc||'Tarea',sub:t.desc||''});}); (S.pagos||[]).filter(function(p){return p.polizaId===id;}).forEach(function(p){ items.push({fecha:p.fecha||'',tipo:'pago',icon:'\uD83D\uDCB3',desc:'Pago: '+fmtM(+(p.monto||0)),sub:p.notas||''}); }); }else if(tipo==='cli'){ var cli=GC(id);if(!cli){body.innerHTML='

No encontrado

';return;} title.textContent='Historial: '+(cli.nombre||id); var pols=(S.polizas||[]).filter(function(p){return p.clienteId===id;}); var pids=pols.map(function(p){return p.id;}); pols.forEach(function(pol){ items.push({fecha:pol.fechaIni||pol.fechaCreacion||'',tipo:'poliza',icon:'\uD83D\uDCC4',desc:'Póliza '+(pol.num||pol.id)+' — '+(pol.aseg||'')+' '+(pol.ramo||''),sub:'Estado: '+(pol.estado||'Activa')});}); (S.tareas||[]).filter(function(t){return t._autoRef===id||pids.indexOf(t._autoRef)>=0;}).forEach(function(t){ items.push({fecha:t.fechaCreacion||'',tipo:'tarea',icon:t.estado==='done'?'\u2705':'\uD83D\uDCCB',desc:t.titulo||t.desc||'Tarea',sub:t.desc||''});}); (S.pagos||[]).filter(function(p){return pids.indexOf(p.polizaId)>=0||p.cliente===id;}).forEach(function(p){ items.push({fecha:p.fecha||'',tipo:'pago',icon:'\uD83D\uDCB3',desc:'Pago: '+fmtM(+(p.monto||0)),sub:p.notas||''});}); } items.sort(function(a,b){return (b.fecha||'').localeCompare(a.fecha||'');}); if(!items.length){body.innerHTML='
Sin actividad registrada
';return;} var html='
'; items.forEach(function(item){ var bg={pago:'#e8f5e9',tarea:'#fff3e0',poliza:'#e3f2fd'}[item.tipo]||'#f9f9f9'; html+='
'; html+='
'+item.icon+'
'; html+='
'; html+='
'+esc(item.desc)+'
'; if(item.sub)html+='
'+esc(item.sub)+'
'; html+='
'+(item.fecha?fmt(item.fecha):'Sin fecha')+'
'; html+='
'; }); html+='
'; body.innerHTML=html; } var _repTipo='pol',_repData=[]; function renderRep(){ SH('rep'); repShow('pol'); } function repShow(tipo){ _repTipo=tipo; ['pol','pag','cli','com'].forEach(function(t){ var b=GI('rep-btn-'+t); if(b){b.style.background=t===tipo?'#4361ee':'#fff';b.style.color=t===tipo?'#fff':'#333';b.style.borderColor=t===tipo?'#4361ee':'#ddd';} }); var body=GI('rep-body'); var filt=GI('rep-filter'); if(!body||!filt)return; filt.innerHTML=''; var rows=[]; if(tipo==='pol'){ rows=(S.polizas||[]).map(function(p){ var c=GC(p.clienteId)||{}; return {aseg:p.aseg||'—',ramo:p.ramo||'—',num:p.num||p.id,cliente:c.nombre||p.clienteId||'—',estado:p.estado||'Activa',ini:fmt(p.fechaIni||p.fechaInicio),fin:fmt(p.fechaFin),prima:fmtM(+(p.primaMensual||p.prima||0)),letrap:p.letraPrima||'—'}; }); var html=''; rows.forEach(function(r){html+='';}); html+='
PólizaAseg.RamoClienteEstadoInicioVencePrimaLetra
'+esc(r.num)+''+esc(r.aseg)+''+esc(r.ramo)+''+esc(r.cliente)+''+esc(r.estado)+''+esc(r.ini)+''+esc(r.fin)+''+esc(r.prima)+''+esc(r.letrap)+'
'; body.innerHTML=html; _repData=['Póliza,Aseguradora,Ramo,Cliente,Estado,Inicio,Vence,Prima,Letra'.split(',')].concat(rows.map(function(r){return[r.num,r.aseg,r.ramo,r.cliente,r.estado,r.ini,r.fin,r.prima,r.letrap];})); }else if(tipo==='pag'){ rows=(S.pagos||[]).map(function(p){ var pol=GP(p.polizaId)||{};var c=GC(pol.clienteId||p.cliente)||{}; return {fecha:fmt(p.fecha||p.fechaPago),cliente:c.nombre||p.cliente||'—',poliza:pol.num||p.polizaId||'—',aseg:pol.aseg||p.aseg||'—',monto:fmtM(+(p.monto||0)),cuota:p.cuota||'—',notas:p.notas||'—'}; }).sort(function(a,b){return (b.fecha||'').localeCompare(a.fecha||'')||0;}); var html=''; rows.forEach(function(r){html+='';}); html+='
FechaClientePólizaAseg.MontoCuotaNotas
'+esc(r.fecha)+''+esc(r.cliente)+''+esc(r.poliza)+''+esc(r.aseg)+''+esc(r.monto)+''+esc(r.cuota)+''+esc(r.notas)+'
'; body.innerHTML=html; _repData=['Fecha,Cliente,Póliza,Aseg,Monto,Cuota,Notas'.split(',')].concat(rows.map(function(r){return[r.fecha,r.cliente,r.poliza,r.aseg,r.monto,r.cuota,r.notas];})); }else if(tipo==='cli'){ rows=(S.clientes||[]).map(function(c){ var pols=(S.polizas||[]).filter(function(p){return p.clienteId===c.id;}); return {nombre:c.nombre||'—',tel:c.tel||c.telefono||'—',email:c.email||'—',nPols:pols.length,activas:pols.filter(function(p){return (p.estado||'A')!=='Cancelada';}).length}; }); var html=''; rows.forEach(function(r){html+='';}); html+='
ClienteTeléfonoEmailPólizasActivas
'+esc(r.nombre)+''+esc(r.tel)+''+esc(r.email)+''+r.nPols+''+r.activas+'
'; body.innerHTML=html; _repData=['Cliente,Teléfono,Email,Total Pólizas,Activas'.split(',')].concat(rows.map(function(r){return[r.nombre,r.tel,r.email,r.nPols,r.activas];})); }else if(tipo==='com'){ var map={}; (S.polizas||[]).filter(function(p){return (p.estado||'A')!=='Cancelada';}).forEach(function(p){ var k=p.aseg||'Sin aseg'; if(!map[k])map[k]={aseg:k,pols:0,primaMen:0,comEsp:0}; map[k].pols++; map[k].primaMen+=+(p.primaMensual||p.prima||0); map[k].comEsp+=+(p.comisionEsp||0); }); rows=Object.values(map).sort(function(a,b){return b.primaMen-a.primaMen;}); var html=''; rows.forEach(function(r){html+='';}); html+='
AseguradoraPólizasPrima MensualCom. Esp.
'+esc(r.aseg)+''+r.pols+''+fmtM(r.primaMen)+''+fmtM(r.comEsp)+'
'; body.innerHTML=html; _repData=['Aseguradora,Pólizas,Prima Mensual,Com.Esp'.split(',')].concat(rows.map(function(r){return[r.aseg,r.pols,fmtM(r.primaMen),fmtM(r.comEsp)];})); } } function repExportCSV(){ if(!_repData||!_repData.length)return; var csv=_repData.map(function(r){return r.map(function(c){return '"'+String(c||'').replace(/"/g,'""')+'"';}).join(',');}).join('\n'); var blob=new Blob(['\uFEFF'+csv],{type:'text/csv;charset=utf-8'}); var url=URL.createObjectURL(blob); var a=document.createElement('a');a.href=url;a.download='reporte_crm_'+_repTipo+'_'+(new Date).toISOString().slice(0,10)+'.csv';a.click(); setTimeout(function(){URL.revokeObjectURL(url);},2000); }

🏥 Internacional de Seguros / BlueCross

Agente: JELY AN CASTRO PEREZ  |  Código: 117391

--
Corte Activo
0
Pólizas
$0.00
+ Saldo Anterior
$0.00
Total a Pagar
💡 Para sincronizar nuevos cortes, acceda al portal iSeguros y extraiga los datos.
Agregar Tarea
Póliza venceTareaSeguimiento
Eventos del día

Comisiones

🔍Esc
↓↑ navegar↵ abrirEsc cerrar
+(p.monto||0).toFixed(2)+'
'; h+='
'; h+='
'; if(waNum)h+='💬 WA'; if(email)h+='💌 Email'; if(cl)h+=''; h+='
';}); } if(!h)h='
Sin cobros pendientes 🎉
'; el.innerHTML=h; } function calAddTask(){ var y=window.calDate?window.calDate.getFullYear():new Date().getFullYear(); var m=window.calDate?window.calDate.getMonth():new Date().getMonth(); var sel=window._calSel||1; var dateStr=y+'-'+(m+1<10?'0':'')+(m+1)+'-'+(sel<10?'0':'')+sel; var mo=document.createElement('div'); mo.style='position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:9999'; mo.innerHTML='
' +'
➕ Nueva Tarea
' +'' +'' +'' +'
' +'' +'' +'
'; mo.className='overlay-task-add'; document.body.appendChild(mo); setTimeout(function(){var el=document.getElementById('_qTit');if(el)el.focus();},50); document.getElementById('_qBtn').onclick=function(){ var tit=document.getElementById('_qTit').value.trim(); if(!tit){document.getElementById('_qTit').style.borderColor='#EF4444';return;} var pri=document.getElementById('_qPri').value; var dsc=document.getElementById('_qDesc').value.trim(); var id='T'+Math.random().toString(36).slice(2,10); var t={id:id,titulo:tit,desc:dsc||tit,fechaLimite:dateStr,prioridad:pri,etapaTarea:'Por hacer',fechaCreacion:new Date().toISOString().slice(0,10),estado:'pendiente'}; if(!S.tareas)S.tareas=[]; S.tareas.push(t);save();mo.remove(); calRenderAllTareas(); }; mo.addEventListener('click',function(e){if(e.target===mo)mo.remove();}); } function openWAMas(){GI('modWAmas').style.display='flex';renderWAMasivo(30);} function closeWAMas(){GI('modWAmas').style.display='none';} function renderWAMasivo(dias){ var now=new Date(),lim=new Date(now.getTime()+dias*86400000); var items=[]; (S.polizas||[]).forEach(function(p){ if(p.estado==='cancelada'||!p.vencimiento)return; var exp=new Date(p.vencimiento+'T12:00:00'); if(exp>=now&&exp<=lim){ var cl=GC(p.clienteId)||{}; var wu=cl.cel?cl.cel.replace(/[^0-9]/g,''):''; var dl=Math.ceil((exp-now)/86400000); items.push({p:p,cl:cl,wu:wu,exp:exp,days:dl}); }}); items.sort(function(a,b){return a.exp-b.exp;}); var h='
Vencen en:'; [7,15,30,60,90].forEach(function(d){h+='';}); h+='
'; if(!items.length){ h+='
No hay polizas por vencer en los proximos '+dias+' dias
'; }else{ var nWA=items.filter(function(i){return i.wu;}).length; h+='
'+items.length+' poliza(s) — '+nWA+' con WhatsApp disponible
'; h+='
'; h+=''; items.forEach(function(it){ var msg='Hola '+esc(it.cl.nombre||'')+', le recordamos que su poliza '+(it.p.numero||'')+(it.p.aseguradora?' con '+esc(it.p.aseguradora):'')+' vence el '+fmt(it.p.vencimiento)+'. Para renovarla contactenos al 66714215. - JAC Seguros'; var wurl=it.wu?'https://wa.me/507'+it.wu+'?text='+encodeURIComponent(msg):''; var dc=it.days<=7?'#FEE2E2':it.days<=15?'#FEF3C7':'#DCFCE7'; var tc=it.days<=7?'#991B1B':it.days<=15?'#92400E':'#166534'; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; }); h+='
ClientePolizaAseg.VenceDiasWA
'+esc(it.cl.nombre||'-')+''+esc(it.p.numero||'-')+''+esc(it.p.aseguradora||'-')+''+fmt(it.p.vencimiento)+''+it.days+''+(wurl?'WA':'-')+'
'; } GI('wamas-body').innerHTML=h; } function renderCom(view){ view=view||'pol'; GI('com-bpol').className='btn'+(view==='pol'?' bpr':''); GI('com-baseg').className='btn'+(view==='aseg'?' bpr':''); var rows=[]; (S.polizas||[]).forEach(function(p){ if(p.estado==='cancelada')return; var cl=GC(p.clienteId)||{}; var pa=parseFloat(p.prima)||0; var pm=parseFloat(p.primaMensual)||pa/12; var pct=parseFloat(p.comisionPct)||0; var ca=pa*pct/100,cm=pm*pct/100; rows.push({p:p,cl:cl,pa:pa,pm:pm,pct:pct,ca:ca,cm:cm,aseg:p.aseguradora||'Sin aseg.'}); }); rows.sort(function(a,b){return b.ca-a.ca;}); var tPa=rows.reduce(function(s,r){return s+r.pa;},0); var tCa=rows.reduce(function(s,r){return s+r.ca;},0); var tCm=rows.reduce(function(s,r){return s+r.cm;},0); GI('com-kpi').innerHTML='
Primas Anuales
'+fmtM(tPa)+'
Comision Anual Est.
'+fmtM(tCa)+'
Comision Mensual Est.
'+fmtM(tCm)+'
'; if(view==='pol'){ var h='
'; h+=''; rows.forEach(function(r){ h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+='';}); h+='
ClientePolizaAseguradoraPrima AnualCom%Com. AnualCom. Mensual
'+esc(r.cl.nombre||'-')+''+esc(r.p.numero||'-')+''+esc(r.aseg)+''+fmtM(r.pa)+''+(r.pct?r.pct+'%':'-')+''+fmtM(r.ca)+''+fmtM(r.cm)+'
'; GI('com-body').innerHTML=h; }else{ var byA={}; rows.forEach(function(r){if(!byA[r.aseg])byA[r.aseg]={aseg:r.aseg,cnt:0,pa:0,ca:0,cm:0};byA[r.aseg].cnt++;byA[r.aseg].pa+=r.pa;byA[r.aseg].ca+=r.ca;byA[r.aseg].cm+=r.cm;}); var arows=Object.values(byA).sort(function(a,b){return b.ca-a.ca;}); var h='
'; h+=''; arows.forEach(function(a){ h+=''; h+=''; h+=''; h+=''; h+=''; h+=''; h+='';}); h+='
AseguradoraPolizasTotal PrimaCom. Anual Est.Com. Mensual Est.
'+esc(a.aseg)+''+a.cnt+''+fmtM(a.pa)+''+fmtM(a.ca)+''+fmtM(a.cm)+'
'; GI('com-body').innerHTML=h; }} function OHist(tipo,id){window._histBack=window._lastTab||'pol';renderHist(tipo,id);} function renderHist(tipo,id){ SH('hist'); var title=GI('hist-title'),body=GI('hist-body'),items=[]; if(tipo==='pol'){ var pol=GP(id);if(!pol){body.innerHTML='

No encontrado

';return;} title.textContent='Historial Póliza '+(pol.num||id); (S.tareas||[]).filter(function(t){return t._autoRef===id;}).forEach(function(t){ items.push({fecha:t.fechaCreacion||'',tipo:'tarea',icon:t.estado==='done'?'\u2705':'\uD83D\uDCCB',desc:t.titulo||t.desc||'Tarea',sub:t.desc||''});}); (S.pagos||[]).filter(function(p){return p.polizaId===id;}).forEach(function(p){ items.push({fecha:p.fecha||'',tipo:'pago',icon:'\uD83D\uDCB3',desc:'Pago: '+fmtM(+(p.monto||0)),sub:p.notas||''}); }); }else if(tipo==='cli'){ var cli=GC(id);if(!cli){body.innerHTML='

No encontrado

';return;} title.textContent='Historial: '+(cli.nombre||id); var pols=(S.polizas||[]).filter(function(p){return p.clienteId===id;}); var pids=pols.map(function(p){return p.id;}); pols.forEach(function(pol){ items.push({fecha:pol.fechaIni||pol.fechaCreacion||'',tipo:'poliza',icon:'\uD83D\uDCC4',desc:'Póliza '+(pol.num||pol.id)+' — '+(pol.aseg||'')+' '+(pol.ramo||''),sub:'Estado: '+(pol.estado||'Activa')});}); (S.tareas||[]).filter(function(t){return t._autoRef===id||pids.indexOf(t._autoRef)>=0;}).forEach(function(t){ items.push({fecha:t.fechaCreacion||'',tipo:'tarea',icon:t.estado==='done'?'\u2705':'\uD83D\uDCCB',desc:t.titulo||t.desc||'Tarea',sub:t.desc||''});}); (S.pagos||[]).filter(function(p){return pids.indexOf(p.polizaId)>=0||p.cliente===id;}).forEach(function(p){ items.push({fecha:p.fecha||'',tipo:'pago',icon:'\uD83D\uDCB3',desc:'Pago: '+fmtM(+(p.monto||0)),sub:p.notas||''});}); } items.sort(function(a,b){return (b.fecha||'').localeCompare(a.fecha||'');}); if(!items.length){body.innerHTML='
Sin actividad registrada
';return;} var html='
'; items.forEach(function(item){ var bg={pago:'#e8f5e9',tarea:'#fff3e0',poliza:'#e3f2fd'}[item.tipo]||'#f9f9f9'; html+='
'; html+='
'+item.icon+'
'; html+='
'; html+='
'+esc(item.desc)+'
'; if(item.sub)html+='
'+esc(item.sub)+'
'; html+='
'+(item.fecha?fmt(item.fecha):'Sin fecha')+'
'; html+='
'; }); html+='
'; body.innerHTML=html; } var _repTipo='pol',_repData=[]; function renderRep(){ SH('rep'); repShow('pol'); } function repShow(tipo){ _repTipo=tipo; ['pol','pag','cli','com'].forEach(function(t){ var b=GI('rep-btn-'+t); if(b){b.style.background=t===tipo?'#4361ee':'#fff';b.style.color=t===tipo?'#fff':'#333';b.style.borderColor=t===tipo?'#4361ee':'#ddd';} }); var body=GI('rep-body'); var filt=GI('rep-filter'); if(!body||!filt)return; filt.innerHTML=''; var rows=[]; if(tipo==='pol'){ rows=(S.polizas||[]).map(function(p){ var c=GC(p.clienteId)||{}; return {aseg:p.aseg||'—',ramo:p.ramo||'—',num:p.num||p.id,cliente:c.nombre||p.clienteId||'—',estado:p.estado||'Activa',ini:fmt(p.fechaIni||p.fechaInicio),fin:fmt(p.fechaFin),prima:fmtM(+(p.primaMensual||p.prima||0)),letrap:p.letraPrima||'—'}; }); var html=''; rows.forEach(function(r){html+='';}); html+='
PólizaAseg.RamoClienteEstadoInicioVencePrimaLetra
'+esc(r.num)+''+esc(r.aseg)+''+esc(r.ramo)+''+esc(r.cliente)+''+esc(r.estado)+''+esc(r.ini)+''+esc(r.fin)+''+esc(r.prima)+''+esc(r.letrap)+'
'; body.innerHTML=html; _repData=['Póliza,Aseguradora,Ramo,Cliente,Estado,Inicio,Vence,Prima,Letra'.split(',')].concat(rows.map(function(r){return[r.num,r.aseg,r.ramo,r.cliente,r.estado,r.ini,r.fin,r.prima,r.letrap];})); }else if(tipo==='pag'){ rows=(S.pagos||[]).map(function(p){ var pol=GP(p.polizaId)||{};var c=GC(pol.clienteId||p.cliente)||{}; return {fecha:fmt(p.fecha||p.fechaPago),cliente:c.nombre||p.cliente||'—',poliza:pol.num||p.polizaId||'—',aseg:pol.aseg||p.aseg||'—',monto:fmtM(+(p.monto||0)),cuota:p.cuota||'—',notas:p.notas||'—'}; }).sort(function(a,b){return (b.fecha||'').localeCompare(a.fecha||'')||0;}); var html=''; rows.forEach(function(r){html+='';}); html+='
FechaClientePólizaAseg.MontoCuotaNotas
'+esc(r.fecha)+''+esc(r.cliente)+''+esc(r.poliza)+''+esc(r.aseg)+''+esc(r.monto)+''+esc(r.cuota)+''+esc(r.notas)+'
'; body.innerHTML=html; _repData=['Fecha,Cliente,Póliza,Aseg,Monto,Cuota,Notas'.split(',')].concat(rows.map(function(r){return[r.fecha,r.cliente,r.poliza,r.aseg,r.monto,r.cuota,r.notas];})); }else if(tipo==='cli'){ rows=(S.clientes||[]).map(function(c){ var pols=(S.polizas||[]).filter(function(p){return p.clienteId===c.id;}); return {nombre:c.nombre||'—',tel:c.tel||c.telefono||'—',email:c.email||'—',nPols:pols.length,activas:pols.filter(function(p){return (p.estado||'A')!=='Cancelada';}).length}; }); var html=''; rows.forEach(function(r){html+='';}); html+='
ClienteTeléfonoEmailPólizasActivas
'+esc(r.nombre)+''+esc(r.tel)+''+esc(r.email)+''+r.nPols+''+r.activas+'
'; body.innerHTML=html; _repData=['Cliente,Teléfono,Email,Total Pólizas,Activas'.split(',')].concat(rows.map(function(r){return[r.nombre,r.tel,r.email,r.nPols,r.activas];})); }else if(tipo==='com'){ var map={}; (S.polizas||[]).filter(function(p){return (p.estado||'A')!=='Cancelada';}).forEach(function(p){ var k=p.aseg||'Sin aseg'; if(!map[k])map[k]={aseg:k,pols:0,primaMen:0,comEsp:0}; map[k].pols++; map[k].primaMen+=+(p.primaMensual||p.prima||0); map[k].comEsp+=+(p.comisionEsp||0); }); rows=Object.values(map).sort(function(a,b){return b.primaMen-a.primaMen;}); var html=''; rows.forEach(function(r){html+='';}); html+='
AseguradoraPólizasPrima MensualCom. Esp.
'+esc(r.aseg)+''+r.pols+''+fmtM(r.primaMen)+''+fmtM(r.comEsp)+'
'; body.innerHTML=html; _repData=['Aseguradora,Pólizas,Prima Mensual,Com.Esp'.split(',')].concat(rows.map(function(r){return[r.aseg,r.pols,fmtM(r.primaMen),fmtM(r.comEsp)];})); } } function repExportCSV(){ if(!_repData||!_repData.length)return; var csv=_repData.map(function(r){return r.map(function(c){return '"'+String(c||'').replace(/"/g,'""')+'"';}).join(',');}).join('\n'); var blob=new Blob(['\uFEFF'+csv],{type:'text/csv;charset=utf-8'}); var url=URL.createObjectURL(blob); var a=document.createElement('a');a.href=url;a.download='reporte_crm_'+_repTipo+'_'+(new Date).toISOString().slice(0,10)+'.csv';a.click(); setTimeout(function(){URL.revokeObjectURL(url);},2000); }

🏥 Internacional de Seguros / BlueCross

Agente: JELY AN CASTRO PEREZ  |  Código: 117391

--
Corte Activo
0
Pólizas
$0.00
+ Saldo Anterior
$0.00
Total a Pagar
💡 Para sincronizar nuevos cortes, acceda al portal iSeguros y extraiga los datos.
Agregar Tarea
Póliza venceTareaSeguimiento
Eventos del día

Comisiones

🔍Esc
↓↑ navegar↵ abrirEsc cerrar