(function(){
var ISR=[[0.01,8952.49,0,1.92],[8952.50,75984.55,171.88,6.40],[75984.56,133536.07,4461.94,10.88],[133536.08,155229.80,10723.55,16.00],[155229.81,185852.57,14194.54,17.92],[185852.58,374837.88,19682.13,21.36],[374837.89,590795.99,60049.40,23.52],[590796.00,1127926.84,110842.74,30.00],[1127926.85,1503902.46,271981.99,32.00],[1503902.47,4511707.37,392294.17,34.00],[4511707.38,1e15,1414947.85,35.00]];
var SUBL=11492.66,SUB=6427.8,TOPE=206588.10;
var reg=’sueldos’,pd=null;
var H1={sueldos:’Trabajadores con relación laboral. El ISR te lo retiene tu empleador mes a mes.’,actividad:’Personas físicas con actividad empresarial. Ingresos menos gastos autorizados con CFDI 4.0.’,honorarios:’Profesionistas independientes. Tus clientes te retienen 10% de ISR por honorarios facturados.’};
var H2={sueldos:’Total percepciones gravadas 2025. En tu constancia de retenciones.’,actividad:’Total ingresos facturados y cobrados durante 2025.’,honorarios:’Total honorarios facturados y cobrados durante 2025.’};
var LBL={sueldos:’Sueldos y salarios’,actividad:’Actividad empresarial’,honorarios:’Servicios profesionales’};
function g(id){return document.getElementById(id);}
function t(id,v){var e=g(id);if(e)e.textContent=v;}
function V(id){var e=g(id);if(!e)return 0;var v=parseFloat(e.value);return isNaN(v)||v<0?0:v;}
function on(id,fn){var e=g(id);if(e)e.addEventListener('click',fn);}
function step(s1,s2,s3){
var sc=function(id,c){var e=g(id);if(e)e.className='algr-st'+(c?' '+c:'');};
var sl=function(id,d){var e=g(id);if(e)e.className='algr-ln'+(d?' done':'');};
sc('algr-s1',s1);sc('algr-s2',s2);sc('algr-s3',s3);
sl('algr-l1',s2==='on'||s2==='done'||s3==='on'||s3==='done');
sl('algr-l2',s3==='on'||s3==='done');
}
function setReg(r){
reg=r;
var ids=['rs','ra','rh'],regs=['sueldos','actividad','honorarios'];
for(var i=0;i<ids.length;i++){var b=g('algr-'+ids[i]);if(b)b.className='algr-rb'+(regs[i]===r?' on':'');}
t('algr-rhint',H1[r]);t('algr-ihint',H2[r]);
var dw=g('algr-daw');if(dw)dw.style.display=(r==='actividad'||r==='honorarios')?'block':'none';
}
function goCalc(){
var el=g('algr-ii');var v=V('algr-ii');
if(v<1){if(el){el.classList.add('err');el.focus();}alert('Ingresa tus ingresos anuales brutos para continuar.');return;}
if(el)el.classList.remove('err');
pd={ing:v,ret:V('algr-ir'),da:V('algr-ida'),dm:V('algr-im'),ds:V('algr-is'),dc:V('algr-ic'),dh:V('algr-ih'),df:V('algr-iaf'),dd:V('algr-id'),reg:reg};
g('algr-p0').style.display='none';
g('algr-p1').className='algr-p1 show';
step('done','on','');window.scrollTo(0,0);
}
function submitHS(nom,em,tel,cb){
var xhr=new XMLHttpRequest();
xhr.open('POST','https://api.hsforms.com/submissions/v3/integration/submit/6180490/a03496be-f434-48ae-86fa-01759a412e67',true);
xhr.setRequestHeader('Content-Type','application/json');
xhr.timeout=6000;
xhr.onload=function(){cb();};xhr.onerror=function(){cb();};xhr.ontimeout=function(){cb();};
var fields=[{name:'firstname',value:nom},{name:'email',value:em}];
if(tel)fields.push({name:'phone',value:tel});
xhr.send(JSON.stringify({fields:fields,context:{pageUri:window.location.href,pageName:document.title}}));
}
function submitForm(){
var fnEl=g('algr-fn'),feEl=g('algr-fe'),ftEl=g('algr-ft');
var nom=(fnEl.value||'').trim(),em=(feEl.value||'').trim(),tel=(ftEl?ftEl.value:'').trim();
var ok=true;
if(nom.length<2){fnEl.classList.add('err');g('algr-en').style.display='block';ok=false;}
else{fnEl.classList.remove('err');g('algr-en').style.display='none';}
var re=/^[^s@]+@[^s@]+.[^s@]+$/;
if(!re.test(em)){feEl.classList.add('err');g('algr-ee').style.display='block';ok=false;}
else{feEl.classList.remove('err');g('algr-ee').style.display='none';}
if(!ok)return;
var btn=g('algr-fsb'),sp=g('algr-sp'),bt=g('algr-fbt');
btn.disabled=true;sp.style.display='inline-block';bt.textContent='Enviando…';
submitHS(nom,em,tel,function(){
btn.disabled=false;sp.style.display='none';bt.textContent='Ver mi resultado →';
g('algr-fw').style.display='none';
g('algr-ok').style.display='block';
});
}
function f2(n){return '$'+Number(n).toLocaleString('es-MX',{minimumFractionDigits:2,maximumFractionDigits:2});}
function f0(n){return '$'+Number(n).toLocaleString('es-MX',{minimumFractionDigits:0,maximumFractionDigits:0});}
function desglose(){
if(!pd)return;
var d=pd,esS=(d.reg==='sueldos');
var conT=d.dm+d.ds+d.dc+d.dh,sinT=d.df+d.dd;
var tope=Math.min(d.ing*0.15,TOPE),top=Math.min(conT,tope),exc=Math.max(0,conT-tope),dtot=top+sinT;
var base=esS?Math.max(0,d.ing-dtot):Math.max(0,d.ing-d.da-dtot);
var br=null,idx=-1;
for(var i=0;i=(ISR[i][0]-.005)&&base<=(ISR[i][1]+.005)){br=ISR[i];idx=i;break;}}
var isrA=0,cf=0,rate=0,marg=0;
if(br){cf=br[2];rate=br[3];marg=(base-br[0])*(rate/100);isrA=Math.max(0,cf+marg);}
var sub=0;if(esS&&d.ing/120,abs=Math.abs(saldo);
var via,viaT,viaD;
if(fav){
if(saldo<=10000){via='Devolución automática';viaT='Con contraseña SAT';viaD='Saldos hasta $10,000 MXN: contraseña SAT y CLABE a tu nombre. Depósito: 3–5 días hábiles.';}
else if(saldo0)rows.push([‘Deducciones autorizadas del negocio’,’-‘+f2(d.da)]);
if(conT>0){rows.push([‘Deducciones personales (sujetas a tope)’,f2(conT)]);if(exc>0)rows.push([‘Exceso sobre tope (no deducible)’,’-‘+f2(exc)]);rows.push([‘Deducciones personales aplicadas’,f2(top)]);}
if(sinT>0)rows.push([‘AFORE y donativos (sin tope)’,f2(sinT)]);
if(dtot>0)rows.push([‘Total deducciones’,’-‘+f2(dtot)]);
rows.push([‘Base gravable ISR’,f2(base)]);
if(br){rows.push([‘Tasa marginal del tramo’,rate.toFixed(2)+’%’]);rows.push([‘Cuota fija del tramo’,f2(cf)]);rows.push([‘Impuesto marginal’,f2(marg)]);}
rows.push([‘ISR del ejercicio (art. 152 LISR)’,f2(isrA)]);
if(sub>0)rows.push([‘Subsidio al empleo (art. 97 LISR)’,’-‘+f2(sub)]);
rows.push([‘ISR anual a cargo’,f2(neto)],[‘ISR retenido en 2025’,f2(d.ret)]);
var html=»;
for(var j=0;j<rows.length;j++)html+='
‘+rows[j][0]+’‘+rows[j][1]+’
‘;
html+=’
‘+(fav?’Saldo a favor — el SAT te debe’:’Saldo a cargo — debes al SAT’)+’‘+f2(abs)+’
‘;
g(‘algr-obd’).innerHTML=html;
g(‘algr-vb’).className=’algr-via’+(fav?»:’ neg’);
t(‘algr-ovl’,fav?’Vía de devolución recomendada’:’Qué hacer’);t(‘algr-ovt’,viaT);t(‘algr-ovd’,viaD);
var tb=g(‘algr-otbl’);tb.innerHTML=»;
for(var k=0;k<ISR.length;k++){
var tr=document.createElement('tr');
tr.innerHTML='
¡Usa nuestra calculadora gratuita! Coloca el tipo de régimen, periodo e ingreso buro para el desglose
🚀 Gracias por compartirnos tus datos
Haz clic en el botón para usar la calculadora gratuita. Entérate sobre los cambios fiscales del SAT, tips contables y mucho más en nuestro Instagram @AlegraMexico