{-# 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 $sel:page1:BC479 :: forall (line :: * -> *). BC479 line -> Page1 line $sel:page2:BC479 :: forall (line :: * -> *). BC479 line -> Page2 line $sel:page3:BC479 :: forall (line :: * -> *). BC479 line -> Page3 line ..}-> BC479{$sel:page1:BC479 :: Page1 Maybe page1 = Page1 Maybe -> Page1 Maybe fixPage1 Page1 Maybe page1, $sel:page2:BC479 :: Page2 Maybe page2 = BC479 Maybe -> Page2 Maybe -> Page2 Maybe fixPage2 BC479 Maybe bc479 Page2 Maybe page2, $sel:page3:BC479 :: 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 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_copy :: Maybe Centi line12_fraction :: Maybe Centi line13_difference :: Maybe Centi line_60890_separate :: Maybe Bool line_60480_renovation :: Maybe Centi line14_fraction :: Maybe Centi line15_sum :: Maybe Centi $sel:line1_netIncome_self:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line1_netIncome_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line2_uccb_rdsp_repayment_self:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line2_uccb_rdsp_repayment_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line3_sum_self:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line3_sum_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line4_uccb_rdsp_income_self:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line4_uccb_rdsp_income_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line5_difference_self:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line5_difference_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line6_sum:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line7_threshold:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line8_difference:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line_60330_sales:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line_60350_spouse:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line11_sum:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line12_copy:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line12_fraction:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line13_difference:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line_60890_separate:Page1 :: forall (line :: * -> *). Page1 line -> line Bool $sel:line_60480_renovation:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line14_fraction:Page1 :: forall (line :: * -> *). Page1 line -> line Centi $sel:line15_sum:Page1 :: 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_copy = line8_difference, line12_fraction = (0.02 *) <$> line8_difference, line13_difference = nonNegativeDifference line11_sum line12_fraction, 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 $sel:line16_copy:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line17_venture:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60490_shares:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60491_certificate:Page2 :: forall (line :: * -> *). Page2 line -> line Text $sel:line_60495_shares:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60496_certificate:Page2 :: forall (line :: * -> *). Page2 line -> line Text $sel:line22_sum:Page2 :: forall (line :: * -> *). Page2 line -> SubCalculation line $sel:line_60510_fromT88:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60530_fromT88:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60545_buildings:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60546_partnership:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line27_sum:Page2 :: forall (line :: * -> *). Page2 line -> SubCalculation line $sel:line_60550_training:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60560_training:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line_60570_ships:Page2 :: forall (line :: * -> *). Page2 line -> line Centi $sel:line31_sum:Page2 :: forall (line :: * -> *). Page2 line -> SubCalculation line $sel:line32_credits:Page2 :: forall (line :: * -> *). Page2 line -> line Centi ..}-> Page2 Maybe page2{ line16_copy = bc479.page1.line15_sum, line22_sum = fixSubCalculation $ totalOf [line17_venture, line_60490_shares, line_60495_shares], line27_sum = fixSubCalculation $ totalOf [line_60545_buildings, line_60546_partnership], line31_sum = fixSubCalculation $ 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 $sel:line33_copy:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:tenancy_months1:Page3 :: forall (line :: * -> *). Page3 line -> line Word $sel:tenancy_months2:Page3 :: forall (line :: * -> *). Page3 line -> line Word $sel:rent_paid1:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:rent_paid2:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:line_60575_sum:Page3 :: forall (line :: * -> *). Page3 line -> line Word $sel:line35_ceiling:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:line36_income_copy:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:line37_threshold:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:line38_difference:Page3 :: forall (line :: * -> *). Page3 line -> line Centi $sel:line39_rate:Page3 :: forall (line :: * -> *). Page3 line -> line Rational $sel:line40_fraction:Page3 :: forall (line :: * -> *). Page3 line -> SubCalculation line $sel:line_60576_difference:Page3 :: forall (line :: * -> *). Page3 line -> SubCalculation line $sel:line42_credits:Page3 :: 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 $ line39_rate `fractionOf` line38_difference, line_60576_difference = fixSubCalculation $ nonNegativeDifference line35_ceiling line40_fraction.result, line42_credits = totalOf [line33_copy, line_60576_difference.result]}