Pitch: Como transformei as regras da CLT em um algoritmo Python
Fala, pessoal!
Recentemente resolvi criar uma nova ferramenta utilitária para o meu blog e acabei esbarrando num desafio de regra de negócio muito interessante:
- calcular uma rescisão de contrato CLT.
Para quem já precisou ler a legislação trabalhista, sabe que ela é cheia de particularidades. Para a lógica de programação, o maior desafio não está nas operações matemáticas em si, mas sim no controle rigoroso das frações de tempo.
O pulo do gato está na famosa "regra dos 15 dias". Uma fração igual ou superior a 15 dias de trabalho no mês quebrado dá ao empregado o direito a 1/12 extra de férias e de 13º salário. Além disso, existe o cálculo do aviso prévio proporcional, que exige o acréscimo de 3 dias para cada ano completo trabalhado limitado a 90 dias.
Dessa forma decidi estruturar um algoritmo em Python. Separei as regras trabalhistas em funções modulares. Por exemplo, a lógica de cálculo de férias proporcionais ficou com esse formato para lidar com os meses fechados e o mês "quebrado":
def calcular_ferias_proporcionais(adm, dem, salario):
anos = dem.year - adm.year
meses = dem.month - adm.month
dias = dem.day - adm.day
if dias < 0:
meses -= 1
if meses < 0:
anos -= 1
meses += 12
meses_trabalhados = (anos * 12) + meses
meses_ferias = meses_trabalhados % 12
if dias >= 15:
meses_ferias += 1
meses_ferias = min(meses_ferias, 12)
base_ferias = (salario / 12) * meses_ferias
um_terco = base_ferias / 3
return base_ferias + um_terco
Outro ponto crítico foi criar condicionais pois se o motivo da rescisão for justa causa, o código aborta imediatamente a soma de 13º e férias proporcionais. Além disso, precisei implementar um max(0, total_receber) no retorno final. Afinal, se o funcionário pede demissão e falta no aviso prévio, os descontos podem superar os ganhos matematicamente, mas juridicamente o trabalhador não pode "sair devendo" a empresa.
Lá, eu também traduzi essa lógica para o Front-end e criei a calculadora online rodando na prática, onde você pode preencher os dados e ver a mágica acontecer em tempo real.
Link da acesso a calculadora e a explicação do código: https://descomplicandoalgoritmos.com.br/calculadora-de-rescisao-clt