Views
No views yet
<div class="calculator-body">
<div class="tabs">
<div class="tab active" data-tab="simples">Simulação Rápida</div>
<div class="tab" data-tab="completa">Declaração Completa</div>
<div class="tab" data-tab="tabela">Tabela Progressiva</div>
</div>
<div class="tab-content active" id="simples">
<div class="alert alert-info">
Esta simulação considera as regras vigentes para o exercício 2025 (ano-calendário 2024). Valores em R$.
</div>
<div class="form-group">
<label for="renda-anual">Renda Anual Bruta Tributável</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="renda-anual" class="form-control" placeholder="Ex: 50000" min="0" step="0.01">
</div>
<p class="info-text">Inclua salários, aluguéis e outros rendimentos tributáveis.</p>
</div>
<div class="form-group">
<label for="dependentes">Número de Dependentes</label>
<input type="number" id="dependentes" class="form-control" value="0" min="0">
<p class="info-text">Cada dependente dá direito a dedução de R$ 2.275,08 em 2024.</p>
</div>
<div class="form-group">
<label for="previdencia">Previdência Oficial (INSS, etc.)</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="previdencia" class="form-control" value="0" min="0" step="0.01">
</div>
<p class="info-text">Contribuições para INSS e previdência oficial são dedutíveis integralmente.</p>
</div>
<div class="form-group">
<label for="gastos-deducao">Gastos Dedutíveis (Saúde, Educação, etc.)</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="gastos-deducao" class="form-control" value="0" min="0" step="0.01">
</div>
<p class="info-text">Inclua gastos com saúde, educação e outros permitidos.</p>
</div>
<div class="checkbox-group">
<input type="checkbox" id="opcao-simplificado">
<label for="opcao-simplificado">Usar desconto simplificado (20% da renda tributável, limitado a R$ 16.754,34)</label>
</div>
<div class="form-group">
<label for="retido-fonte">Imposto Retido na Fonte</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="retido-fonte" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<button id="calcular-simples" class="btn btn-accent btn-block">Calcular Imposto</button>
<div class="results" id="resultado-simples">
<h3>Resultado da Simulação</h3>
<div class="result-item">
<span>Renda Anual Bruta:</span>
<span id="res-renda-bruta">R$ 0,00</span>
</div>
<div class="result-item">
<span>Deduções (Dependentes):</span>
<span id="res-dependentes">R$ 0,00</span>
</div>
<div class="result-item">
<span>Contribuições Previdenciárias:</span>
<span id="res-previdencia">R$ 0,00</span>
</div>
<div class="result-item">
<span>Outras Deduções:</span>
<span id="res-outras-deducoes">R$ 0,00</span>
</div>
<div class="result-item">
<span>Desconto Simplificado:</span>
<span id="res-desconto-simplificado">R$ 0,00</span>
</div>
<div class="result-item">
<span>Base de Cálculo:</span>
<span id="res-base-calculo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Imposto Calculado:</span>
<span id="res-imposto">R$ 0,00</span>
</div>
<div class="result-item">
<span>Imposto Retido na Fonte:</span>
<span id="res-retido">R$ 0,00</span>
</div>
<div class="result-item total" id="res-total-type">
<span>Resultado:</span>
<span id="res-total">R$ 0,00</span>
</div>
</div>
</div>
<div class="tab-content" id="completa">
<div class="alert alert-info">
Esta versão completa simula uma declaração detalhada com todas as deduções permitidas.
</div>
<h3>Rendimentos Tributáveis</h3>
<div class="form-group">
<label for="salarios">Salários e Remunerações</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="salarios" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="aluguel">Rendimentos de Aluguéis</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="aluguel" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="ganho-capital">Ganho de Capital</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="ganho-capital" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="outros-rendimentos">Outros Rendimentos Tributáveis</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="outros-rendimentos" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<h3>Deduções</h3>
<div class="form-group">
<label for="dependentes-completo">Número de Dependentes</label>
<input type="number" id="dependentes-completo" class="form-control" value="0" min="0">
</div>
<div class="form-group">
<label for="prev-completo">Previdência Oficial (INSS, etc.)</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="prev-completo" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="saude">Gastos com Saúde</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="saude" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="educacao">Gastos com Educação</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="educacao" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="pensao">Pensão Alimentícia Paga</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="pensao" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="form-group">
<label for="outras-deducoes">Outras Deduções</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="outras-deducoes" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<div class="checkbox-group">
<input type="checkbox" id="opcao-simplificado-completo">
<label for="opcao-simplificado-completo">Usar desconto simplificado (20% da renda tributável, limitado a R$ 16.754,34)</label>
</div>
<h3>Imposto Retido na Fonte</h3>
<div class="form-group">
<label for="retido-fonte-completo">Valor Retido na Fonte</label>
<div class="input-group">
<div class="input-group-prepend">R$</div>
<input type="number" id="retido-fonte-completo" class="form-control" value="0" min="0" step="0.01">
</div>
</div>
<button id="calcular-completo" class="btn btn-accent btn-block">Calcular Declaração Completa</button>
<div class="results" id="resultado-completo">
<h3>Resultado da Declaração Completa</h3>
<div class="result-item">
<span>Renda Anual Bruta:</span>
<span id="res-renda-bruta-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Deduções (Dependentes):</span>
<span id="res-dependentes-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Contribuições Previdenciárias:</span>
<span id="res-previdencia-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Gastos com Saúde:</span>
<span id="res-saude">R$ 0,00</span>
</div>
<div class="result-item">
<span>Gastos com Educação:</span>
<span id="res-educacao">R$ 0,00</span>
</div>
<div class="result-item">
<span>Pensão Alimentícia:</span>
<span id="res-pensao">R$ 0,00</span>
</div>
<div class="result-item">
<span>Outras Deduções:</span>
<span id="res-outras-deducoes-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Desconto Simplificado:</span>
<span id="res-desconto-simplificado-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Base de Cálculo:</span>
<span id="res-base-calculo-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Imposto Calculado:</span>
<span id="res-imposto-completo">R$ 0,00</span>
</div>
<div class="result-item">
<span>Imposto Retido na Fonte:</span>
<span id="res-retido-completo">R$ 0,00</span>
</div>
<div class="result-item total" id="res-total-type-completo">
<span>Resultado:</span>
<span id="res-total-completo">R$ 0,00</span>
</div>
</div>
</div>
<div class="tab-content" id="tabela">
<h3>Tabela Progressiva do IRPF 2025 (Exercício 2025 - Ano-Calendário 2024)</h3>
<table class="table">
<thead>
<tr>
<th>Base de Cálculo (R$)</th>
<th>Alíquota (%)</th>
<th>Parcela a Deduzir (R$)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Até 26.963,20</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>De 26.963,21 até 33.919,80</td>
<td>7,5</td>
<td>2.022,24</td>
</tr>
<tr>
<td>De 33.919,81 até 45.012,60</td>
<td>15</td>
<td>4.566,23</td>
</tr>
<tr>
<td>De 45.012,61 até 55.976,16</td>
<td>22,5</td>
<td>7.942,17</td>
</tr>
<tr>
<td>Acima de 55.976,16</td>
<td>27,5</td>
<td>10.740,98</td>
</tr>
</tbody>
</table>
<div class="alert alert-info">
<h4>Como funciona o cálculo?</h4>
<p>O imposto é calculado aplicando a alíquota sobre a base de cálculo e subtraindo a parcela a deduzir correspondente.</p>
<p><strong>Exemplo para 2025:</strong> Para uma base de R$ 40.000,00:</p>
<p>(40.000 × 15%) - 4.257,57 = R$ 1.742,43</p>
<p><strong>Fonte:</strong> IN RFB nº 2.255/2025</p>
</div>
<h3>Principais Regras 2025</h3>
<ul style="margin-left: 1.5rem; margin-bottom: 1rem;">
<li>Limite para obrigatoriedade: R$ 33.888,00 de renda tributável</li>
<li>Dedução por dependente: R$ 2.275,08</li>
<li>Desconto simplificado: 20% da renda tributável (limite de R$ 16.754,34)</li>
<li>Patrimônio declarável: Bens acima de R$ 800.000,00</li>
</ul>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Tab switching
const tabs = document.querySelectorAll('.tab');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
// Remove active class from all tabs and contents
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
// Add active class to clicked tab and corresponding content
tab.classList.add('active');
const tabId = tab.getAttribute('data-tab');
document.getElementById(tabId).classList.add('active');
});
});
// Simple calculation
document.getElementById('calcular-simples').addEventListener('click', calcularSimples);
// Complete calculation
document.getElementById('calcular-completo').addEventListener('click', calcularCompleto);
function formatCurrency(value) {
return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value);
}
function calcularImposto(baseCalculo) {
// Tabela progressiva 2025 (IN 2.255/2025)
if (baseCalculo <= 22847.76) {
return 0;
} else if (baseCalculo <= 33919.80) {
return (baseCalculo * 0.075) - 1713.58;
} else if (baseCalculo <= 45012.60) {
return (baseCalculo * 0.15) - 4257.57;
} else if (baseCalculo <= 55976.16) {
return (baseCalculo * 0.225) - 7633.51;
} else {
return (baseCalculo * 0.275) - 10432.32;
}
}
function calcularDescontoSimplificado(rendaTributavel) {
const desconto = Math.min(rendaTributavel * 0.20, 16754.34);
return desconto;
}
function calcularSimples() {
// Get input values
const rendaAnual = parseFloat(document.getElementById('renda-anual').value) || 0;
const dependentes = parseInt(document.getElementById('dependentes').value) || 0;
const previdencia = parseFloat(document.getElementById('previdencia').value) || 0;
const gastosDeducao = parseFloat(document.getElementById('gastos-deducao').value) || 0;
const retidoFonte = parseFloat(document.getElementById('retido-fonte').value) || 0;
const usarSimplificado = document.getElementById('opcao-simplificado').checked;
// Calculate deductions
const deducaoDependentes = dependentes * 2275.08; // Valor por dependente em 2024
let totalDeducoes = deducaoDependentes + previdencia + gastosDeducao;
let descontoSimplificado = 0;
// Apply simplified discount if selected
if (usarSimplificado) {
descontoSimplificado = calcularDescontoSimplificado(rendaAnual);
totalDeducoes += descontoSimplificado;
}
// Calculate tax base
const baseCalculo = Math.max(0, rendaAnual - totalDeducoes);
// Calculate tax
const imposto = calcularImposto(baseCalculo);
// Calculate final result
const resultado = imposto - retidoFonte;
// Display results
document.getElementById('res-renda-bruta').textContent = formatCurrency(rendaAnual);
document.getElementById('res-dependentes').textContent = formatCurrency(deducaoDependentes);
document.getElementById('res-previdencia').textContent = formatCurrency(previdencia);
document.getElementById('res-outras-deducoes').textContent = formatCurrency(gastosDeducao);
document.getElementById('res-desconto-simplificado').textContent = formatCurrency(descontoSimplificado);
document.getElementById('res-base-calculo').textContent = formatCurrency(baseCalculo);
document.getElementById('res-imposto').textContent = formatCurrency(imposto);
document.getElementById('res-retido').textContent = formatCurrency(retidoFonte);
document.getElementById('res-total').textContent = formatCurrency(Math.abs(resultado));
// Style based on result
const totalElement = document.getElementById('res-total-type');
if (resultado > 0) {
totalElement.className = 'result-item total payable';
totalElement.querySelector('span:first-child').textContent = 'Valor a Pagar:';
} else if (resultado < 0) {
totalElement.className = 'result-item total refund';
totalElement.querySelector('span:first-child').textContent = 'Restituição:';
} else {
totalElement.className = 'result-item total';
totalElement.querySelector('span:first-child').textContent = 'Nada a pagar ou restituir';
}
// Show results
document.getElementById('resultado-simples').classList.add('active');
}
function calcularCompleto() {
// Get input values
const salarios = parseFloat(document.getElementById('salarios').value) || 0;
const aluguel = parseFloat(document.getElementById('aluguel').value) || 0;
const ganhoCapital = parseFloat(document.getElementById('ganho-capital').value) || 0;
const outrosRendimentos = parseFloat(document.getElementById('outros-rendimentos').value) || 0;
const dependentes = parseInt(document.getElementById('dependentes-completo').value) || 0;
const previdencia = parseFloat(document.getElementById('prev-completo').value) || 0;
const saude = parseFloat(document.getElementById('saude').value) || 0;
const educacao = parseFloat(document.getElementById('educacao').value) || 0;
const pensao = parseFloat(document.getElementById('pensao').value) || 0;
const outrasDeducoes = parseFloat(document.getElementById('outras-deducoes').value) || 0;
const retidoFonte = parseFloat(document.getElementById('retido-fonte-completo').value) || 0;
const usarSimplificado = document.getElementById('opcao-simplificado-completo').checked;
// Calculate total income
const rendaAnual = salarios + aluguel + ganhoCapital + outrosRendimentos;
// Calculate deductions
const deducaoDependentes = dependentes * 2275.08;
let totalDeducoes = deducaoDependentes + previdencia + saude + educacao + pensao + outrasDeducoes;
let descontoSimplificado = 0;
// Apply simplified discount if selected
if (usarSimplificado) {
descontoSimplificado = calcularDescontoSimplificado(rendaAnual);
totalDeducoes += descontoSimplificado;
}
// Calculate tax base
const baseCalculo = Math.max(0, rendaAnual - totalDeducoes);
// Calculate tax
const imposto = calcularImposto(baseCalculo);
// Calculate final result
const resultado = imposto - retidoFonte;
// Display results
document.getElementById('res-renda-bruta-completo').textContent = formatCurrency(rendaAnual);
document.getElementById('res-dependentes-completo').textContent = formatCurrency(deducaoDependentes);
document.getElementById('res-previdencia-completo').textContent = formatCurrency(previdencia);
document.getElementById('res-saude').textContent = formatCurrency(saude);
document.getElementById('res-educacao').textContent = formatCurrency(educacao);
document.getElementById('res-pensao').textContent = formatCurrency(pensao);
document.getElementById('res-outras-deducoes-completo').textContent = formatCurrency(outrasDeducoes);
document.getElementById('res-desconto-simplificado-completo').textContent = formatCurrency(descontoSimplificado);
document.getElementById('res-base-calculo-completo').textContent = formatCurrency(baseCalculo);
document.getElementById('res-imposto-completo').textContent = formatCurrency(imposto);
document.getElementById('res-retido-completo').textContent = formatCurrency(retidoFonte);
document.getElementById('res-total-completo').textContent = formatCurrency(Math.abs(resultado));
// Style based on result
const totalElement = document.getElementById('res-total-type-completo');
if (resultado > 0) {
totalElement.className = 'result-item total payable';
totalElement.querySelector('span:first-child').textContent = 'Valor a Pagar:';
} else if (resultado < 0) {
totalElement.className = 'result-item total refund';
totalElement.querySelector('span:first-child').textContent = 'Restituição:';
} else {
totalElement.className = 'result-item total';
totalElement.querySelector('span:first-child').textContent = 'Nada a pagar ou restituir';
}
// Show results
document.getElementById('resultado-completo').classList.add('active');
}
});
</script>