def test_calculate_bruto_netto_single_arbeider_2000bruto_1child_handicapped_no_family( self): tax_variables = TaxVariables() tax_variables.bruto = 2000.0 tax_variables.marital_status = 'single' tax_variables.handicapped = False tax_variables.partner_income = 0 tax_variables.partner_income_pension_or_interest = False tax_variables.family_members_old = 0 tax_variables.family_members = 0 tax_variables.family_members_old_handicapped = 0 tax_variables.family_members_handicapped = 0 tax_variables.children = 0 tax_variables.children_handicapped = 1 tax_variables.type_worker = 'arbeider' bruto_netto_simulator = BrutoNettoSimulator(tax_variables, 2016) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = bruto_netto_simulator.calculate_netto( ) self.assertEqual(round(rsz, 2), 173.02) self.assertEqual(round(werk_bonus, 2), 109.29) self.assertEqual(round(taxable_wages, 2), 1826.98) self.assertEqual(round(tax, 2), 352.78) self.assertEqual(round(tax_decreases, 2), 188.09) self.assertEqual(round(rsz_extra, 2), 16.31) self.assertEqual(round(netto, 2), 1645.98)
def test_calculate_bruto_netto_single_bediende_2000bruto_not_handicapped_1child_handicapped( self): tax_variables = TaxVariables() tax_variables.bruto = 2000.0 tax_variables.marital_status = 'single' tax_variables.handicapped = False tax_variables.partner_income = 0 tax_variables.partner_income_pension_or_interest = False tax_variables.family_members_old = 0 tax_variables.family_members = 0 tax_variables.family_members_old_handicapped = 0 tax_variables.family_members_handicapped = 0 tax_variables.children = 0 tax_variables.children_handicapped = 1 tax_variables.type_worker = 'bediende' bruto_netto_simulator = BrutoNettoSimulator(tax_variables, 2016) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = bruto_netto_simulator.calculate_netto( ) self.assertEqual(round(rsz, 2), 160.22) self.assertEqual(round(werk_bonus, 2), 101.18) self.assertEqual(round(taxable_wages, 2), 1839.78) self.assertEqual(round(tax, 2), 359.78) self.assertEqual(round(tax_decreases, 2), 185.82) self.assertEqual(round(rsz_extra, 2), 4.15) self.assertEqual(round(netto, 2), 1661.67)
def test_scale1_income_7500_right_boundary_one_child(self): tax_variables = TaxVariables() tax_variables.bruto = 8627.64 tax_variables.marital_status = 'single' tax_variables.handicapped = False tax_variables.partner_income = 0 tax_variables.partner_income_pension_or_interest = False tax_variables.children_handicapped = 0 tax_variables.children = 1 tax_variables.family_members = 0 tax_variables.family_members_handicapped = 0 tax_variables.family_members_old = 0 tax_variables.family_members_old_handicapped = 0 tax_variables.type_worker = 'bediende' bruto_netto_simulator = BrutoNettoSimulator(tax_variables, 2016) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = bruto_netto_simulator.calculate_netto( ) self.assertEqual(round(rsz, 2), 1127.63) self.assertEqual(round(werk_bonus, 2), 0) self.assertEqual(round(taxable_wages, 2), 7500.01) self.assertEqual(round(tax, 2), 3287.26) self.assertEqual(round(tax_decreases, 2), 92) self.assertEqual(round(rsz_extra, 2), 60.94) self.assertEqual(round(netto, 2), 4243.81)
def test_scale1_income_7500_no_boundary(self): tax_variables = TaxVariables() tax_variables.bruto = 8950 tax_variables.marital_status = 'single' tax_variables.handicapped = False tax_variables.partner_income = 0 tax_variables.partner_income_pension_or_interest = False tax_variables.children_handicapped = 0 tax_variables.children = 0 tax_variables.family_members = 0 tax_variables.family_members_handicapped = 0 tax_variables.family_members_old = 0 tax_variables.family_members_old_handicapped = 0 tax_variables.type_worker = 'bediende' bruto_netto_simulator = BrutoNettoSimulator(tax_variables, 2016) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = bruto_netto_simulator.calculate_netto( ) self.assertEqual(round(rsz, 2), 1169.77) self.assertEqual(round(werk_bonus, 2), 0) self.assertEqual(round(taxable_wages, 2), 7780.23) self.assertEqual(round(tax, 2), 3431.71) self.assertEqual(round(tax_decreases, 2), 24) self.assertEqual(round(rsz_extra, 2), 60.94) self.assertEqual(round(netto, 2), 4311.58)
def test_scale2_income_7500_should_not_be_high_income(self): tax_variables = TaxVariables() tax_variables.bruto = 8627.63 tax_variables.marital_status = 'married' tax_variables.handicapped = False tax_variables.partner_income = 0 tax_variables.partner_income_pension_or_interest = False tax_variables.children_handicapped = 0 tax_variables.children = 0 tax_variables.family_members = 0 tax_variables.family_members_handicapped = 0 tax_variables.family_members_old = 0 tax_variables.family_members_old_handicapped = 0 tax_variables.type_worker = 'bediende' bruto_netto_simulator = BrutoNettoSimulator(tax_variables, 2016) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = bruto_netto_simulator.calculate_netto( ) self.assertEqual(round(rsz, 2), 1127.63) self.assertEqual(round(werk_bonus, 2), 0) self.assertEqual(round(taxable_wages, 2), 7500) self.assertEqual(round(tax, 2), 2922.79) self.assertEqual(round(tax_decreases, 2), 0) self.assertEqual(round(rsz_extra, 2), 60.94) self.assertEqual(round(netto, 2), 4516.27)
def post(request): year = date.today().year data = request.data calculated_data = dict() if "income_info" in data: bruto_serializer = TaxVariablesSerializer(data=data["income_info"]) bruto_serializer.is_valid() tax_variables = bruto_serializer.save() additions = 0.0 decreases_of_budget = 0.0 mobility_budget = 0.0 social_budget = 0.0 temp_budget = 0.0 allowance = 0.0 total_budget = BudgetAdvantages(tax_variables.bruto, 0, year).calculate_budget() if "car" in data: tax_addition, temp_budget, budget_decrease = FipCalculator.mobility_car_calc( data["car"], year, tax_variables.bruto) additions += tax_addition decreases_of_budget += budget_decrease mobility_budget += budget_decrease if "bike" in data: tax_addition, budget_decrease = FipCalculator.mobility_bike_calc( data["bike"], year) additions += tax_addition decreases_of_budget += budget_decrease mobility_budget += budget_decrease if "tech" in data: tax_addition, budget_decrease = FipCalculator.tech_calc( data["tech"], year) additions += tax_addition decreases_of_budget += budget_decrease calculated_data['tech_budget'] = budget_decrease if "allowance" in data: vergoeding_belast_vrij, vergoeding_belast = FipCalculator.mobility_allowance_calc( data["allowance"], year) if "social_benefits" in data: budget_decrease = FipCalculator.social_benefits_calc( data["social_benefits"], year) decreases_of_budget += budget_decrease social_budget = round(budget_decrease, 2) if "charity" in data: decreases_of_budget += data["charity"] simulator = BrutoNettoSimulator(tax_variables, year, additions) simulator_no_additions = BrutoNettoSimulator(tax_variables, year) rsz, werk_bonus, taxable_wages, tax, tax_decreases, rsz_extra, netto = simulator.calculate_netto( ) rsz2, werk_bonus2, taxable_wages2, tax2, tax_decreases2, rsz_extra2, netto2 = \ simulator_no_additions.calculate_netto() original_netto = netto2 netto -= additions if temp_budget > 0: budget = round(temp_budget - decreases_of_budget, 2) else: budget = round(total_budget - decreases_of_budget, 2) end_budget_payment, total_end_budget_payment = FipCalculator( ).calculate_budgets(budget, total_budget, year) if "allowance" in data: # netto += vergoeding_belast + vergoeding_belast_vrij simulator_only_allowance = BrutoNettoSimulator( tax_variables, year, vergoeding_belast) rsz_allowance, werk_bonus_allowance, taxable_wages_allowance, tax_allowance, tax_decreases_allowance,\ rsz_extra_allowance, netto_only_allowance = \ simulator_only_allowance.calculate_netto() allowance = vergoeding_belast_vrij + netto_only_allowance - original_netto calculated_data['rsz'] = rsz calculated_data['werkbonus'] = werk_bonus calculated_data['taxable_wages'] = taxable_wages calculated_data['tax'] = tax calculated_data['tax_decreases'] = tax_decreases calculated_data['rsz_extra'] = rsz_extra calculated_data['netto'] = round(netto, 2) calculated_data['netto_without_options'] = round(original_netto, 2) calculated_data['budget'] = budget calculated_data[ 'total_budget'] = temp_budget if temp_budget > 0 else total_budget calculated_data['mobility_budget'] = round(mobility_budget, 2) calculated_data['end_budget_payment'] = end_budget_payment calculated_data[ 'total_end_budget_payment'] = total_end_budget_payment calculated_data['social_budget'] = social_budget calculated_data['allowance'] = round(allowance, 2) return Response(calculated_data)