1211 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			1211 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*********************************************************************************
 | |
|  *
 | |
|  * TimeTrex is a Workforce Management program developed by
 | |
|  * TimeTrex Software Inc. Copyright (C) 2003 - 2021 TimeTrex Software Inc.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it under
 | |
|  * the terms of the GNU Affero General Public License version 3 as published by
 | |
|  * the Free Software Foundation with the addition of the following permission
 | |
|  * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 | |
|  * WORK IN WHICH THE COPYRIGHT IS OWNED BY TIMETREX, TIMETREX DISCLAIMS THE
 | |
|  * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful, but WITHOUT
 | |
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | |
|  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 | |
|  * details.
 | |
|  *
 | |
|  *
 | |
|  * You should have received a copy of the GNU Affero General Public License along
 | |
|  * with this program; if not, see http://www.gnu.org/licenses or write to the Free
 | |
|  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | |
|  * 02110-1301 USA.
 | |
|  *
 | |
|  *
 | |
|  * You can contact TimeTrex headquarters at Unit 22 - 2475 Dobbin Rd. Suite
 | |
|  * #292 West Kelowna, BC V4T 2E9, Canada or at email address info@timetrex.com.
 | |
|  *
 | |
|  *
 | |
|  * The interactive user interfaces in modified source and object code versions
 | |
|  * of this program must display Appropriate Legal Notices, as required under
 | |
|  * Section 5 of the GNU Affero General Public License version 3.
 | |
|  *
 | |
|  *
 | |
|  * In accordance with Section 7(b) of the GNU Affero General Public License
 | |
|  * version 3, these Appropriate Legal Notices must retain the display of the
 | |
|  * "Powered by TimeTrex" logo. If the display of the logo is not reasonably
 | |
|  * feasible for technical reasons, the Appropriate Legal Notices must display
 | |
|  * the words "Powered by TimeTrex".
 | |
|  *
 | |
|  ********************************************************************************/
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * @package PayrollDeduction\CA
 | |
|  */
 | |
| class PayrollDeduction_CA_Data extends PayrollDeduction_Base {
 | |
| 	var $db = null;
 | |
| 	var $income_tax_rates = [];
 | |
| 	var $country_primary_currency = 'CAD';
 | |
| 
 | |
| 	//***Update PayrollDeduction.class.php with updated date/version
 | |
| 
 | |
| 	/*
 | |
| 		Claim Code Basic Amounts
 | |
| 	*/
 | |
| 	var $basic_claim_code_options = [
 | |
| 			20220701 => [ //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'];
 | |
| 	}
 | |
| }
 | |
| 
 | |
| ?>
 |