Skip to content

Instantly share code, notes, and snippets.

@rodrigophpweb
Last active April 10, 2024 14:53
Show Gist options
  • Save rodrigophpweb/b9fc1ea440e8b9b2eb2e32282e092edb to your computer and use it in GitHub Desktop.
Save rodrigophpweb/b9fc1ea440e8b9b2eb2e32282e092edb to your computer and use it in GitHub Desktop.
Calculo do Simples Nacional JavaScript usando anexo 3 e anexo 5
function calcularSimplesNacional(faturamento12Meses, gastoFolhaSalarial) {
const anexo3 = [
{ limite: 180000, aliquota: 0.06, deduzir: 0 },
{ limite: 360000, aliquota: 0.112, deduzir: 9360 },
{ limite: 720000, aliquota: 0.135, deduzir: 17640 },
{ limite: 1800000, aliquota: 0.16, deduzir: 35640 },
{ limite: 3600000, aliquota: 0.21, deduzir: 125640 },
{ limite: Infinity, aliquota: 0.33, deduzir: 648000 },
];
const anexo5 = [
{ limite: 180000, aliquota: 0.155, deduzir: 0 },
{ limite: 360000, aliquota: 0.18, deduzir: 4500 },
{ limite: 720000, aliquota: 0.195, deduzir: 9900 },
{ limite: 1800000, aliquota: 0.205, deduzir: 17100 },
{ limite: 3600000, aliquota: 0.23, deduzir: 62100 },
{ limite: Infinity, aliquota: 0.305, deduzir: 540000 },
];
const faturamentomensal = faturamento12Meses / 12;
const fatorR = gastoFolhaSalarial / faturamento12Meses;
const tabelaAliquotas = fatorR >= 0.28 ? anexo3 : anexo5;
let aliquotaEfetiva = 0;
let valorDeduzirEfetivo = 0;
for (const { limite, aliquota, deduzir } of tabelaAliquotas) {
if (faturamento12Meses <= limite) {
aliquotaEfetiva = ((faturamento12Meses * aliquota) - deduzir) / faturamento12Meses;
valorDeduzirEfetivo = deduzir;
break;
}
}
const simplesNacional = faturamentomensal * aliquotaEfetiva;
return simplesNacional;
}
function atualizarCampoTexto() {
const faturamento12Meses = parseInt(document.querySelector('input[name="currency-1"]').value);
const gastoFolhaSalarial = parseInt(document.querySelector('input[name="currency-2"]').value);
if (!isNaN(faturamento12Meses) && !isNaN(gastoFolhaSalarial)) {
const faturamentomensal = faturamento12Meses / 12;
const impostoSimplesNacional = calcularSimplesNacional(faturamento12Meses, gastoFolhaSalarial);
const pis = faturamentomensal * 0.0065;
const cofins = faturamentomensal * 0.03;
const irpj = ((faturamentomensal * 0.08) * 0.15) / 3;
const csll = ((faturamentomensal * 0.12) * 0.09) / 3;
const cpp = gastoFolhaSalarial * 0.2;
const iss = faturamentomensal * 0.02;
const ce_impostoTotal = pis + cofins + irpj + csll + cpp + iss;
const economia = ((impostoSimplesNacional - ce_impostoTotal) / impostoSimplesNacional) * 100;
const resposta = `Baseado nos dados informados, você paga mensalmente o valor aproximado de R$ ${impostoSimplesNacional.toFixed(2)}. Com a nossa consultoria você reduziria esse valor para R$ ${ce_impostoTotal.toFixed(2)}, esse valor corresponde a uma economia de ${economia.toFixed(2)}%`;
document.querySelector('input[name="text-1"]').value = resposta;
}
}
//document.querySelector('input[name="text-1"]').style.display = 'none';
document
.querySelectorAll('input[name="currency-1"], input[name="currency-2"]')
.forEach(function(input) {
input.addEventListener('change', atualizarCampoTexto);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment