import pandas as pd # Valores de Junio 2022 TRAMOS = { 777000: 0, 1727000: 0.04, 2878000: 0.08, 4029000: 0.135, 5180000: 0.23, 6906000: 0.304, 17842000: 0.35, 99999999: 0.4, } TRAMOS_REFORMA = { 777000: 0, 1727000: 0.04, 2878000: 0.08, 4030000: 0.135, 5242320: 0.26, 6331000: 0.35, 8057000: 0.40, 99999999: 0.43, } def descomponer_en_tramos(sueldo_bruto, tramos=TRAMOS): """ Descompone un sueldo bruto en tramos de impuesto """ descomp = [] impuestos = [] tramo_anterior = 0 for tramo, descuento in tramos.items(): delta = min(sueldo_bruto, tramo) - tramo_anterior if delta > 0: descomp.append(delta) impuestos.append(int(delta * descuento)) tramo_anterior = tramo return descomp, impuestos def get_table(sueldo_bruto, tramos=TRAMOS): """ Tabla de Impuestos por tramo """ _tramos = [0] + list(tramos.keys()) tasas = tramos.values() data = list( zip( _tramos[:-1], _tramos[1:], tasas, *descomponer_en_tramos(sueldo_bruto, tramos) ) ) df = pd.DataFrame( data=data, columns=["Desde", "Hasta", "Tasa", "Monto sujeto a impuesto", "Impuesto"], ) return df