[ //01-Jul-2022: 'CA' => [ 'min' => 12719, 'max' => 14398, 'phase_out_start' => 155625, 'phase_out_end' => 221708 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'BC' => 11302, 'AB' => 19369, //**Not indexed. 'SK' => 16615, 'MB' => 10145, 'QC' => 0, 'ON' => 11141, 'NL' => 9803, 'NB' => 12623, 'NS' => 11481, //**Not Indexed. See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 11250, 'NT' => 15609, 'YT' => [ 'min' => 12719, 'max' => 14398, 'phase_out_start' => 155625, 'phase_out_end' => 221708 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'NU' => 16862, ], 20220101 => [ //01-Jan-2022: 'CA' => [ 'min' => 12719, 'max' => 14398, 'phase_out_start' => 155625, 'phase_out_end' => 221708 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'BC' => 11302, 'AB' => 19369, //**Not indexed. 'SK' => 16615, 'MB' => 10145, 'QC' => 0, 'ON' => 11141, 'NL' => 9803, 'NB' => 10817, 'NS' => 11481, //**Not Indexed. See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 11250, 'NT' => 15609, 'YT' => [ 'min' => 12719, 'max' => 14398, 'phase_out_start' => 155625, 'phase_out_end' => 221708 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'NU' => 16862, ], 20210101 => [ //01-Jan-2021: 'CA' => [ 'min' => 12421, 'max' => 13808, 'phase_out_start' => 151978, 'phase_out_end' => 216511 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'BC' => 11070, 'AB' => 19369, 'SK' => 16225, 'MB' => 9936, 'QC' => 0, 'ON' => 10880, 'NL' => 9536, 'NB' => 10564, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 10500, 'NT' => 15243, 'YT' => [ 'min' => 12421, 'max' => 13808, 'phase_out_start' => 151978, 'phase_out_end' => 216511 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'NU' => 16467, ], 20200701 => [ //01-Jul-2020: 'CA' => [ 'min' => 12298, 'max' => 13229, 'phase_out_start' => 150473, 'phase_out_end' => 214368 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'BC' => 10949, 'AB' => 19369, 'SK' => 16065, 'MB' => 9838, 'QC' => 0, 'ON' => 10783, 'NL' => 9498, 'NB' => 10459, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 10000, 'NT' => 15093, 'YT' => [ 'min' => 12298, 'max' => 14160, 'phase_out_start' => 150473, 'phase_out_end' => 214368 ], //YT - This is now phased out if net income is ~$150K or less, see Yukon Basic Personal Amount (BPAYT) 'NU' => 16304, ], 20200101 => [ //01-Jan-2020: 'CA' => [ 'min' => 12298, 'max' => 13229, 'phase_out_start' => 150473, 'phase_out_end' => 214368 ], //Federal - This is now phased out if net income is ~$150K or less, see Federal Basic Personal Amount (BPAF) 'BC' => 10949, 'AB' => 19369, 'SK' => 16065, 'MB' => 9838, 'QC' => 0, 'ON' => 10783, 'NL' => 9498, 'NB' => 10459, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 10000, 'NT' => 15093, 'YT' => 12298, 'NU' => 16304, ], 20190101 => [ //01-Jan-2019: 'CA' => 12069, //Federal 'BC' => 10682, 'AB' => 19369, 'SK' => 16065, 'MB' => 9626, 'QC' => 0, 'ON' => 10582, 'NL' => 9414, 'NB' => 10264, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 9160, 'NT' => 14811, 'YT' => 12069, 'NU' => 13618, ], 20180701 => [ //01-Jul-2018: 'CA' => 11809, //Federal 'BC' => 10412, 'AB' => 18915, 'SK' => 16065, 'MB' => 9382, 'QC' => 0, 'ON' => 10354, 'NL' => 9247, 'NB' => 10043, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 9160, 'NT' => 14492, 'YT' => 11809, 'NU' => 13325, ], 20180101 => [ //01-Jan-2018: 'CA' => 11809, //Federal 'BC' => 10412, 'AB' => 18915, 'SK' => 16065, 'MB' => 9382, 'QC' => 0, 'ON' => 10354, 'NL' => 9247, 'NB' => 10043, 'NS' => 11481, //See NS.class.php, as there are a low and high basic claim amounts now. 'PE' => 8160, 'NT' => 14492, 'YT' => 11809, 'NU' => 13325, ], 20170701 => [ //01-Jul-2017: 'CA' => 11635, //Federal 'BC' => 10208, 'AB' => 18690, 'SK' => 16065, 'MB' => 9271, 'QC' => 0, 'ON' => 10171, 'NL' => 8978, 'NB' => 9895, 'NS' => 8481, 'PE' => 8320, 'NT' => 14278, 'YT' => 11635, 'NU' => 13128, ], 20170101 => [ //01-Jan-2017: 'CA' => 11635, //Federal 'BC' => 10208, 'AB' => 18690, 'SK' => 16065, 'MB' => 9271, 'QC' => 0, 'ON' => 10171, 'NL' => 8978, 'NB' => 9895, 'NS' => 8481, 'PE' => 8000, 'NT' => 14278, 'YT' => 11635, 'NU' => 13128, ], 20160701 => [ //01-Jul-2016: 'CA' => 11474, //Federal 'BC' => 10027, 'AB' => 18451, 'SK' => 15843, 'MB' => 9134, 'QC' => 0, 'ON' => 10011, 'NL' => 8802, 'NB' => 9758, 'NS' => 8481, 'PE' => 8292, 'NT' => 14081, 'YT' => 11474, 'NU' => 12947, ], 20160101 => [ //01-Jan-2016: 'CA' => 11474, //Federal 'BC' => 10027, 'AB' => 18451, 'SK' => 15843, 'MB' => 9134, 'QC' => 0, 'ON' => 10011, 'NL' => 8802, 'NB' => 9758, 'NS' => 8481, 'PE' => 7708, 'NT' => 14081, 'YT' => 11474, 'NU' => 12947, ], 20150101 => [ //01-Jan-2015: 'CA' => 11327, //Federal 'BC' => 9938, 'AB' => 18214, 'SK' => 15639, 'MB' => 9134, 'QC' => 0, 'ON' => 9863, 'NL' => 8767, 'NB' => 9633, 'NS' => 8481, 'PE' => 7708, 'NT' => 13900, 'YT' => 11327, 'NU' => 12781, ], 20140101 => [ //01-Jan-2014: 'CA' => 11138, //Federal 'BC' => 9869, 'AB' => 17787, 'SK' => 15378, 'MB' => 9134, 'QC' => 0, 'ON' => 9670, 'NL' => 8578, 'NB' => 9472, 'NS' => 8481, 'PE' => 7708, 'NT' => 13668, 'YT' => 11138, 'NU' => 12567, ], 20130101 => [ //01-Jan-2013: 'CA' => 11038, //Federal 'BC' => 10276, 'AB' => 17593, 'SK' => 15241, 'MB' => 8884, 'QC' => 0, 'ON' => 9574, 'NL' => 8451, 'NB' => 9388, 'NS' => 8481, 'PE' => 7708, 'NT' => 13546, 'YT' => 11038, 'NU' => 12455, ], 20120101 => [ //01-Jan-2012: 'CA' => 10822, //Federal 'BC' => 11354, 'AB' => 17282, 'SK' => 14942, 'MB' => 8634, 'QC' => 0, 'ON' => 9405, 'NL' => 8237, 'NB' => 9203, 'NS' => 8481, 'PE' => 7708, 'NT' => 13280, 'YT' => 10822, 'NU' => 12211, ], 20110701 => [ //01-Jul-2011: Some of these are only changed for the last 6mths in the year. 'CA' => 10527, //Federal 'BC' => 11088, 'AB' => 16977, 'SK' => 14535, 'MB' => 8634, 'QC' => 0, 'ON' => 9104, 'NL' => 7989, 'NB' => 8953, 'NS' => 8731, 'PE' => 7708, 'NT' => 12919, 'YT' => 10527, 'NU' => 11878, ], 20110101 => [ //01-Jan-2011 'CA' => 10527, //Federal 'BC' => 11088, 'AB' => 16977, 'SK' => 13535, 'MB' => 8134, 'QC' => 0, 'ON' => 9104, 'NL' => 7989, 'NB' => 8953, 'NS' => 8231, 'PE' => 7708, 'NT' => 12919, 'YT' => 10527, 'NU' => 11878, ], 20100101 => [ //01-Jan-2010 'CA' => 10382, //Federal 'BC' => 11000, 'AB' => 16825, 'SK' => 13348, 'MB' => 8134, 'QC' => 0, 'ON' => 8943, 'NL' => 7833, 'NB' => 8777, 'NS' => 8231, 'PE' => 7708, 'NT' => 12740, 'YT' => 10382, 'NU' => 11714, ], 20090401 => [ //01-Apr-09 'CA' => 10375, //Federal 'BC' => 9373, 'AB' => 16775, 'SK' => 13269, 'MB' => 8134, 'QC' => 0, 'ON' => 8881, 'NL' => 7778, 'NB' => 8134, 'NS' => 7981, 'PE' => 7708, 'NT' => 12664, 'YT' => 10375, 'NU' => 11644, ], 20090101 => [ //01-Jan-09 'CA' => 10100, //Federal 'BC' => 9373, 'AB' => 16775, 'SK' => 13269, 'MB' => 8134, 'QC' => 0, 'ON' => 8881, 'NL' => 7778, 'NB' => 8134, 'NS' => 7981, 'PE' => 7708, 'NT' => 12664, 'YT' => 10100, 'NU' => 11644, ], 20080101 => [ //01-Jan-08 'CA' => 9600, //Federal 'BC' => 9189, 'AB' => 16161, 'SK' => 8945, 'MB' => 8034, 'QC' => 0, 'ON' => 8681, 'NL' => 7566, 'NB' => 8395, 'NS' => 7731, 'PE' => 7708, 'NT' => 12355, 'YT' => 9600, 'NU' => 11360, ], 20070701 => [ //01-Jul-07 'CA' => 8929, //Federal 'BC' => 9027, 'AB' => 15435, 'SK' => 8778, 'MB' => 7834, 'QC' => 0, 'ON' => 8553, 'NL' => 7558, 'NB' => 8239, 'NS' => 7481, 'PE' => 7708, 'NT' => 12125, 'YT' => 8929, 'NU' => 11149, ], 20070101 => [ //01-Jan-07 'CA' => 8929, //Federal 'BC' => 9027, 'AB' => 15435, 'SK' => 8778, 'MB' => 7834, 'QC' => 0, 'ON' => 8553, 'NL' => 7410, 'NB' => 8239, 'NS' => 7481, 'PE' => 7412, 'NT' => 12125, 'YT' => 8929, 'NU' => 11149, ], 20060701 => [ //01-Jul-06 'CA' => 8639, //Federal 'BC' => 8858, 'AB' => 14999, 'SK' => 8589, 'MB' => 7734, 'QC' => 0, 'ON' => 8377, 'NL' => 7410, 'NB' => 8061, 'NS' => 7231, 'PE' => 7412, 'NT' => 11864, 'YT' => 8328, 'NU' => 10909, ], 20060101 => [ //01-Jan-06 'CA' => 9039, //Federal 'BC' => 8858, 'AB' => 14799, 'SK' => 8589, 'MB' => 7734, 'QC' => 0, 'ON' => 8377, 'NL' => 7410, 'NB' => 8061, 'NS' => 7231, 'PE' => 7412, 'NT' => 11864, 'YT' => 8328, 'NU' => 10909, ], ]; /* CPP settings */ var $cpp_options = [ 20220101 => [ //2022 'maximum_pensionable_earnings' => 61400, //Yes, went down from last year. 'basic_exemption' => 3500, 'employee_rate' => 0.0570, 'employee_maximum_contribution' => 3499.80, ], 20210101 => [ //2021 'maximum_pensionable_earnings' => 61600, 'basic_exemption' => 3500, 'employee_rate' => 0.0545, 'employee_maximum_contribution' => 3166.45, ], 20200101 => [ //2020 'maximum_pensionable_earnings' => 58700, 'basic_exemption' => 3500, 'employee_rate' => 0.0525, 'employee_maximum_contribution' => 2898.00, ], 20190101 => [ //2019 'maximum_pensionable_earnings' => 57400, 'basic_exemption' => 3500, 'employee_rate' => 0.0510, 'employee_maximum_contribution' => 2748.90, ], 20180101 => [ //2018 'maximum_pensionable_earnings' => 55900, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2593.80, ], 20170101 => [ //2017 'maximum_pensionable_earnings' => 55300, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2564.10, ], 20160101 => [ //2016 'maximum_pensionable_earnings' => 54900, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2544.30, ], 20150101 => [ //2015 'maximum_pensionable_earnings' => 53600, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2479.95, ], 20140101 => [ //2014 'maximum_pensionable_earnings' => 52500, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2425.50, ], 20130101 => [ //2013 'maximum_pensionable_earnings' => 51100, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2356.20, ], 20120101 => [ //2012 'maximum_pensionable_earnings' => 50100, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2306.70, ], 20110101 => [ //2011 'maximum_pensionable_earnings' => 48300, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2217.60, ], 20100101 => [ //2010 'maximum_pensionable_earnings' => 47200, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2163.15, ], 20090101 => [ //2009 'maximum_pensionable_earnings' => 46300, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2118.60, ], 20080101 => [ //2008 'maximum_pensionable_earnings' => 44900, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 2049.30, ], 20070101 => [ //2007 'maximum_pensionable_earnings' => 43700, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 1989.90, ], 20060101 => [ //2006 'maximum_pensionable_earnings' => 42100, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 1910.70, ], 20050101 => [ //2005 'maximum_pensionable_earnings' => 41100, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 1861.20, ], 20040101 => [ //2004 'maximum_pensionable_earnings' => 40500, 'basic_exemption' => 3500, 'employee_rate' => 0.0495, 'employee_maximum_contribution' => 1831.50, ], ]; /* EI settings */ var $ei_options = [ 20220101 => [ //2022 'maximum_insurable_earnings' => 60300, 'employee_rate' => 0.0158, 'employee_maximum_contribution' => 952.74, 'employer_rate' => 1.4, ], 20210101 => [ //2021 'maximum_insurable_earnings' => 56300, 'employee_rate' => 0.0158, 'employee_maximum_contribution' => 889.54, 'employer_rate' => 1.4, ], 20200101 => [ //2020 'maximum_insurable_earnings' => 54200, 'employee_rate' => 0.0158, 'employee_maximum_contribution' => 856.36, 'employer_rate' => 1.4, ], 20190101 => [ //2019 'maximum_insurable_earnings' => 53100, 'employee_rate' => 0.0162, 'employee_maximum_contribution' => 860.22, 'employer_rate' => 1.4, ], 20180101 => [ //2018 'maximum_insurable_earnings' => 51700, 'employee_rate' => 0.0166, 'employee_maximum_contribution' => 858.22, 'employer_rate' => 1.4, ], 20170101 => [ //2017 'maximum_insurable_earnings' => 51300, 'employee_rate' => 0.0163, 'employee_maximum_contribution' => 836.19, 'employer_rate' => 1.4, ], 20160101 => [ //2016 'maximum_insurable_earnings' => 50800, 'employee_rate' => 0.0188, 'employee_maximum_contribution' => 955.04, 'employer_rate' => 1.4, ], 20150101 => [ //2015 'maximum_insurable_earnings' => 49500, 'employee_rate' => 0.0188, 'employee_maximum_contribution' => 930.60, 'employer_rate' => 1.4, ], 20140101 => [ //2014 'maximum_insurable_earnings' => 48600, 'employee_rate' => 0.0188, 'employee_maximum_contribution' => 913.68, 'employer_rate' => 1.4, ], 20130101 => [ //2013 'maximum_insurable_earnings' => 47400, 'employee_rate' => 0.0188, 'employee_maximum_contribution' => 891.12, 'employer_rate' => 1.4, ], 20120101 => [ //2012 'maximum_insurable_earnings' => 45900, 'employee_rate' => 0.0183, 'employee_maximum_contribution' => 839.97, 'employer_rate' => 1.4, ], 20110101 => [ //2011 'maximum_insurable_earnings' => 44200, 'employee_rate' => 0.0178, 'employee_maximum_contribution' => 786.76, 'employer_rate' => 1.4, ], 20100101 => [ //2010 'maximum_insurable_earnings' => 43200, 'employee_rate' => 0.0173, 'employee_maximum_contribution' => 747.36, 'employer_rate' => 1.4, ], 20090101 => [ //2009 'maximum_insurable_earnings' => 42300, 'employee_rate' => 0.0173, 'employee_maximum_contribution' => 731.79, 'employer_rate' => 1.4, ], 20080101 => [ //2008 'maximum_insurable_earnings' => 41100, 'employee_rate' => 0.0173, 'employee_maximum_contribution' => 711.03, 'employer_rate' => 1.4, ], 20070101 => [ //2007 'maximum_insurable_earnings' => 40000, 'employee_rate' => 0.0180, 'employee_maximum_contribution' => 720.00, 'employer_rate' => 1.4, ], 20060101 => [ //2006 'maximum_insurable_earnings' => 39000, 'employee_rate' => 0.0187, 'employee_maximum_contribution' => 729.30, 'employer_rate' => 1.4, ], 20050101 => [ //2005 'maximum_insurable_earnings' => 39000, 'employee_rate' => 0.0195, 'employee_maximum_contribution' => 760.50, 'employer_rate' => 1.4, ], 20040101 => [ //2004 'maximum_insurable_earnings' => 39900, 'employee_rate' => 0.0198, 'employee_maximum_contribution' => 722.20, 'employer_rate' => 1.4, ], ]; /* Federal employment credit AKA: Canada Employment Amount (Variable: CEA) */ var $federal_employment_credit_options = [ 20220101 => [ 'credit' => 1287 ], 20210101 => [ 'credit' => 1257 ], 20200101 => [ 'credit' => 1245 ], 20190101 => [ 'credit' => 1222 ], 20180101 => [ 'credit' => 1195 ], 20170101 => [ 'credit' => 1178 ], 20160101 => [ 'credit' => 1161 ], 20150101 => [ 'credit' => 1146 ], 20140101 => [ 'credit' => 1127 ], 20130101 => [ 'credit' => 1117 ], 20120101 => [ 'credit' => 1095 ], 20110101 => [ 'credit' => 1065 ], 20100101 => [ 'credit' => 1051 ], 20090101 => [ 'credit' => 1044 ], 20080101 => [ 'credit' => 1019 ], 20070101 => [ 'credit' => 1000 ], 20060101 => [ 'credit' => 500 ], ]; /* Federal Income Tax Rates */ var $federal_income_tax_rate_options = [ 20220101 => [ [ 'income' => 50197, 'rate' => 15, 'constant' => 0 ], [ 'income' => 100393, 'rate' => 20.5, 'constant' => 2761 ], [ 'income' => 155625, 'rate' => 26, 'constant' => 8282 ], [ 'income' => 221708, 'rate' => 29, 'constant' => 12951 ], [ 'income' => 221708, 'rate' => 33, 'constant' => 21819 ], ], 20210101 => [ [ 'income' => 49020, 'rate' => 15, 'constant' => 0 ], [ 'income' => 98040, 'rate' => 20.5, 'constant' => 2696 ], [ 'income' => 151978, 'rate' => 26, 'constant' => 8088 ], [ 'income' => 216511, 'rate' => 29, 'constant' => 12648 ], [ 'income' => 216511, 'rate' => 33, 'constant' => 21308 ], ], 20200101 => [ [ 'income' => 48535, 'rate' => 15, 'constant' => 0 ], [ 'income' => 97069, 'rate' => 20.5, 'constant' => 2669 ], [ 'income' => 150473, 'rate' => 26, 'constant' => 8008 ], [ 'income' => 214368, 'rate' => 29, 'constant' => 12522 ], [ 'income' => 214368, 'rate' => 33, 'constant' => 21097 ], ], 20190101 => [ [ 'income' => 47630, 'rate' => 15, 'constant' => 0 ], [ 'income' => 95259, 'rate' => 20.5, 'constant' => 2620 ], [ 'income' => 147667, 'rate' => 26, 'constant' => 7859 ], [ 'income' => 210371, 'rate' => 29, 'constant' => 12289 ], [ 'income' => 210371, 'rate' => 33, 'constant' => 20704 ], ], 20180101 => [ [ 'income' => 46605, 'rate' => 15, 'constant' => 0 ], [ 'income' => 93208, 'rate' => 20.5, 'constant' => 2563 ], [ 'income' => 144489, 'rate' => 26, 'constant' => 7690 ], [ 'income' => 205842, 'rate' => 29, 'constant' => 12024 ], [ 'income' => 205842, 'rate' => 33, 'constant' => 20258 ], ], 20170101 => [ [ 'income' => 45916, 'rate' => 15, 'constant' => 0 ], [ 'income' => 91831, 'rate' => 20.5, 'constant' => 2525 ], [ 'income' => 142353, 'rate' => 26, 'constant' => 7576 ], [ 'income' => 202800, 'rate' => 29, 'constant' => 11847 ], [ 'income' => 202800, 'rate' => 33, 'constant' => 19959 ], ], 20160101 => [ [ 'income' => 45282, 'rate' => 15, 'constant' => 0 ], [ 'income' => 90563, 'rate' => 20.5, 'constant' => 2491 ], [ 'income' => 140388, 'rate' => 26, 'constant' => 7471 ], [ 'income' => 200000, 'rate' => 29, 'constant' => 11683 ], [ 'income' => 200000, 'rate' => 33, 'constant' => 19683 ], ], 20150101 => [ [ 'income' => 44701, 'rate' => 15, 'constant' => 0 ], [ 'income' => 89401, 'rate' => 22, 'constant' => 3129 ], [ 'income' => 138586, 'rate' => 26, 'constant' => 6705 ], [ 'income' => 138586, 'rate' => 29, 'constant' => 10863 ], ], 20140101 => [ [ 'income' => 43953, 'rate' => 15, 'constant' => 0 ], [ 'income' => 87907, 'rate' => 22, 'constant' => 3077 ], [ 'income' => 136270, 'rate' => 26, 'constant' => 6593 ], [ 'income' => 136270, 'rate' => 29, 'constant' => 10681 ], ], 20130101 => [ [ 'income' => 43561, 'rate' => 15, 'constant' => 0 ], [ 'income' => 87123, 'rate' => 22, 'constant' => 3049 ], [ 'income' => 135054, 'rate' => 26, 'constant' => 6534 ], [ 'income' => 135054, 'rate' => 29, 'constant' => 10586 ], ], 20120101 => [ [ 'income' => 42707, 'rate' => 15, 'constant' => 0 ], [ 'income' => 85414, 'rate' => 22, 'constant' => 2989 ], [ 'income' => 132406, 'rate' => 26, 'constant' => 6406 ], [ 'income' => 132406, 'rate' => 29, 'constant' => 10378 ], ], 20110101 => [ [ 'income' => 41544, 'rate' => 15, 'constant' => 0 ], [ 'income' => 83088, 'rate' => 22, 'constant' => 2908 ], [ 'income' => 128800, 'rate' => 26, 'constant' => 6232 ], [ 'income' => 128800, 'rate' => 29, 'constant' => 10096 ], ], 20100101 => [ [ 'income' => 40970, 'rate' => 15, 'constant' => 0 ], [ 'income' => 81941, 'rate' => 22, 'constant' => 2868 ], [ 'income' => 127021, 'rate' => 26, 'constant' => 6146 ], [ 'income' => 127021, 'rate' => 29, 'constant' => 9956 ], ], 20090401 => [ [ 'income' => 41200, 'rate' => 15, 'constant' => 0 ], [ 'income' => 82399, 'rate' => 22, 'constant' => 2884 ], [ 'income' => 126264, 'rate' => 26, 'constant' => 6180 ], [ 'income' => 126264, 'rate' => 29, 'constant' => 9968 ], ], 20090101 => [ [ 'income' => 38832, 'rate' => 15, 'constant' => 0 ], [ 'income' => 77664, 'rate' => 22, 'constant' => 2718 ], [ 'income' => 126264, 'rate' => 26, 'constant' => 5825 ], [ 'income' => 126264, 'rate' => 29, 'constant' => 9613 ], ], 20080101 => [ [ 'income' => 37885, 'rate' => 15, 'constant' => 0 ], [ 'income' => 75769, 'rate' => 22, 'constant' => 2652 ], [ 'income' => 123184, 'rate' => 26, 'constant' => 5683 ], [ 'income' => 123184, 'rate' => 29, 'constant' => 9378 ], ], 20070101 => [ [ 'income' => 37178, 'rate' => 15.5, 'constant' => 0 ], [ 'income' => 74357, 'rate' => 22, 'constant' => 2417 ], [ 'income' => 120887, 'rate' => 26, 'constant' => 5391 ], [ 'income' => 120887, 'rate' => 29, 'constant' => 9017 ], ], 20060701 => [ [ 'income' => 36378, 'rate' => 15.5, 'constant' => 0 ], [ 'income' => 72756, 'rate' => 22, 'constant' => 2365 ], [ 'income' => 118285, 'rate' => 26, 'constant' => 5275 ], [ 'income' => 118285, 'rate' => 29, 'constant' => 8823 ], ], 20060101 => [ [ 'income' => 36378, 'rate' => 15, 'constant' => 0 ], [ 'income' => 72756, 'rate' => 22, 'constant' => 2546 ], [ 'income' => 118285, 'rate' => 26, 'constant' => 5457 ], [ 'income' => 118285, 'rate' => 29, 'constant' => 9005 ], ], 20050101 => [ [ 'income' => 35595, 'rate' => 16, 'constant' => 0 ], [ 'income' => 71190, 'rate' => 22, 'constant' => 2136 ], [ 'income' => 115739, 'rate' => 26, 'constant' => 4983 ], [ 'income' => 115739, 'rate' => 29, 'constant' => 8455 ], ], 20040101 => [ [ 'income' => 35000, 'rate' => 16, 'constant' => 0 ], [ 'income' => 70000, 'rate' => 22, 'constant' => 2100 ], [ 'income' => 113804, 'rate' => 26, 'constant' => 4900 ], [ 'income' => 113804, 'rate' => 29, 'constant' => 8314 ], ], 20030101 => [ [ 'income' => 35000, 'rate' => 16, 'constant' => 0 ], [ 'income' => 70000, 'rate' => 22, 'constant' => 2100 ], [ 'income' => 113804, 'rate' => 26, 'constant' => 4900 ], [ 'income' => 113804, 'rate' => 29, 'constant' => 8314 ], ], 20020101 => [ [ 'income' => 35000, 'rate' => 16, 'constant' => 0 ], [ 'income' => 70000, 'rate' => 22, 'constant' => 2100 ], [ 'income' => 113804, 'rate' => 26, 'constant' => 4900 ], [ 'income' => 113804, 'rate' => 29, 'constant' => 8314 ], ], 20010101 => [ [ 'income' => 35000, 'rate' => 16, 'constant' => 0 ], [ 'income' => 70000, 'rate' => 22, 'constant' => 2100 ], [ 'income' => 113804, 'rate' => 26, 'constant' => 4900 ], [ 'income' => 113804, 'rate' => 29, 'constant' => 8314 ], ], ]; function __construct() { global $db; $this->db = $db; return true; } /* Claim Code Functions */ function getBasicClaimCodeData( $date ) { foreach ( $this->basic_claim_code_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } return false; } function getBasicFederalClaimCodeAmount( $date = false ) { if ( $date == '' ) { $date = $this->getDate(); } $data = $this->getBasicClaimCodeData( $date ); if ( isset( $data['CA'] ) ) { //After 01-Jan-2020, BPAF variable was introduced, so see if the data is returned as an array or not. // Default to use the 'max' value unless otherwise specified as per the CPA formulas. if ( is_array( $data['CA'] ) ) { $retval = $data['CA']['max']; } else { $retval = $data['CA']; } return $retval; } return false; } function getBasicProvinceClaimCodeAmount( $date = false ) { if ( $date == '' ) { $date = $this->getDate(); } $data = $this->getBasicClaimCodeData( $date ); if ( isset( $data[$this->getProvince()] ) ) { //After 01-Jul-2020, BPAYT variable was introduced, so see if the data is returned as an array or not. // Default to use the 'max' value unless otherwise specified as per the CPA formulas. if ( is_array( $data[$this->getProvince()] ) ) { $retval = $data[$this->getProvince()]['max']; } else { $retval = $data[$this->getProvince()]; } return $retval; } return false; } /* Provincial tax/surtax reduction functions */ function getProvincialTaxReductionData( $date ) { if ( isset( $this->provincial_tax_reduction_options ) ) { foreach ( $this->provincial_tax_reduction_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } } return false; } function getProvincialSurTaxData( $date ) { if ( isset( $this->provincial_surtax_options ) ) { foreach ( $this->provincial_surtax_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } } return false; } /* Federal Employment Credit functions */ function getFederalEmploymentCreditData( $date ) { foreach ( $this->federal_employment_credit_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } return false; } function getFederalEmploymentCreditAmount() { $data = $this->getFederalEmploymentCreditData( $this->getDate() ); Debug::text( 'Date: ' . $this->getDate() . ' Credit: ' . $data['credit'], __FILE__, __LINE__, __METHOD__, 10 ); return $data['credit']; } /* CPP functions */ function getCPPData( $date ) { foreach ( $this->cpp_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } return false; } function getCPPMaximumEarnings() { $data = $this->getCPPData( $this->getDate() ); return $data['maximum_pensionable_earnings']; } function getCPPBasicExemption() { $data = $this->getCPPData( $this->getDate() ); return $data['basic_exemption']; } function getCPPEmployeeRate() { $data = $this->getCPPData( $this->getDate() ); Debug::text( 'Date: ' . $this->getDate() . ' Rate: ' . $data['employee_rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $data['employee_rate']; } function getCPPEmployeeMaximumContribution() { $data = $this->getCPPData( $this->getDate() ); return $data['employee_maximum_contribution']; } /* EI functions */ function getEIData( $date ) { foreach ( $this->ei_options as $effective_date => $data ) { if ( $date >= $effective_date ) { return $data; } } return false; } function getEIMaximumEarnings() { $data = $this->getEIData( $this->getDate() ); return $data['maximum_insurable_earnings']; } function getEIEmployeeRate() { $data = $this->getEIData( $this->getDate() ); return $data['employee_rate']; } function getEIEmployeeMaximumContribution() { $data = $this->getEIData( $this->getDate() ); return $data['employee_maximum_contribution']; } function getEIEmployerRate() { $data = $this->getEIData( $this->getDate() ); return $data['employer_rate']; } function getData() { // global $cache; // $country = $this->getCountry(); // $province = $this->getProvince(); $epoch = $this->getDate(); if ( $epoch == null || $epoch == '' ) { $epoch = $this->getISODate( TTDate::getTime() ); } //Debug::text( 'bUsing (' . $province . ') values from: ' . TTDate::getDate( 'DATE+TIME', $this->getDateEpoch( $epoch ) ), __FILE__, __LINE__, __METHOD__, 10 ); $this->income_tax_rates = false; if ( isset( $this->federal_income_tax_rate_options ) && count( $this->federal_income_tax_rate_options ) > 0 ) { foreach ( $this->getDataFromRateArray( $epoch, $this->federal_income_tax_rate_options ) as $effective_date => $data ) { $this->income_tax_rates['federal'][] = [ 'income' => $data['income'], 'rate' => ( $data['rate'] / 100 ), 'constant' => $data['constant'] ]; } } if ( isset( $this->provincial_income_tax_rate_options ) && count( $this->provincial_income_tax_rate_options ) > 0 ) { foreach ( $this->getDataFromRateArray( $epoch, $this->provincial_income_tax_rate_options ) as $effective_date => $data ) { $this->income_tax_rates['provincial'][] = [ 'income' => $data['income'], 'rate' => ( $data['rate'] / 100 ), 'constant' => $data['constant'] ]; } } return $this; } private function getRateArray( $income, $type ) { Debug::text( 'Calculating ' . $type . ' Taxes on: $' . $income, __FILE__, __LINE__, __METHOD__, 10 ); $blank_arr = [ 'rate' => null, 'constant' => null ]; if ( isset( $this->income_tax_rates[$type] ) ) { $rates = $this->income_tax_rates[$type]; } else { Debug::text( 'aNO INCOME TAX RATES FOUND!!!!!! ' . $type . ' Taxes on: $' . $income, __FILE__, __LINE__, __METHOD__, 10 ); return $blank_arr; } if ( count( $rates ) == 0 ) { Debug::text( 'bNO INCOME TAX RATES FOUND!!!!!! ' . $type . ' Taxes on: $' . $income, __FILE__, __LINE__, __METHOD__, 10 ); return $blank_arr; } $prev_value = 0; $total_rates = ( count( $rates ) - 1 ); $i = 0; foreach ( $rates as $key => $values ) { $value = $values['income']; if ( $income > $prev_value && $income <= $value ) { //Debug::text( 'Value: ' . $value . ' Rate: ' . $values['rate'] . ' Constant: ' . $values['constant'] . ' Previous Value: ' . $prev_value, __FILE__, __LINE__, __METHOD__, 10 ); return $this->income_tax_rates[$type][$key]; } else if ( $i == $total_rates ) { //Debug::text( 'Last Value: ' . $value . ' Rate: ' . $values['rate'] . ' Constant: ' . $values['constant'] . ' Previous Value: ' . $prev_value, __FILE__, __LINE__, __METHOD__, 10 ); return $this->income_tax_rates[$type][$key]; } $prev_value = $value; $i++; } return $blank_arr; } function getFederalLowestRate() { $arr = $this->getRateArray( 1, 'federal' ); Debug::text( 'Federal Lowest Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getFederalHighestRate() { $arr = $this->getRateArray( 999999999, 'federal' ); Debug::text( 'Federal Highest Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getFederalRate( $income ) { $arr = $this->getRateArray( $income, 'federal' ); Debug::text( 'Federal Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getFederalConstant( $income ) { $arr = $this->getRateArray( $income, 'federal' ); Debug::text( 'Federal Constant: ' . $arr['constant'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['constant']; } function getProvincialLowestRate() { $arr = $this->getRateArray( 1, 'provincial' ); Debug::text( 'Provincial Lowest Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getProvincialHighestRate() { $arr = $this->getRateArray( 999999999, 'provincial' ); Debug::text( 'Provincial Highest Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getProvincialRate( $income ) { $arr = $this->getRateArray( $income, 'provincial' ); Debug::text( 'Provincial Rate: ' . $arr['rate'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['rate']; } function getProvincialConstant( $income ) { $arr = $this->getRateArray( $income, 'provincial' ); Debug::text( 'Provincial Constant: ' . $arr['constant'], __FILE__, __LINE__, __METHOD__, 10 ); return $arr['constant']; } } ?>