[ [ 'income' => 46226, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 92454, 'rate' => 9.15, 'constant' => 1895 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3754 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 5254 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7454 ], ], 20210101 => [ [ 'income' => 45142, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 90287, 'rate' => 9.15, 'constant' => 1851 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3666 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 5166 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7366 ], ], 20200101 => [ [ 'income' => 44740, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 89482, 'rate' => 9.15, 'constant' => 1834 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3633 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 5133 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7333 ], ], 20190101 => [ [ 'income' => 43906, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 87813, 'rate' => 9.15, 'constant' => 1800 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3565 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 5065 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7265 ], ], 20180101 => [ [ 'income' => 42960, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 85923, 'rate' => 9.15, 'constant' => 1761 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3488 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 4988 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7188 ], ], 20170101 => [ [ 'income' => 42201, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 84404, 'rate' => 9.15, 'constant' => 1730 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3427 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 4927 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7127 ], ], 20160101 => [ [ 'income' => 41536, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 83075, 'rate' => 9.15, 'constant' => 1703 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3373 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 4873 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7073 ], ], 20150101 => [ [ 'income' => 40922, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 81847, 'rate' => 9.15, 'constant' => 1678 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3323 ], [ 'income' => 220000, 'rate' => 12.16, 'constant' => 4823 ], [ 'income' => 220000, 'rate' => 13.16, 'constant' => 7023 ], ], 20140901 => [ [ 'income' => 40120, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 80242, 'rate' => 9.15, 'constant' => 1645 ], [ 'income' => 150000, 'rate' => 11.16, 'constant' => 3258 ], [ 'income' => 220000, 'rate' => 14.16, 'constant' => 7758 ], [ 'income' => 514090, 'rate' => 13.16, 'constant' => -6206 ], [ 'income' => 514090, 'rate' => 17.16, 'constant' => 14358 ], ], 20140101 => [ [ 'income' => 40120, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 80242, 'rate' => 9.15, 'constant' => 1645 ], [ 'income' => 514090, 'rate' => 11.16, 'constant' => 3258 ], [ 'income' => 514090, 'rate' => 13.16, 'constant' => 13540 ], ], 20130101 => [ [ 'income' => 39723, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 79448, 'rate' => 9.15, 'constant' => 1629 ], [ 'income' => 509000, 'rate' => 11.16, 'constant' => 3226 ], [ 'income' => 509000, 'rate' => 13.16, 'constant' => 13406 ], ], 20120101 => [ [ 'income' => 39020, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 78043, 'rate' => 9.15, 'constant' => 1600 ], [ 'income' => 78043, 'rate' => 11.16, 'constant' => 3168 ], ], 20110101 => [ [ 'income' => 37774, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 75550, 'rate' => 9.15, 'constant' => 1549 ], [ 'income' => 75550, 'rate' => 11.16, 'constant' => 3067 ], ], 20100101 => [ [ 'income' => 37106, 'rate' => 5.05, 'constant' => 0 ], [ 'income' => 74214, 'rate' => 9.15, 'constant' => 1521 ], [ 'income' => 74214, 'rate' => 11.16, 'constant' => 3013 ], ], 20090101 => [ [ 'income' => 36848, 'rate' => 6.05, 'constant' => 0 ], [ 'income' => 73698, 'rate' => 9.15, 'constant' => 1142 ], [ 'income' => 73698, 'rate' => 11.16, 'constant' => 2624 ], ], 20080101 => [ [ 'income' => 36020, 'rate' => 6.05, 'constant' => 0 ], [ 'income' => 72041, 'rate' => 9.15, 'constant' => 1117 ], [ 'income' => 72041, 'rate' => 11.16, 'constant' => 2565 ], ], 20070101 => [ [ 'income' => 35488, 'rate' => 6.05, 'constant' => 0 ], [ 'income' => 70976, 'rate' => 9.15, 'constant' => 1100 ], [ 'income' => 70976, 'rate' => 11.16, 'constant' => 2527 ], ], 20060101 => [ [ 'income' => 34758, 'rate' => 6.05, 'constant' => 0 ], [ 'income' => 69517, 'rate' => 9.15, 'constant' => 1077 ], [ 'income' => 69517, 'rate' => 11.16, 'constant' => 2475 ], ], ]; /* Provincial surtax - V1 */ var $provincial_surtax_options = [ 20220101 => [ 'income1' => 4991, 'income2' => 6387, 'rate1' => 0.20, 'rate2' => 0.36, ], 20210101 => [ 'income1' => 4874, 'income2' => 6237, 'rate1' => 0.20, 'rate2' => 0.36, ], 20200101 => [ 'income1' => 4830, 'income2' => 6182, 'rate1' => 0.20, 'rate2' => 0.36, ], 20190101 => [ 'income1' => 4740, 'income2' => 6067, 'rate1' => 0.20, 'rate2' => 0.36, ], 20180101 => [ 'income1' => 4638, 'income2' => 5936, 'rate1' => 0.20, 'rate2' => 0.36, ], 20170101 => [ 'income1' => 4556, 'income2' => 5831, 'rate1' => 0.20, 'rate2' => 0.36, ], 20160101 => [ 'income1' => 4484, 'income2' => 5739, 'rate1' => 0.20, 'rate2' => 0.36, ], 20150101 => [ 'income1' => 4418, 'income2' => 5654, 'rate1' => 0.20, 'rate2' => 0.36, ], 20140101 => [ 'income1' => 4331, 'income2' => 5543, 'rate1' => 0.20, 'rate2' => 0.36, ], 20130101 => [ 'income1' => 4289, 'income2' => 5489, 'rate1' => 0.20, 'rate2' => 0.36, ], 20120101 => [ 'income1' => 4213, 'income2' => 5392, 'rate1' => 0.20, 'rate2' => 0.36, ], 20110101 => [ 'income1' => 4078, 'income2' => 5219, 'rate1' => 0.20, 'rate2' => 0.36, ], 20100101 => [ 'income1' => 4006, 'income2' => 5127, 'rate1' => 0.20, 'rate2' => 0.36, ], 20090101 => [ 'income1' => 4257, 'income2' => 5370, 'rate1' => 0.20, 'rate2' => 0.36, ], 20080101 => [ 'income1' => 4162, 'income2' => 5249, 'rate1' => 0.20, 'rate2' => 0.36, ], 20070101 => [ 'income1' => 4100, 'income2' => 5172, 'rate1' => 0.20, 'rate2' => 0.36, ], 20060101 => [ 'income1' => 4016, 'income2' => 5065, 'rate1' => 0.20, 'rate2' => 0.36, ], ]; /* Provincial tax reduction - S2 */ var $provincial_tax_reduction_options = [ 20220101 => [ 'amount' => 257, ], 20210101 => [ 'amount' => 251, ], 20200101 => [ 'amount' => 249, ], 20190101 => [ 'amount' => 244, ], 20180101 => [ 'amount' => 239, ], 20170101 => [ 'amount' => 235, ], 20160101 => [ 'amount' => 231, ], 20150101 => [ 'amount' => 228, ], 20140101 => [ 'amount' => 223, ], 20130101 => [ 'amount' => 221, ], 20120101 => [ 'amount' => 217, ], 20110101 => [ 'amount' => 210, ], 20100101 => [ 'amount' => 206, ], 20090101 => [ 'amount' => 205, ], 20080101 => [ 'amount' => 201, ], 20070101 => [ 'amount' => 198, ], 20060101 => [ 'amount' => 194, ], ]; function getProvincialTaxReduction() { // $A = $this->getAnnualTaxableIncome(); $T4 = $this->getProvincialBasicTax(); $V1 = $this->getProvincialSurtax(); $Y = 0; $S = 0; Debug::text( 'ON Specific - Province: ' . $this->getProvince(), __FILE__, __LINE__, __METHOD__, 10 ); $tax_reduction_data = $this->getProvincialTaxReductionData( $this->getDate() ); if ( is_array( $tax_reduction_data ) ) { $tmp_Sa = bcadd( $T4, $V1 ); $tmp_Sb = bcsub( bcmul( 2, bcadd( $tax_reduction_data['amount'], $Y ) ), bcadd( $T4, $V1 ) ); if ( $tmp_Sa < $tmp_Sb ) { $S = $tmp_Sa; } else { $S = $tmp_Sb; } } Debug::text( 'aS: ' . $S, __FILE__, __LINE__, __METHOD__, 10 ); if ( $S < 0 ) { $S = 0; } Debug::text( 'bS: ' . $S, __FILE__, __LINE__, __METHOD__, 10 ); return $S; } function getProvincialSurtax() { /* V1 = For Ontario Where T4 <= 4016 V1 = 0 Where T4 > 4016 <= 5065 V1 = 0.20 * ( T4 - 4016 ) Where T4 > 5065 V1 = 0.20 * (T4 - 4016) + 0.36 * (T4 - 5065) */ $V1 = 0; $T4 = $this->getProvincialBasicTax(); $surtax_data = $this->getProvincialSurTaxData( $this->getDate() ); if ( is_array( $surtax_data ) ) { if ( $T4 < $surtax_data['income1'] ) { $V1 = 0; } else if ( $T4 > $surtax_data['income1'] && $T4 <= $surtax_data['income2'] ) { $V1 = bcmul( $surtax_data['rate1'], bcsub( $T4, $surtax_data['income1'] ) ); } else if ( $T4 > $surtax_data['income2'] ) { $V1 = bcadd( bcmul( $surtax_data['rate1'], bcsub( $T4, $surtax_data['income1'] ) ), bcmul( $surtax_data['rate2'], bcsub( $T4, $surtax_data['income2'] ) ) ); } } Debug::text( 'V1: ' . $V1, __FILE__, __LINE__, __METHOD__, 10 ); return $V1; } function getAdditionalProvincialSurtax() { /* V2 = Where A < 20,000 V2 = 0 Where A > */ $A = $this->getAnnualTaxableIncome(); $V2 = 0; if ( $this->getDate() >= 20060101 ) { if ( $A < 20000 ) { $V2 = 0; } else if ( $A > 20000 && $A <= 36000 ) { $tmp_V2 = bcmul( 0.06, bcsub( $A, 20000 ) ); if ( $tmp_V2 > 300 ) { $V2 = 300; } else { $V2 = $tmp_V2; } } else if ( $A > 36000 && $A <= 48000 ) { $tmp_V2 = bcadd( 300, bcmul( 0.06, bcsub( $A, 36000 ) ) ); if ( $tmp_V2 > 450 ) { $V2 = 450; } else { $V2 = $tmp_V2; } } else if ( $A > 48000 && $A <= 72000 ) { $tmp_V2 = bcadd( 450, bcmul( 0.25, bcsub( $A, 48000 ) ) ); if ( $tmp_V2 > 600 ) { $V2 = 600; } else { $V2 = $tmp_V2; } } else if ( $A > 72000 && $A <= 200000 ) { $tmp_V2 = bcadd( 600, bcmul( 0.25, bcsub( $A, 72000 ) ) ); if ( $tmp_V2 > 750 ) { $V2 = 750; } else { $V2 = $tmp_V2; } } else if ( $A > 200000 ) { $tmp_V2 = bcadd( 750, bcmul( 0.25, bcsub( $A, 200000 ) ) ); if ( $tmp_V2 > 900 ) { $V2 = 900; } else { $V2 = $tmp_V2; } } } Debug::text( 'V2: ' . $V2, __FILE__, __LINE__, __METHOD__, 10 ); return $V2; } } ?>