def calculate_tax(self, monthly_income, bonus=0, rebates=0, donation=0): annual_income = Utils.get_annual_income(monthly_income) logging.debug( "Calculating tax... | Annual: {} | Bonus: {} | Rebates: {} | Donation: {}" .format(annual_income, bonus, rebates, donation)) try: self._validate_input(annual_income, bonus, rebates, donation) except ValueError as e: logging.error(e) raise e taxable_income = Utils.get_taxable_income(annual_income, bonus, rebates, donation) total_tax = 0 tier_level = '0' tier_info = TAX_TIERS['0'] if taxable_income > 20000: tax_tier = list( filter( lambda item: item[1]['lower_limit'] < taxable_income <= item[1]['upper_limit'], TAX_TIERS.items())) tax_tier_information = tax_tier[0] tier_level = tax_tier_information[0] tier_info = tax_tier_information[1] total_tax = self._get_total_tax(taxable_income, tier_info) logging.debug("Tier: {} | Total tax: {} | Tax Info: {}".format( tier_level, total_tax, tier_info)) result = TaxInformation(tier_level, tier_info, total_tax) return result
def get_annual_salary(n_submit, n_blur, value): annual_salary = Utils.get_annual_income(value) return html.Div(className="row mt-1", children=[ html.Div(className="col-sm-3 mr-1", children=["Annual salary: "]), html.Div(className="col-sm-3", children=["S$ {0:.2f}".format(annual_salary)]) ])
def get_taxable_salary(ns1, nb1, ns2, nb2, ns3, nb3, donation, monthly_salary, annual_bonus, tax_rebates): annual_salary = Utils.get_annual_income(monthly_salary) taxable_salary = Utils.get_taxable_income(annual_salary, annual_bonus, tax_rebates, donation) return html.Div(className="row mt-1", children=[ html.Div(className="col-sm-3 mr-1", children=["Taxable salary: "]), html.Div( className="col-sm-3", children=["S$ {0:.2f}".format(taxable_salary)]) ])
def get_maximum_donation_mark(ns1, nb1, ns2, nb2, monthly_salary, annual_bonus): annual_salary = Utils.get_annual_income(monthly_salary) max_donation = annual_salary + annual_bonus return {0: 'S$ 0', max_donation: "{0:.2f}".format(max_donation)}
def get_maximum_donation(ns1, nb1, ns2, nb2, monthly_salary, annual_bonus): annual_salary = Utils.get_annual_income(monthly_salary) return annual_salary + annual_bonus