{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE RecordWildCards #-} module Tax.Canada.Province.BC.BC479.Fix (BC479, fixBC479) where import Tax.Canada.Province.BC.BC479.Types import Tax.Canada.Shared (fixSubCalculation, SubCalculation(result)) import Tax.Util (fixEq, fractionOf, nonNegativeDifference, totalOf) fixBC479 :: BC479 Maybe -> BC479 Maybe fixBC479 :: BC479 Maybe -> BC479 Maybe fixBC479 = (BC479 Maybe -> BC479 Maybe) -> BC479 Maybe -> BC479 Maybe forall a. Eq a => (a -> a) -> a -> a fixEq ((BC479 Maybe -> BC479 Maybe) -> BC479 Maybe -> BC479 Maybe) -> (BC479 Maybe -> BC479 Maybe) -> BC479 Maybe -> BC479 Maybe forall a b. (a -> b) -> a -> b $ \bc479 :: BC479 Maybe bc479@BC479{Page3 Maybe Page2 Maybe Page1 Maybe page1 :: Page1 Maybe page2 :: Page2 Maybe page3 :: Page3 Maybe page3 :: forall (line :: * -> *). BC479 line -> Page3 line page2 :: forall (line :: * -> *). BC479 line -> Page2 line page1 :: forall (line :: * -> *). BC479 line -> Page1 line ..}-> BC479{page1 :: Page1 Maybe page1 = Page1 Maybe -> Page1 Maybe fixPage1 Page1 Maybe page1, page2 :: Page2 Maybe page2 = BC479 Maybe -> Page2 Maybe -> Page2 Maybe fixPage2 BC479 Maybe bc479 Page2 Maybe page2, page3 :: Page3 Maybe page3 = BC479 Maybe -> Page3 Maybe -> Page3 Maybe fixPage3 BC479 Maybe bc479 Page3 Maybe page3} fixPage1 :: Page1 Maybe -> Page1 Maybe fixPage1 :: Page1 Maybe -> Page1 Maybe fixPage1 = (Page1 Maybe -> Page1 Maybe) -> Page1 Maybe -> Page1 Maybe forall a. Eq a => (a -> a) -> a -> a fixEq ((Page1 Maybe -> Page1 Maybe) -> Page1 Maybe -> Page1 Maybe) -> (Page1 Maybe -> Page1 Maybe) -> Page1 Maybe -> Page1 Maybe forall a b. (a -> b) -> a -> b $ \page :: Page1 Maybe page@Page1{Maybe Bool Maybe Centi SubCalculation Maybe line1_netIncome_self :: Maybe Centi line1_netIncome_spouse :: Maybe Centi line2_uccb_rdsp_repayment_self :: Maybe Centi line2_uccb_rdsp_repayment_spouse :: Maybe Centi line3_sum_self :: Maybe Centi line3_sum_spouse :: Maybe Centi line4_uccb_rdsp_income_self :: Maybe Centi line4_uccb_rdsp_income_spouse :: Maybe Centi line5_difference_self :: Maybe Centi line5_difference_spouse :: Maybe Centi line6_sum :: Maybe Centi line7_threshold :: Maybe Centi line8_difference :: Maybe Centi line_60330_sales :: Maybe Centi line_60350_spouse :: Maybe Centi line11_sum :: Maybe Centi line12_fraction :: SubCalculation Maybe line13_difference :: Maybe Centi line_60890_separate :: Maybe Bool line_60480_renovation :: Maybe Centi line14_fraction :: Maybe Centi line15_sum :: Maybe Centi line15_sum :: forall (line :: * -> *). Page1 line -> line Centi line14_fraction :: forall (line :: * -> *). Page1 line -> line Centi line_60480_renovation :: forall (line :: * -> *). Page1 line -> line Centi line_60890_separate :: forall (line :: * -> *). Page1 line -> line Bool line13_difference :: forall (line :: * -> *). Page1 line -> line Centi line12_fraction :: forall (line :: * -> *). Page1 line -> SubCalculation line line11_sum :: forall (line :: * -> *). Page1 line -> line Centi line_60350_spouse :: forall (line :: * -> *). Page1 line -> line Centi line_60330_sales :: forall (line :: * -> *). Page1 line -> line Centi line8_difference :: forall (line :: * -> *). Page1 line -> line Centi line7_threshold :: forall (line :: * -> *). Page1 line -> line Centi line6_sum :: forall (line :: * -> *). Page1 line -> line Centi line5_difference_spouse :: forall (line :: * -> *). Page1 line -> line Centi line5_difference_self :: forall (line :: * -> *). Page1 line -> line Centi line4_uccb_rdsp_income_spouse :: forall (line :: * -> *). Page1 line -> line Centi line4_uccb_rdsp_income_self :: forall (line :: * -> *). Page1 line -> line Centi line3_sum_spouse :: forall (line :: * -> *). Page1 line -> line Centi line3_sum_self :: forall (line :: * -> *). Page1 line -> line Centi line2_uccb_rdsp_repayment_spouse :: forall (line :: * -> *). Page1 line -> line Centi line2_uccb_rdsp_repayment_self :: forall (line :: * -> *). Page1 line -> line Centi line1_netIncome_spouse :: forall (line :: * -> *). Page1 line -> line Centi line1_netIncome_self :: forall (line :: * -> *). Page1 line -> line Centi ..}-> Page1 Maybe page{ line3_sum_self = totalOf [line1_netIncome_self, line2_uccb_rdsp_repayment_self], line3_sum_spouse = totalOf [line1_netIncome_spouse, line2_uccb_rdsp_repayment_spouse], line5_difference_self = nonNegativeDifference line3_sum_self line4_uccb_rdsp_income_self, line5_difference_spouse = nonNegativeDifference line3_sum_spouse line4_uccb_rdsp_income_spouse, line6_sum = totalOf [line5_difference_self, line5_difference_spouse], line8_difference = nonNegativeDifference line6_sum line7_threshold, line_60330_sales = Just 75, line11_sum = totalOf [line_60330_sales, line_60350_spouse], line12_fraction = fixSubCalculation (0.02 *) line8_difference, line13_difference = nonNegativeDifference line11_sum line12_fraction.result, line14_fraction = (0.1 *) <$> line_60480_renovation, line15_sum = totalOf [line13_difference, line14_fraction]} fixPage2 :: BC479 Maybe -> Page2 Maybe -> Page2 Maybe fixPage2 :: BC479 Maybe -> Page2 Maybe -> Page2 Maybe fixPage2 BC479 Maybe bc479 = (Page2 Maybe -> Page2 Maybe) -> Page2 Maybe -> Page2 Maybe forall a. Eq a => (a -> a) -> a -> a fixEq ((Page2 Maybe -> Page2 Maybe) -> Page2 Maybe -> Page2 Maybe) -> (Page2 Maybe -> Page2 Maybe) -> Page2 Maybe -> Page2 Maybe forall a b. (a -> b) -> a -> b $ \page2 :: Page2 Maybe page2@Page2{Maybe Text Maybe Centi SubCalculation Maybe line16_copy :: Maybe Centi line17_venture :: Maybe Centi line_60490_shares :: Maybe Centi line_60491_certificate :: Maybe Text line_60495_shares :: Maybe Centi line_60496_certificate :: Maybe Text line22_sum :: SubCalculation Maybe line_60510_fromT88 :: Maybe Centi line_60530_fromT88 :: Maybe Centi line_60545_buildings :: Maybe Centi line_60546_partnership :: Maybe Centi line27_sum :: SubCalculation Maybe line_60550_training :: Maybe Centi line_60560_training :: Maybe Centi line_60570_ships :: Maybe Centi line31_sum :: SubCalculation Maybe line32_credits :: Maybe Centi line32_credits :: forall (line :: * -> *). Page2 line -> line Centi line31_sum :: forall (line :: * -> *). Page2 line -> SubCalculation line line_60570_ships :: forall (line :: * -> *). Page2 line -> line Centi line_60560_training :: forall (line :: * -> *). Page2 line -> line Centi line_60550_training :: forall (line :: * -> *). Page2 line -> line Centi line27_sum :: forall (line :: * -> *). Page2 line -> SubCalculation line line_60546_partnership :: forall (line :: * -> *). Page2 line -> line Centi line_60545_buildings :: forall (line :: * -> *). Page2 line -> line Centi line_60530_fromT88 :: forall (line :: * -> *). Page2 line -> line Centi line_60510_fromT88 :: forall (line :: * -> *). Page2 line -> line Centi line22_sum :: forall (line :: * -> *). Page2 line -> SubCalculation line line_60496_certificate :: forall (line :: * -> *). Page2 line -> line Text line_60495_shares :: forall (line :: * -> *). Page2 line -> line Centi line_60491_certificate :: forall (line :: * -> *). Page2 line -> line Text line_60490_shares :: forall (line :: * -> *). Page2 line -> line Centi line17_venture :: forall (line :: * -> *). Page2 line -> line Centi line16_copy :: forall (line :: * -> *). Page2 line -> line Centi ..}-> Page2 Maybe page2{ line16_copy = bc479.page1.line15_sum, line22_sum = fixSubCalculation id $ totalOf [line17_venture, line_60490_shares, line_60495_shares], line27_sum = fixSubCalculation id $ totalOf [line_60545_buildings, line_60546_partnership], line31_sum = fixSubCalculation id $ totalOf [line_60550_training, line_60560_training, line_60570_ships], line32_credits = totalOf [line16_copy, line22_sum.result, line27_sum.result, line_60510_fromT88, line31_sum.result]} fixPage3 :: BC479 Maybe -> Page3 Maybe -> Page3 Maybe fixPage3 :: BC479 Maybe -> Page3 Maybe -> Page3 Maybe fixPage3 BC479 Maybe bc479 = (Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe forall a. Eq a => (a -> a) -> a -> a fixEq ((Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe) -> (Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe forall a b. (a -> b) -> a -> b $ \page3 :: Page3 Maybe page3@Page3{Maybe Rational Maybe Word Maybe Centi SubCalculation Maybe line33_copy :: Maybe Centi tenancy_months1 :: Maybe Word tenancy_months2 :: Maybe Word rent_paid1 :: Maybe Centi rent_paid2 :: Maybe Centi line_60575_sum :: Maybe Word line35_ceiling :: Maybe Centi line36_income_copy :: Maybe Centi line37_threshold :: Maybe Centi line38_difference :: Maybe Centi line39_rate :: Maybe Rational line40_fraction :: SubCalculation Maybe line_60576_difference :: SubCalculation Maybe line42_credits :: Maybe Centi line42_credits :: forall (line :: * -> *). Page3 line -> line Centi line_60576_difference :: forall (line :: * -> *). Page3 line -> SubCalculation line line40_fraction :: forall (line :: * -> *). Page3 line -> SubCalculation line line39_rate :: forall (line :: * -> *). Page3 line -> line Rational line38_difference :: forall (line :: * -> *). Page3 line -> line Centi line37_threshold :: forall (line :: * -> *). Page3 line -> line Centi line36_income_copy :: forall (line :: * -> *). Page3 line -> line Centi line35_ceiling :: forall (line :: * -> *). Page3 line -> line Centi line_60575_sum :: forall (line :: * -> *). Page3 line -> line Word rent_paid2 :: forall (line :: * -> *). Page3 line -> line Centi rent_paid1 :: forall (line :: * -> *). Page3 line -> line Centi tenancy_months2 :: forall (line :: * -> *). Page3 line -> line Word tenancy_months1 :: forall (line :: * -> *). Page3 line -> line Word line33_copy :: forall (line :: * -> *). Page3 line -> line Centi ..}-> Page3 Maybe page3{ line33_copy = bc479.page2.line32_credits, line_60575_sum = totalOf [tenancy_months1, tenancy_months2], line36_income_copy = bc479.page1.line6_sum, line38_difference = nonNegativeDifference line36_income_copy line37_threshold, line40_fraction = fixSubCalculation id $ line39_rate `fractionOf` line38_difference, line_60576_difference = fixSubCalculation id $ nonNegativeDifference line35_ceiling line40_fraction.result, line42_credits = totalOf [line33_copy, line_60576_difference.result]}