{-# 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.ON.ON479.Types where import Data.Fixed (Centi) import Data.Text (Text) import Language.Haskell.TH qualified as TH import Rank2.TH qualified import Transformation.Shallow.TH qualified import Tax.Canada.Shared (SubCalculation) data ON479 line = ON479 { forall (line :: * -> *). ON479 line -> Page1 line page1 :: Page1 line, forall (line :: * -> *). ON479 line -> Page2 line page2 :: Page2 line} data Page1 line = Page1 { forall (line :: * -> *). Page1 line -> line Centi line_63050_childcare :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line4_homecare_copy :: line Centi, forall (line :: * -> *). Page1 line -> line Rational line5_allowable :: line Rational, forall (line :: * -> *). Page1 line -> line Centi line6_fraction :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line7_netIncome_copy :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line8_spouse_copy :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line9_sum :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line10_base :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line11_difference :: line Centi, forall (line :: * -> *). Page1 line -> line Rational line12_rate :: line Rational, forall (line :: * -> *). Page1 line -> SubCalculation line line13_fraction :: SubCalculation line, forall (line :: * -> *). Page1 line -> SubCalculation line line_63095_difference :: SubCalculation line, forall (line :: * -> *). Page1 line -> line Centi line_63100_transit :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line_63100_fraction :: line Centi, forall (line :: * -> *). Page1 line -> line Centi line16_sum :: line Centi} data Page2 line = Page2 { forall (line :: * -> *). Page2 line -> line Centi line17_copy :: line Centi, forall (line :: * -> *). Page2 line -> line Centi line_63110_contributions :: line Centi, forall (line :: * -> *). Page2 line -> line Centi line_63110_credit :: line Centi, forall (line :: * -> *). Page2 line -> line Centi line_63220_fromT1221 :: line Centi, forall (line :: * -> *). Page2 line -> line Centi line_63220_fraction :: line Centi, forall (line :: * -> *). Page2 line -> line Word line_63260_placements :: line Word, forall (line :: * -> *). Page2 line -> line Bool line_63265_partnership :: line Bool, forall (line :: * -> *). Page2 line -> line Text line_63270_business :: line Text, forall (line :: * -> *). Page2 line -> line Centi line_63300_total :: line Centi, forall (line :: * -> *). Page2 line -> line Centi line23_credits :: line Centi} $(foldMap (\t-> concat <$> sequenceA [ [d| deriving instance (Show (line Bool), Show (line Centi), Show (line Rational), Show (line Text), Show (line Word)) => Show ($(TH.conT t) line) deriving instance (Eq (line Bool), Eq (line Centi), Eq (line Rational), Eq (line Text), Eq (line Word)) => Eq ($(TH.conT t) line) |], Rank2.TH.deriveAll t, Transformation.Shallow.TH.deriveAll t]) [''ON479, ''Page1, ''Page2])