{-# LANGUAGE DisambiguateRecordFields #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NoFieldSelectors #-} {-# LANGUAGE OverloadedRecordDot #-} module Tax.Canada (T1, ON428, fixOntarioReturns, fixT1, fixON428, t1Fields, on428Fields) where import Tax.Canada.T1.Types qualified as T1 import Tax.Canada.T1.Types (T1 (T1, page7), Page7(Page7, step6_RefundOrBalanceOwing)) import Tax.Canada.T1.Fix (fixT1) import Tax.Canada.T1.FieldNames (t1Fields) import Tax.Canada.ON428.Types qualified as ON hiding (Page1(..)) import Tax.Canada.ON428.Types (ON428 (ON428, page1, page2), Page1(Page1, line1, partB)) import Tax.Canada.ON428.Fix (fixON428) import Tax.Canada.ON428.FieldNames (on428Fields) import Tax.Util (fixEq) fixOntarioReturns :: (T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe) fixOntarioReturns :: (T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe) fixOntarioReturns = ((T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe)) -> (T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe) forall a. Eq a => (a -> a) -> a -> a fixEq (((T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe)) -> (T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe)) -> ((T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe)) -> (T1 Maybe, ON428 Maybe) -> (T1 Maybe, ON428 Maybe) forall a b. (a -> b) -> a -> b $ \(t1 :: T1 Maybe t1@T1{$sel:page7:T1 :: forall (line :: * -> *). T1 line -> Page7 line page7 = page7 :: Page7 Maybe page7@Page7{Page7Step6 Maybe $sel:step6_RefundOrBalanceOwing:Page7 :: forall (line :: * -> *). Page7 line -> Page7Step6 line step6_RefundOrBalanceOwing :: Page7Step6 Maybe step6_RefundOrBalanceOwing}}, on428 :: ON428 Maybe on428@ON428{$sel:page1:ON428 :: forall (line :: * -> *). ON428 line -> Page1 line page1 = page1 :: Page1 Maybe page1@Page1{Page1PartB Maybe $sel:partB:Page1 :: forall (line :: * -> *). Page1 line -> Page1PartB line partB :: Page1PartB Maybe partB}, $sel:page2:ON428 :: forall (line :: * -> *). ON428 line -> Page2 line page2 = page2 :: Page2 Maybe page2@ON.Page2{$sel:partB:Page2 :: forall (line :: * -> *). Page2 line -> Page2PartB line ON.partB = partB2 :: Page2PartB Maybe partB2@ON.Page2PartB{MedicalExpenses Maybe medicalExpenses :: MedicalExpenses Maybe $sel:medicalExpenses:Page2PartB :: forall (line :: * -> *). Page2PartB line -> MedicalExpenses line ON.medicalExpenses}, Page2PartC Maybe partC :: Page2PartC Maybe $sel:partC:Page2 :: forall (line :: * -> *). Page2 line -> Page2PartC line ON.partC}}) -> (T1 Maybe -> T1 Maybe fixT1 T1 Maybe t1{$sel:page7:T1 :: Page7 Maybe page7 = Page7 Maybe page7{$sel:step6_RefundOrBalanceOwing:Page7 :: Page7Step6 Maybe step6_RefundOrBalanceOwing = Page7Step6 Maybe step6_RefundOrBalanceOwing{$sel:line_42800_ProvTerrTax:Page7Step6 :: Maybe Centi T1.line_42800_ProvTerrTax = ON428 Maybe on428.page4.line90}}}, ON428 Maybe -> ON428 Maybe fixON428 ON428 Maybe on428{$sel:page1:ON428 :: Page1 Maybe page1 = Page1 Maybe page1{$sel:line1:Page1 :: Maybe Centi line1 = T1 Maybe t1.page5.step4_TaxableIncome.line_26000_TaxableIncome, $sel:partB:Page1 :: Page1PartB Maybe partB = Page1PartB Maybe partB{$sel:line12_spouseIncome:Page1PartB :: Maybe Centi ON.line12_spouseIncome = T1 Maybe t1.page1.spouse.line23600, $sel:line19_cppQpp:Page1PartB :: Maybe Centi ON.line19_cppQpp = T1 Maybe t1.page6.line30800, $sel:line20_cppQpp:Page1PartB :: Maybe Centi ON.line20_cppQpp = T1 Maybe t1.page6.line31000, $sel:line21_employmentInsurance:Page1PartB :: Maybe Centi ON.line21_employmentInsurance = T1 Maybe t1.page6.line31200, $sel:line22_employmentInsurance:Page1PartB :: Maybe Centi ON.line22_employmentInsurance = T1 Maybe t1.page6.line31217}}, $sel:page2:ON428 :: Page2 Maybe page2 = Page2 Maybe page2{$sel:partB:Page2 :: Page2PartB Maybe ON.partB = Page2PartB Maybe partB2{$sel:line32_interest:Page2PartB :: Maybe Centi ON.line32_interest = T1 Maybe t1.page6.line31900, $sel:medicalExpenses:Page2PartB :: MedicalExpenses Maybe ON.medicalExpenses = MedicalExpenses Maybe medicalExpenses{$sel:line37_income:MedicalExpenses :: Maybe Centi ON.line37_income = T1 Maybe t1.page4.line_23600_NetIncome}}, $sel:partC:Page2 :: Page2PartC Maybe ON.partC = Page2PartC Maybe partC{$sel:line59_copy:Page2PartC :: Maybe Centi ON.line59_copy = T1 Maybe t1.page7.partC_NetFederalTax.line40427}}})