Hoje vamos mostrar como é feito o cálculo do INSS e do Imposto de Renda e usaremos como ferramenta uma função em Shell Script .
Quando você precisa saber quando é recolhido seu quando você trabalha mensalmente para o INSS e o IRRF ou IR ou a até mesmo, mais conhecido como Imposto de Renda .
Para o INSS há umas faixas de contribuição e o TETO máximo , bem como também para o IRRF !
Verifique, baixe e execute o script/função abaixo e leia os comentários ( linhas iniciadas com # ) para entendimento.
Como nosso intuito aqui é mais o Shell Script do que, não menos importante , a Contabilização , segue a função/script , e não esqueça de consultar os links úteis para melhor entendimento e informação!
-s para p salário;
-d para dependentes;
-h para dúvidas.
./imposto.sh -s 2.500,84 -d 1
A saída será mais ou menos isso, com detalhamento do INSS, IR e outros
Para dúvidas
./imposto.sh -h
Ou
./imposto.sh --helper
irrf.sh
#!/bin/bash
#
# NOME : imposto.sh - Faz o cálculo do IRRF (Imposto de Renda Retido na Fonte)
#
# SINOPSE : ./imposto.sh -s [SALARIO] -d [DEPENDENTES]
# ou
# ./imposto.sh --salario [SALARIO] --dependentes [DEPENDENTES]
#
# DESCRICAO : É necessário passar o -s e o -d com seus respectivos valores
#
# EXEMPLO : $ ./imposto.sh -s 2.500,84 -d 4
#
# AUTHOR : Marcos da B. M. Oliveira <binbash@linuxmail.org>
#
# VERSAO : v1.0 2015-12-13
#
# REPORTING BUGS: <http://www.terminalroot.com.br/>
#
# COPYRIGHT : Copyright © 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later
# <http://gnu.org/licenses/gpl.html>.
# This is free software: you are free to change and redistribute it. There is NO WARRANTY,
# to the extent permitted by law.
#
# DEPENDENCIAS : sed, bc
#
#Valida fomatação
valida(){
if [ -z $1 ] ; then
echo " $0 : falta operando" ;
echo "Tente ' $0 -h ou --help' para mais informações." ;
exit 1
fi
if [ $1 = "-h" ] || [ $1 = "--help" ] ; then
sed -n '2,$s/^# //p' $0
exit 1
fi
case $1 in
-s | --salario )
SAL = $2
DEP = $4
;;
-d | --dependentes )
DEP = $2
SAL = $4
;;
* ) echo "Erro."
exit 1;
;;
esac
}
#faz o cálculo dos dependentes
dependentes(){
CAL = "18959" ;
DEP = $( echo " $DEP * $CAL " | bc) ;
NDEP = $( echo " $DEP / $CAL " | bc) ;
}
#formata números para moeda real brasileiro
formata_num(){
NUM = $2 ;
E2 = $( echo $NUM | rev | cut -c1-2 | rev) ;
E1 = $( echo $NUM | rev | cut -c3- | rev) ;
if [ " ${# E1 } " -gt 3 ] ; then
ONE = $( echo $E1 | rev | cut -c1-3 | rev) ;
TWO = $( echo $E1 | rev | cut -c4- | rev) ;
NUM = " $TWO . $ONE , $E2 " ;
else
if [ -z $E1 ] ; then
NUM = "0" ;
else
NUM = " $E1 , $E2 " ;
fi
fi
echo -e " $1 $NUM "" \0 33[0m" ;
}
#Encontra a porcentagem do INSS
inss(){
# caso o usuario digite só 1 numero depois da vírgula
if [ " $( echo $SAL | grep '\,' ) " ] ; then
A = $( echo $SAL | cut -d , -f2 ) ;
if [ ${# A } -lt 2 ] ; then
echo "Formato do número inválido" ;
exit 1;
fi
fi
# caso o usuario digite só 1 numero depois do ponto
if [ " $( echo $SAL | grep '\.' ) " ] ; then
B = $( echo $SAL | cut -d . -f2 ) ;
if [ ${# B } -lt 2 ] ; then
echo "Formato do número inválido" ;
exit 1;
fi
fi
# elimina ponto e virgula do salario para poder efetuar validação e calculo posteriormente
SAL = $( echo $SAL | tr -d '. ,' ) ;
# se o usuario nao digitar o ',00' ou ',' põe o ',00' para quantidade de algarismos menores que 5
if [ ! " $( echo $SAL | grep '\, ' ) " ] && [ " ${# SAL } " -lt 6 ] && [ ! " $( echo $SAL | grep '\. ' ) " ] ; then
SAL = $SAL "00" ;
fi
# Valores da tabela para cálculo do INSS
MIN = "139912" ;
MED = "233188" ;
MAX = "466375" ;
if [ " $SAL " -le " $MIN " ] ; then
INSS = $( echo "( $SAL * 8)/100" | bc) ;
elif [ " $SAL " -gt " $MIN " ] && [ " $SAL " -le " $MED " ] ; then
INSS = $( echo "( $SAL * 9)/100" | bc) ;
elif [ " $SAL " -gt " $MED " ] && [ " $SAL " -le " $MAX " ] ; then
INSS = $( echo "( $SAL * 11)/100" | bc) ;
else
INSS = $( echo "(466375* 11)/100" | bc) ;
fi
}
#Encontra o valor da base para multiplicar à alíquota
base(){
#base para aliquota e parcela a deduzir
BASE = $( echo " $SAL - $DEP - $INSS " | bc) ;
#cria variaveis para validação , eliminado os . e , baseado no valor inteiro
MIN = "190398" ;
MED = "282665" ;
SUB = "375105" ;
MAX = "466468" ;
if [ " $BASE " -le " $MIN " ] ; then
QUOTA = "0" ;
PARC = "0" ;
elif [ " $BASE " -gt " $MIN " ] && [ " $BASE " -le " $MED " ] ; then
QUOTA = "7.5" ;
PARC = "14280" ;
elif [ " $BASE " -gt " $MED " ] && [ " $BASE " -le " $SUB " ] ; then
QUOTA = "15" ;
PARC = "35480" ;
elif [ " $BASE " -gt " $SUB " ] && [ " $BASE " -le " $MAX " ] ; then
QUOTA = "22.5" ;
PARC = "63613" ;
elif [ " $BASE " -gt " $MAX " ] ; then
QUOTA = "27.5" ;
PARC = "86936" ;
else
echo "Erro. Salário incorreto." ;
exit 1
fi
}
#chama demais funções para encontrar desejados valores e fazer o cálculo do IRRF
#encontra o valor do Imposto de Renda para depois subtrair pela parcela a deduzir
irrf(){
valida $*
dependentes
inss
base
VALOR = $( echo "( $BASE * $QUOTA ) / 100" | bc) ;
IRRF = $( echo " $VALOR - $PARC " | bc) ;
echo
echo "|--------------------------------------------------------|" ;
formata_num "|Salário: R$" $SAL ;
echo "|--------------------------------------------------------|" ;
echo "|N° Dependente(s): $NDEP " ;
echo "|--------------------------------------------------------|" ;
formata_num "|INSS: R$" $INSS ;
echo "|--------------------------------------------------------|" ;
echo "|Alíquota: $QUOTA %" ;
echo "|--------------------------------------------------------|" ;
formata_num "|Parcela a deduzir: R$" $PARC ;
echo "|--------------------------------------------------------|" ;
if [ " $IRRF " -eq "0" ] ; then
echo -e "| \0 33[0;1mImposto de renda à recolher: ISENTO \0 33[0m" ;
echo "|--------------------------------------------------------|" ;
else
formata_num "| \0 33[0;1mImposto de renda à recolher: R$" $IRRF ;
echo -e "|--------------------------------------------------------|" ;
fi
echo
exit 0
}
#Chama a função que irá pegar os dados e gerar o valor do IRRF
irrf $*
Links Úteis
https://is.gd/LblNpV
http://www.previdencia.gov.br/servicos-ao-cidadao/todos-os-servicos/gps/tabela-contribuicao-mensal/
http://idg.receita.fazenda.gov.br/acesso-rapido/tributos/irpf-imposto-de-renda-pessoa-fisica
http://economia.uol.com.br/empregos-e-carreiras/noticias/redacao/2013/01/01/imposto-de-renda-e-inss-entenda-os-descontos-no-seu-salario.htm
http://www.calculador.com.br
https://pt.wikipedia.org/wiki/Imposto_de_Renda_de_Pessoa_F%C3%ADsica
http://www.receita.fazenda.gov.br/PessoaFisica/IRPF/
http://www.receita.fazenda.gov.br/Aplicacoes/ATRJO/Simulador/simulador.asp?tipoSimulador=M
http://www.dpc.com.br/pt-br/show/tabela-progressiva-do-imposto-de-renda
Valeu até a próxima!
bash
shellscript
contabeis
freesoftware
opensource
gnu
terminal
terminalroot
Marcos Oliveira
Desenvolvedor de software