{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module Tax.Canada.Province.MB.MB428.Types where
import Data.Fixed (Centi)
import Language.Haskell.TH qualified as TH
import Rank2.TH qualified
import Transformation.Shallow.TH qualified
import Tax.Canada.Shared (BaseCredit, MedicalExpenses, SubCalculation, TaxIncomeBracket)
data MB428 line = MB428 {
forall (line :: * -> *). MB428 line -> Page1 line
page1 :: Page1 line,
forall (line :: * -> *). MB428 line -> Page2 line
page2 :: Page2 line,
forall (line :: * -> *). MB428 line -> Page3 line
page3 :: Page3 line}
data Page1 line = Page1 {
forall (line :: * -> *). Page1 line -> line Centi
income :: line Centi,
forall (line :: * -> *). Page1 line -> Page1PartA line
partA :: Page1PartA line,
forall (line :: * -> *). Page1 line -> Page1PartB line
partB :: Page1PartB line}
data Page1PartA line = Page1PartA {
forall (line :: * -> *). Page1PartA line -> TaxIncomeBracket line
column1 :: TaxIncomeBracket line,
forall (line :: * -> *). Page1PartA line -> TaxIncomeBracket line
column2 :: TaxIncomeBracket line,
forall (line :: * -> *). Page1PartA line -> TaxIncomeBracket line
column3 :: TaxIncomeBracket line}
data Page1PartB line = Page1PartB {
forall (line :: * -> *). Page1PartB line -> line Centi
line9_basic :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line10_age :: line Centi,
forall (line :: * -> *). Page1PartB line -> BaseCredit line
spouseAmount :: BaseCredit line,
forall (line :: * -> *). Page1PartB line -> BaseCredit line
dependantAmount :: BaseCredit line,
forall (line :: * -> *). Page1PartB line -> line Centi
line17_infirm :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line18 :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line19_cppQpp :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line20_cppQpp :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line21_employmentInsurance :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line22_employmentInsurance :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line23_firefighters :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line24_rescue :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line25_fitness :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line26_arts :: line Centi,
forall (line :: * -> *). Page1PartB line -> line Centi
line27_adoption :: line Centi,
forall (line :: * -> *). Page1PartB line -> SubCalculation line
line28_sum :: SubCalculation line,
forall (line :: * -> *). Page1PartB line -> line Centi
line29 :: line Centi}
data Page2 line = Page2 {
forall (line :: * -> *). Page2 line -> Page2PartB line
partB :: Page2PartB line}
data Page2PartB line = Page2PartB {
forall (line :: * -> *). Page2PartB line -> line Centi
line30 :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line31_pension :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line32_caregiver :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line33 :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line34_disability :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line35 :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line36 :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line37_interest :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line38_education :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line39_transferredChild :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line40_transferredSpouse :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line41_family :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Centi
line42_sum :: line Centi,
forall (line :: * -> *). Page2PartB line -> MedicalExpenses line
medicalExpenses :: MedicalExpenses line,
forall (line :: * -> *). Page2PartB line -> line Centi
line49 :: line Centi,
forall (line :: * -> *). Page2PartB line -> SubCalculation line
line50_sum :: SubCalculation line,
forall (line :: * -> *). Page2PartB line -> line Centi
line51 :: line Centi,
forall (line :: * -> *). Page2PartB line -> line Rational
line52_rate :: line Rational,
forall (line :: * -> *). Page2PartB line -> line Centi
line53_fraction :: line Centi,
forall (line :: * -> *). Page2PartB line -> Donations line
donations :: Donations line,
forall (line :: * -> *). Page2PartB line -> SubCalculation line
line56_sum :: SubCalculation line,
forall (line :: * -> *). Page2PartB line -> line Centi
line57 :: line Centi}
data Donations line = Donations {
forall (line :: * -> *). Donations line -> line Centi
line54_base :: line Centi,
forall (line :: * -> *). Donations line -> line Centi
line54_fraction :: line Centi,
forall (line :: * -> *). Donations line -> line Centi
line55_base :: line Centi,
forall (line :: * -> *). Donations line -> line Centi
line55_fraction :: line Centi}
data Page3 line = Page3 {
forall (line :: * -> *). Page3 line -> PartC line
partC :: PartC line}
data PartC line = PartC {
forall (line :: * -> *). PartC line -> line Centi
line58_tax :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line59_splitIncomeTax :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line60 :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line61_copy :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line62_dividendCredits :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line63_copy :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line63_fraction :: line Centi,
forall (line :: * -> *). PartC line -> SubCalculation line
line64_sum :: SubCalculation line,
forall (line :: * -> *). PartC line -> line Centi
line65_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line66_fromT691 :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line66_fraction :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line67 :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line68_political :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line69_political :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line70_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line71_labour :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line72_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line73_foreignCredit :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line74_difference :: line Centi,
:: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line76_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line77_venture :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line78_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line79_sharePurchase :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line80_difference :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line81_mineral :: line Centi,
forall (line :: * -> *). PartC line -> line Centi
line82_tax :: line Centi}
$