Last active
April 18, 2024 16:47
-
-
Save elias19r/f2057620c647917657a5da41a43419bf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Informe aqui as receitas brutas mensais (faturamentos) | |
receitas_brutas_mensais = [ | |
9_999.99, | |
] | |
cliente_reside_no_exterior = true | |
prolabore_atual = nil | |
# Salve e rode no terminal: ruby meus_impostos_pj.rb | |
# ============================================================================== | |
# Definições | |
# ============================================================================== | |
# Receita bruta no Período da Apuração (RPA) (ou seja, o faturamento atual) | |
rpa = receitas_brutas_mensais.last | |
# Receita Bruta nos últimos 12 meses anteriores (RBT12) | |
rbt12 = begin | |
lista = receitas_brutas_mensais.dup | |
case lista.length | |
when 0 then 0 | |
when 1 | |
lista.first * 12.0 | |
when 2..12 | |
lista.pop | |
(lista.sum / lista.length) * 12.0 | |
else | |
lista = lista.last(13) | |
lista.pop | |
lista.sum | |
end | |
end.round(2) | |
salario_minimo = 1_412.00 | |
# Tabela para cálculo do Imposto de Renda de Pessoa Física | |
# Ref: https://www.gov.br/receitafederal/pt-br/assuntos/meu-imposto-de-renda/tabelas/2023 | |
tabela_irpf = [ | |
# Salário Base Alíquota Dedução | |
[ 2_112.00, 0.0000, 0.00 ], | |
[ 2_826.65, 0.0750, 158.40 ], | |
[ 3_751.05, 0.1500, 370.40 ], | |
[ 4_664.68, 0.2250, 651.73 ], | |
[ Float::INFINITY, 0.2750, 884.96 ], | |
] | |
# Anexos do Simples Nacional | |
anexos = [ | |
{ | |
numero: 3, # Ref: https://www.qipu.com.br/simples-nacional/anexo-3/ | |
prolabore: prolabore_atual || begin | |
valor = (0.28 * rpa).ceil # 28% do Faturamento Atual (RPA) | |
valor > salario_minimo ? valor : salario_minimo | |
end, | |
tabela: [ | |
# RBT12 Limite Alíquota PD IRPJ CSLL COFINS PIS CPP ISS | |
[ 180_000.00, 0.060, 0.00, 0.0400, 0.0350, 0.1282, 0.0278, 0.4340, 0.3350 ], | |
[ 360_000.00, 0.112, 9_360.00, 0.0400, 0.0350, 0.1405, 0.0305, 0.4340, 0.3200 ], | |
[ 720_000.00, 0.135, 17_640.00, 0.0400, 0.0350, 0.1364, 0.0296, 0.4340, 0.3250 ], | |
[ 1_800_000.00, 0.160, 35_640.00, 0.0400, 0.0350, 0.1364, 0.0296, 0.4340, 0.3250 ], | |
] | |
}, | |
{ | |
numero: 5, # Ref: https://www.qipu.com.br/simples-nacional/anexo-5/ | |
prolabore: prolabore_atual || salario_minimo, | |
tabela: [ | |
# RBT12 Limite Alíquota PD IRPJ CSLL COFINS PIS CPP ISS | |
[ 180_000.00, 0.155, 0.00, 0.2500, 0.1500, 0.1410, 0.0305, 0.2885, 0.1400 ], | |
[ 360_000.00, 0.180, 4_500.00, 0.2300, 0.1500, 0.1410, 0.0305, 0.2785, 0.1700 ], | |
[ 720_000.00, 0.195, 9_900.00, 0.2400, 0.1500, 0.1492, 0.0323, 0.2385, 0.1900 ], | |
[ 1_800_000.00, 0.205, 17_100.00, 0.2100, 0.1500, 0.1574, 0.0341, 0.2385, 0.2100 ], | |
] | |
} | |
] | |
# ============================================================================== | |
# Cálculos | |
# ============================================================================== | |
puts " | |
============================================================================= | |
Receita bruta no Período da Apuração (RPA): #{rpa} | |
Receita Bruta nos últimos 12 meses anteriores (RBT12): #{rbt12} | |
============================================================================= | |
" | |
anexos.each do |anexo| | |
# Encontra faixa na tabela e pega valores | |
_, aliquota, parcela_deduzir, fator_irpj, fator_csll, fator_cofins, fator_pis, fator_cpp, fator_iss = | |
anexo[:tabela].find do |(rbt12_limite, _)| | |
rbt12 <= rbt12_limite | |
end | |
# Cálculo da Alíquota Efetiva | |
aliquota_efetiva = rbt12.zero? ? aliquota : aliquota - (parcela_deduzir / rbt12) | |
# Valor base do DAS (Documento de Arrecadação do Simples Nacional) | |
das_base = rpa * aliquota_efetiva | |
# Impostos do DAS | |
das_irpj = (das_base * fator_irpj).round(2) | |
das_csll = (das_base * fator_csll).round(2) | |
das_cofins = (das_base * fator_cofins).round(2) | |
das_pis = (das_base * fator_pis).round(2) | |
das_inss = (das_base * fator_cpp).round(2) | |
das_iss = (das_base * fator_iss).round(2) | |
if cliente_reside_no_exterior | |
das_cofins = 0.0 | |
das_pis = 0.0 | |
das_iss = 0.0 | |
end | |
# Impostos sobre Pró-labore | |
# INSS. Ref: https://www.contabilizei.com.br/contabilidade-online/calcular-pro-labore/#quais-impostos-os-socios-pagam | |
prolabore_inss = (0.11 * anexo[:prolabore]).round(2) | |
# IRPF. Ref: https://fdr.com.br/artigos/salario-liquido-aprenda-a-calcular-os-descontos-do-ir-inss-e-vt-do-seu-salario/ | |
prolabore_irpf = begin | |
base = anexo[:prolabore] - prolabore_inss | |
_, aliquota_irpf, deducao_irpf = tabela_irpf.find do |(salario_base, _)| | |
base <= salario_base | |
end | |
(base * aliquota_irpf - deducao_irpf).round(2) | |
end | |
total_das = (das_irpj + das_csll + das_cofins + das_pis + das_inss + das_iss).round(2) | |
total_prolabore = (prolabore_inss + prolabore_irpf).round(2) | |
total_impostos = (total_das + total_prolabore).round(2) | |
percentual_impostos_sobre_faturamento_atual = ((total_impostos / rpa) * 100.0).round(2) | |
puts " | |
============================================================================= | |
Anexo #{anexo[:numero]} | |
----------------------------------------------------------------------------- | |
- Alíquota: #{(aliquota * 100.0).round(2)} | |
- Alíquota Efetiva: #{(aliquota_efetiva * 100.0).round(2)} | |
----------------------------------------------------------------------------- | |
Impostos do DAS (Total #{total_das}) | |
- IRPJ: #{das_irpj} | |
- CSLL: #{das_csll} | |
- COFINS: #{das_cofins} | |
- PIS: #{das_pis} | |
- INSS: #{das_inss} | |
- ISS: #{das_iss} | |
----------------------------------------------------------------------------- | |
Impostos sobre Pró-labore bruto de #{anexo[:prolabore]} (Total #{total_prolabore}) | |
- INSS (GPS): #{prolabore_inss} | |
- IRPF (DARF): #{prolabore_irpf} | |
----------------------------------------------------------------------------- | |
Total de Impostos | |
#{total_impostos} | |
----------------------------------------------------------------------------- | |
Percentual de Impostos sobre Faturamento Atual (RPA) | |
#{percentual_impostos_sobre_faturamento_atual}% | |
============================================================================= | |
" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment