Ejemplo n.º 1
0
def meet_cash_req_from_deferred(transactions, book, person, account, tax_rate, needs, income_limit=0):
    taxable_income = get_taxable_income(transactions, person)
    #needs = 0 - book['joint'][Account.CLEARING]

    if book[person][account] <= 0:
        return

    deferred_asset_needed = amount_of_deferred_asset_to_sell(needs, taxable_income, tax_rate)

    if income_limit > 0:
        if taxable_income > income_limit:
            return
        if deferred_asset_needed + taxable_income > income_limit:
            deferred_asset_needed = income_limit - taxable_income


    if deferred_asset_needed <= book[person][account]:
        sell_deferred(transactions, person, account, deferred_asset_needed, tax_rate)
    else:
        sell_deferred(transactions, person, account,  book[person][account], tax_rate)
Ejemplo n.º 2
0
def meet_cash_req_from_lif(transactions, book, person, age, tax_rate, needs, income_limit):
    taxable_income = get_taxable_income(transactions, person)
    #needs = 0 - book['joint'][Account.CLEARING]

    if book[person][Account.LIF] <= 0:
        return

    rate = lif_withdrawal.loc[lif_withdrawal['AGE'] == age].iloc[0]['MAXIMUM_ONTARIO']
    max_lif_withdrawal = book[person][Account.LIF] * rate

    deferred_asset_needed = amount_of_deferred_asset_to_sell(needs, taxable_income, tax_rate)

    if income_limit > 0:
        if taxable_income > income_limit:
            return
        if deferred_asset_needed + taxable_income > income_limit:
            deferred_asset_needed = income_limit - taxable_income

    if deferred_asset_needed <= max_lif_withdrawal:
        sell_deferred(transactions, person, Account.LIF, deferred_asset_needed, tax_rate)
    else:
        sell_deferred(transactions, person, Account.LIF,  max_lif_withdrawal, tax_rate)
Ejemplo n.º 3
0
 def test1(self):
     tax_rates = {'marginal': [(10000, 0.2)], 'top': 0.2}
     m = tax.amount_of_deferred_asset_to_sell(1000, 0, tax_rates)
     self.assertEqual(m, 1250)
Ejemplo n.º 4
0
 def test5(self):
     tax_rates = {'marginal': [(10000, 0.2), (30000, 0.4)], 'top': 0.5}
     m = tax.amount_of_deferred_asset_to_sell(15000, 0, tax_rates)
     self.assertEqual(m, 10000 + 7000 / 0.6)