Ir para conteúdo
Fórum Script Brasil

fabianodesilva

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que fabianodesilva postou

  1. Sei que é antigo o post mas fiquei anos tentando achar uma solução pra esse problema: Esse script é para as tabelas de 2021 a partir de janeiro Na verdade é uma classe para ser usado como um MODEL para framework MVC como larável e Yii, mas dá pra adaptar pra usar sem framework. calculo_inss_ir.php <?php /** * * Fabiano da Silva * fabianodesilva@gmail.com * * Nessa classe calculo_inss_ir conseguimos obter os valores de calculo do INSS e IR 2021 tanto normal como ao contrário * No modo normal obtemos o os valores da seguinte forma: * * * Salário Contribuição | Alíquota | Parcela a Deduzir * Até R$ 1.100,00 | 7,5 % | R$ 0,000 * De R$ 1.101,01 até R$ 2.203,48 | 9 % | R$ 16,500 * De R$ 2.203,49 até R$ 3.305,22 | 12 % | R$ 82,604 * De R$ 3.305,23 até R$ 6.433,57 | 14 % | R$ 148,708 * * * 1ª faixa salarial: R$ 1.100,00 x 7,5% = R$ 82,50 * 2ª faixa salarial: (R$ 2.203,48 – R$ 1.100,01) x 9% = R$ 1.044,60 x 9% = R$ 99,31 * 3ª faixa salarial: (R$ 3.305,22 – R$ 2.203,49) x 12% = R$ 1.101,73 x 12% = R$ 132,21 * 4ª faixa salarial: (R$ 6.433,57 – R$ 3.305,23) x 14% = R$ 3.128,34 x 14% = R$ 437,97 * Total máximo a recolher: R$ 82,50 + R$ 99,31 + R$ 132,21 + R$ 437,97 = R$ 751,99 * Como você pode perceber, a contribuição para o INSS tem um teto de contribuição, que é de R$ 6.433,57. A parte do salário que ultrapassar esse * teto fica isenta, o que significa dizer que um salário de 7 mil reais terá o mesmo valor de desconto de INSS que um salário de 20 mil reais, * que será de R$ 751,99. * * * Tabela IRRF * Base de Cálculo Mensal | Alíquota | Parcela a Deduzir * Até R$ 1.903,98 isento R$ 0,00 | | * De R$ 1.903,99 até R$ 2.826,65 | 7,5 % | R$ 142,80 * De R$ 2.826,66 até R$ 3.751,05 | 15 % | R$ 354,80 * De R$ 3.751,06 até R$ 4.664,68 | 22,5 % | R$ 636,13 * Acima de R$ 4.664,68 | 27,5 % | R$ 869,36 * * * IRRF = BC * aliquota - parcela a deduzir * * Agora quando você só tem o valor liquido e quer obter o valor bruto aonde foi descontado IR e INSS? * Veja * Para obter somente o valor bruto do INSS através de um liquido * Use a função getInss($valor) * EX: echo getInss(2500) * * Para obter somente o valor do IRRF através de um liquido * Use a função getIR($valor) * EX: echo IrInss::getIr(2500) * * Se o valor liquido é fruto de um desconto de IR e INSS juntos faça: * * $valorliquido =2500; * $vIr=calculo_inss_ir::getIr($valorliquido); //essa funcao retorna o IR e o valor da base de calulo * $bc=$vIr[0]; * $ir=$vIr[1]; * * O valor bruto obtido na função getIr(Base de Cáuculo) é o liquido do INSS, então pegamos ele e jogamos nessa função * $vInss=calculo_inss_ir::getInss($bc); //essa funcao retorna o INSS e o valor da Bruto * $inss=$vInss[0]; * $bruto=$vInss[1]; * * Descobrindo bruto atráves do Liquido * * echo "Base de Cálculo IRRF<br/>"; * echo Yii::$app->formatter->asCurrency($bc)."<br/>"; * * echo "Valor do IRRF<br/>"; * echo Yii::$app->formatter->asCurrency($ir)."<br/>"; * * echo "Valor do INSS<br/>"; * echo Yii::$app->formatter->asCurrency($inss)."<br/>"; * * echo "Valor Bruto Obtido<br/>"; * echo Yii::$app->formatter->asCurrency($bruto)."<br/>"; * * * //Contra Prova * $Vinss=calculo_inss_ir::CalculaInss($bruto); * $baseCalculoIr=$Vinss[1]; * $valorinss=$Vinss[0]; * $vIrrf=calculo_inss_ir::CalculaIr($baseCalculoIr); * * echo "---------------------------------------------------------------<br/>"; * echo "Contra Prova<br/><br/>"; * echo "Base de Cálculo IRRF<br/>"; * echo Yii::$app->formatter->asCurrency($baseCalculoIr)."<br/>"; * echo "Valor do IRRF<br/>"; * echo Yii::$app->formatter->asCurrency($vIrrf)."<br/>"; * echo "Valor do INSS<br/>"; * echo Yii::$app->formatter->asCurrency($valorinss)."<br/>"; * echo "Valor Bruto Obtido<br/>"; * echo Yii::$app->formatter->asCurrency($baseCalculoIr+$valorinss)."<br/>"; * * */ //Retorna O valor bruto do INSS public function getInss($valor){ require 'faixasIrInss.php'; if( $valor <= $tetoFinalInss1*(1-$aliquotaInss1) ){ $valorBruto=$valor/(1-$aliquotaInss1); $valorInss = ($valorBruto) * ($aliquotaInss1); return [$valorInss,$valorBruto]; } else if( $valor <= (($tetoFinalInss2-$tetoinicialInss2) * (1-$aliquotaInss2)+$tetoFinalInss1 * (1-$aliquotaInss1)) ){ $valorBruto=($valor-$tetoinicialInss2 * $aliquotaInss2 + $tetoFinalInss1 * $aliquotaInss1)/(1-$aliquotaInss2); $valorInss = ($valorBruto -$tetoinicialInss2) * $aliquotaInss2 + 82.50; return [$valorInss,$valorBruto]; } else if( $valor <= (($tetoFinalInss3-$tetoinicialInss3) * (1-$aliquotaInss3)+($tetoFinalInss2-$tetoinicialInss2)*(1-$aliquotaInss2)+($tetoFinalInss1*(1-$aliquotaInss1))) ){ $valorBruto=($valor-$tetoinicialInss2 * $aliquotaInss2 - $tetoFinalInss2 * $aliquotaInss3+$tetoFinalInss1*$aliquotaInss1+$tetoFinalInss2*$aliquotaInss2)/(1-$aliquotaInss3); $valorInss = ($valorBruto -$tetoinicialInss3) * $aliquotaInss3 + 82.50+99.31; return [$valorInss,$valorBruto]; }else if( $valor <= (($tetoFinalInss4-$tetoinicialInss4) * (1-$aliquotaInss4)+($tetoFinalInss3-$tetoinicialInss3)*(1-$aliquotaInss3)+($tetoFinalInss2-$tetoinicialInss2)*(1-$aliquotaInss2)+($tetoFinalInss1*(1-$aliquotaInss1)))){ $valorBruto=($valor-$tetoFinalInss1 * $aliquotaInss2 - $tetoFinalInss2 * $aliquotaInss3-$tetoFinalInss3*$aliquotaInss4+$tetoFinalInss1*$aliquotaInss1+$tetoFinalInss2*$aliquotaInss2+$tetoFinalInss3*$aliquotaInss3)/(1-$aliquotaInss4); $valorInss = ($valorBruto -$tetoinicialInss4) * $aliquotaInss4 + 82.50+99.31+132.21; return [$valorInss,$valorBruto]; } else if( $valor > (($tetoFinalInss4-$tetoinicialInss4) * (1-$aliquotaInss4)+($tetoFinalInss3-$tetoinicialInss3)*(1-$aliquotaInss3)+($tetoFinalInss2-$tetoinicialInss2)*(1-$aliquotaInss2)+($tetoFinalInss1*(1-$aliquotaInss1))) ){ $valorBruto=($valor+751.99); $valorInss = 751.99; return [$valorInss,$valorBruto]; } } //Retorna O valor bruto do IRRF public function getIr($valor){ require 'faixasIrInss.php'; if( $valor <= $tetoIncialIR_1){ $ir = 0; $valorBruto = 0; return [$valorBruto, $ir]; } else if( ($valor-$dedu2IR)/(1-$aliq2IR) <= $tetoFinalIR_2){ $ir =($valor-$dedu2IR)/(1-$aliq2IR)*$aliq2IR-$dedu2IR; $valorBruto=($valor-$dedu2IR)/(1-$aliq2IR); //return $ir; return [$valorBruto, $ir]; } else if( ($valor-$dedu3IR)/(1-$aliq3IR) <= $tetoFinalIR_3){ $ir =($valor-$dedu3IR)/(1-$aliq3IR)*$aliq3IR-$dedu3IR; $valorBruto=($valor-$dedu3IR)/(1-$aliq3IR); //return $ir; return [$valorBruto, $ir]; } else if( ($valor-$dedu4IR)/(1-$aliq4IR) <= $tetoFinalIR_4){ $ir =($valor-$dedu4IR)/(1-$aliq4IR)*$aliq4IR-$dedu4IR; $valorBruto=($valor-$dedu4IR)/(1-$aliq4IR); //return $ir; return [$valorBruto, $ir]; } else if( ($valor-$dedu5IR)/(1-$aliq5IR) > $tetoFinalIR_5){ $ir =($valor-$dedu5IR)/(1-$aliq5IR)*$aliq5IR-$dedu5IR; $valorBruto=($valor-$dedu5IR)/(1-$aliq5IR); //return $ir; return [$valorBruto, $ir]; } } //Função para calculo normal do IRRF public function CalculaIr($valor){ require 'faixasIrInss.php'; if($valor<=$tetoIncialIR_1){ $vIr = 0; return $vIr; } if($valor<=$tetoFinalIR_2){ $vIr = ($valor - $tetoIncialIR_2) * $aliq2IR; return $vIr; } if($valor<=$tetoFinalIR_3){ $vIr = ($valor - $tetoIncialIR_3) * $aliq3IR + ($tetoFinalIR_2 - $tetoIncialIR_2) * $aliq2IR; return $vIr; } if($valor<=$tetoFinalIR_4){ $vIr = ($valor - $tetoIncialIR_4) * $aliq4IR + ($tetoFinalIR_3 - $tetoIncialIR_3) * $aliq3IR + ($tetoFinalIR_2 - $tetoIncialIR_2) * $aliq2IR; return $vIr; } if($valor > $tetoFinalIR_5){ $vIr = ($valor * $aliq5IR) -$dedu5IR; return $vIr; } } //Função para calculo normal do INSS public function CalculaInss($valor){ require 'faixasIrInss.php'; if($valor<=$tetoFinalInss1){ $vInss = $valor * $aliquotaInss1; $bcIr=$valor-$vInss; return [$vInss, $bcIr]; } if($valor<=$tetoFinalInss2){ $vInss = ( $valor-$tetoinicialInss2 )* $aliquotaInss2+82.50; $bcIr=$valor-$vInss; return [$vInss, $bcIr]; } if($valor<=$tetoFinalInss3){ $vInss = ($valor-$tetoinicialInss3) * $aliquotaInss3+82.50+99.31; $bcIr=$valor-$vInss; return [$vInss, $bcIr]; } if($valor<=$tetoFinalInss4){ $vInss = ($valor - $tetoinicialInss4) * $aliquotaInss4 + 82.50+99.31+132.21; $bcIr=$valor-$vInss; return [$vInss, $bcIr]; } if($valor > $tetoFinalInss4){ $vInss = 82.50+99.31+132.21+437.97; $bcIr=$valor-$vInss; return [$vInss, $bcIr]; } } ?> faixasIrInss.php <?php //Faixas salariais INSS //Valores tambem podem vir do banco $tetoinicialInss1 = 0; $tetoinicialInss2 = 1100.01; $tetoinicialInss3 = 2203.49; $tetoinicialInss4 = 3305.23; $tetoFinalInss1 = 1100; $tetoFinalInss2 = 2203.48; $tetoFinalInss3 = 3305.22; $tetoFinalInss4 = 6433.57; //Percentual Deducao $aliquotaInss1 = 0.075; $aliquotaInss2 = 0.09; $aliquotaInss3 = 0.12; $aliquotaInss4 = 0.14; //------------------------------------------------------------------------------ //IRRF Faixas Salariais $tetoIncialIR_1 = 1903.98; $tetoIncialIR_2 = 1903.99; $tetoIncialIR_3 = 2826.66; $tetoIncialIR_4 = 3751.06; $tetoIncialIR_5 = 4664.68; $tetoFinalIR_1 = 0; $tetoFinalIR_2 = 2826.65; $tetoFinalIR_3 = 3751.05; $tetoFinalIR_4 = 4664.68; $tetoFinalIR_5 = 4664.69; //Percentuais $aliq1IR = 0; $aliq2IR = 0.075; $aliq3IR = 0.15; $aliq4IR = 0.225; $aliq5IR = 0.275; //Deducoes $dedu1IR = 0; $dedu2IR = 142.80; $dedu3IR = 354.80; $dedu4IR = 636.13; $dedu5IR = 869.36; ?> Testando: teste.php <?php $valorliquido =2500; $vIr=calculo_inss_ir::getIr($valorliquido); //essa funcao retorna o IR e o valor da base de calulo $bc=$vIr[0]; $ir=$vIr[1]; //O valor bruto obtido do IRRF(Base de Cáuculo) é o liquido do INSS então pegamos ele e jogamos nessa função $vInss=calculo_inss_ir::getInss($bc); //essa funcao retorna o INSS e o valor da Bruto $inss=$vInss[0]; $bruto=$vInss[1]; //Descobrindo bruto atráves do Liquido echo "Valor Liquido Informado<br/>"; echo Yii::$app->formatter->asCurrency($valorliquido)."<br/>"; echo "Base de Cálculo IRRF<br/>"; echo Yii::$app->formatter->asCurrency($bc)."<br/>"; echo "Valor do IRRF<br/>"; echo Yii::$app->formatter->asCurrency($ir)."<br/>"; echo "Valor do INSS<br/>"; echo Yii::$app->formatter->asCurrency($inss)."<br/>"; echo "Valor Bruto Obtido<br/>"; echo Yii::$app->formatter->asCurrency($bruto)."<br/>"; //Contra Prova $Vinss=calculo_inss_ir::CalculaInss($bruto); $baseCalculoIr=$Vinss[1]; $valorinss=$Vinss[0]; $vIrrf=calculo_inss_ir::CalculaIr($baseCalculoIr); echo "---------------------------------------------------------------<br/>"; echo "Contra Prova<br/><br/>"; echo "Valor Bruto Obtido<br/>"; echo Yii::$app->formatter->asCurrency($baseCalculoIr+$valorinss)."<br/>"; echo "Valor do INSS<br/>"; echo Yii::$app->formatter->asCurrency($valorinss)."<br/>"; echo "Base de Cálculo IRRF<br/>"; echo Yii::$app->formatter->asCurrency($baseCalculoIr)."<br/>"; echo "Valor do IRRF<br/>"; echo Yii::$app->formatter->asCurrency($vIrrf)."<br/>"; echo "Valor Liquido <br/>"; echo Yii::$app->formatter->asCurrency($valorliquido)."<br/>"; ?>
×
×
  • Criar Novo...