{-# LANGUAGE DataKinds #-}
module Data.Tax.ATO.FY.FY2021 (tables, individualIncomeTax) where
import Control.Lens (review)
import Data.Tax
import Data.Tax.ATO.Common
import Data.Tax.ATO.PrivateHealthInsuranceRebate
individualIncomeTax :: (Fractional a, Ord a) => Tax (Money a) (Money a)
individualIncomeTax :: forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
individualIncomeTax = forall a.
(Fractional a, Ord a) =>
[(a, a)] -> Tax (Money a) (Money a)
marginal'
[ (a
18200, a
0.19)
, (a
45000, a
0.325 forall a. Num a => a -> a -> a
- a
0.19)
, (a
120000, a
0.37 forall a. Num a => a -> a -> a
- a
0.325)
, (a
180000, a
0.45 forall a. Num a => a -> a -> a
- a
0.37) ]
help :: (Fractional a, Ord a) => Tax (Money a) (Money a)
help :: forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
help = forall a.
(Fractional a, Ord a) =>
[(a, a)] -> Tax (Money a) (Money a)
thresholds'
[ (a
46620, a
0.01)
, (a
53827, a
0.01)
, (a
57056, a
0.005)
, (a
60480, a
0.005)
, (a
64109, a
0.005)
, (a
67955, a
0.005)
, (a
72032, a
0.005)
, (a
76355, a
0.005)
, (a
80936, a
0.005)
, (a
85793, a
0.005)
, (a
90940, a
0.005)
, (a
96397, a
0.005)
, (a
102180, a
0.005)
, (a
108310, a
0.005)
, (a
114708, a
0.005)
, (a
121699, a
0.005)
, (a
129000, a
0.005)
, (a
136740, a
0.005)
]
tables :: (Ord a, Fractional a) => TaxTables 2021 a
tables :: forall a. (Ord a, Fractional a) => TaxTables 2021 a
tables = forall {k} (y :: k) a.
Tax (Money a) (Money a)
-> Tax (Money a) (Money a)
-> Tax (Money a) (Money a)
-> Tax (Money a) (Money a)
-> Tax (Money a) (Money a)
-> Tax (Money a) (Money a)
-> PrivateHealthInsuranceRebateRates a
-> TaxTables y a
TaxTables
forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
individualIncomeTax
(forall a.
(Fractional a, Ord a) =>
Money a -> Tax (Money a) (Money a)
medicareLevy (forall b (m :: * -> *) t. MonadReader b m => AReview t b -> m t
review forall a b. Iso (Money a) (Money b) a b
money a
23226))
forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
medicareLevySurcharge
forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
help
forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
help
(forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
lowIncomeTaxOffset2021 forall a. Semigroup a => a -> a -> a
<> forall a. (Fractional a, Ord a) => Tax (Money a) (Money a)
lamito)
forall a. Fractional a => PrivateHealthInsuranceRebateRates a
privateHealthInsuranceRebateRates
privateHealthInsuranceRebateRates
:: (Fractional a) => PrivateHealthInsuranceRebateRates a
privateHealthInsuranceRebateRates :: forall a. Fractional a => PrivateHealthInsuranceRebateRates a
privateHealthInsuranceRebateRates =
[ ( a
90000, (a
0.25059, a
0.24608), (a
0.29236, a
0.28710), (a
0.33413, a
0.32812) )
, (a
105000, (a
0.16706, a
0.16405), (a
0.20883, a
0.20507), (a
0.25059, a
0.24608) )
, (a
140000, (a
0.08352, a
0.08202), (a
0.12529, a
0.12303), (a
0.16706, a
0.16405) )
]