Demostración Interactiva

Cotizador de honorarios para abogados

Calcula rangos de honorarios transparentes por servicio, complejidad y cuantía, con desglose por etapas y descarga de propuesta.

Quiero esta herramienta en mi sitio
← Todas las funciones
Aviso legal: Información general con fines informativos; no sustituye la asesoría ni el patrocinio legal de un abogado. Los despachos, nombres y cifras presentados son ficticios y corresponden a datos de ejemplo.
💼 Propuestas transparentes: Configura los parámetros del asunto y obtén una cotización desglosada

Parámetros del Asunto

En asuntos laborales o mercantiles permite calcular porcentaje de éxito estimado.
Propuesta de Servicios Profesionales

Divorcio Incausado

Preparada para: Ing. Martín Morales

Vigencia: 15 días
Fecha: 14 Octubre 2026
Rango Estimado de Honorarios:
$18,000 – $24,000 MXN
Esquema: Honorario Mixto (Anticipo + Cuota Litis / Etapas)

Desglose Orientativo de Pagos:

✓ La Propuesta Incluye:
✕ No Incluye (Gastos del Cliente):

* Cotización orientativa elaborada para fines demostrativos. Los honorarios definitivos, compromisos y alcances específicos se establecen en el contrato formal de prestación de servicios profesionales.

🔒 Privacidad garantizada: no guardamos nada en esta página. Los cálculos y simulaciones se procesan localmente en tu navegador.

function recalcularCotizacion() { const sKey = document.getElementById('cot-servicio').value; const comp = document.getElementById('cot-complejidad').value; const mod = document.getElementById('cot-modalidad').value; const urg = document.getElementById('cot-urgencia').value; const cuantia = parseFloat(document.getElementById('cot-cuantia').value) || 0; const cliente = document.getElementById('cot-cliente').value.trim() || 'Prospecto'; const sData = TARIFAS_LEGALES_DEMO[sKey] || TARIFAS_LEGALES_DEMO.divorcio; let multComp = (comp === 'simple') ? 0.85 : (comp === 'compleja' ? 1.35 : 1.0); let multMod = (mod === 'en_linea') ? 0.90 : 1.0; let multUrg = (urg === 'urgente') ? 1.25 : 1.0; let minBase = sData.baseMin * multComp * multMod * multUrg; let maxBase = sData.baseMax * multComp * multMod * multUrg; // Si hay porcentaje y cuantía if (sData.porcentajeExito > 0 && cuantia > 0) { const porcMonto = cuantia * (sData.porcentajeExito / 100); minBase += (porcMonto * 0.8); maxBase += (porcMonto * 1.2); } minBase = Math.round(minBase / 500) * 500; maxBase = Math.round(maxBase / 500) * 500; // Actualizar vista document.getElementById('prop-servicio-nom').textContent = sData.nombre; document.getElementById('prop-cliente-nom').textContent = cliente; document.getElementById('prop-rango').textContent = `$${minBase.toLocaleString('es-MX')} – $${maxBase.toLocaleString('es-MX')} MXN`; document.getElementById('prop-esquema').textContent = `Esquema sugerido: ${sData.esquema}`; // Etapas const eBox = document.getElementById('prop-etapas-list'); eBox.innerHTML = ''; sData.etapas.forEach(et => { const eDiv = document.createElement('div'); eDiv.className = 'etapa-item'; const estMonto = Math.round((minBase * (et.pct / 100)) / 100) * 100; eDiv.innerHTML = `
${et.fase} (${et.pct}%) ${et.descripcion}
~$${estMonto.toLocaleString('es-MX')} MXN `; eBox.appendChild(eDiv); }); // Incluye const ulInc = document.getElementById('prop-incluye'); ulInc.innerHTML = ''; sData.incluye.forEach(i => { const li = document.createElement('li'); li.textContent = i; ulInc.appendChild(li); }); // No Incluye const ulNoInc = document.getElementById('prop-no-incluye'); ulNoInc.innerHTML = ''; sData.noIncluye.forEach(i => { const li = document.createElement('li'); li.textContent = i; ulNoInc.appendChild(li); }); } function aceptarYAgendarPropuesta() { const sNom = document.getElementById('prop-servicio-nom').textContent; const cli = document.getElementById('prop-cliente-nom').textContent; const ran = document.getElementById('prop-rango').textContent; const waMsg = `Hola, mi nombre es ${cli}. Realicé una cotización en su sitio web para el servicio de "${sNom}" con un estimado de ${ran}. Me interesa revisar mi asunto y agendar una consulta con el despacho.`; window.open(`https://wa.me/524461216313?text=${encodeURIComponent(waMsg)}`, '_blank'); } window.addEventListener('DOMContentLoaded', () => { recalcularCotizacion(); });