コード例 #1
0
    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
コード例 #2
0
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)])
                    ])
コード例 #3
0
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)])
                    ])
コード例 #4
0
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)}
コード例 #5
0
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