@equisoft/tax-ca 2021.8.0 → 2022.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- import { FederalCode, ProvinceCode } from '../misc/code-types';
1
+ import { FederalCode, ProvinceCode } from '../misc';
2
2
  interface MaxWithdrawalPctByAge {
3
3
  [key: number]: number;
4
4
  }
5
5
  export declare const province1MaxWithdrawalPct: MaxWithdrawalPctByAge;
6
6
  export declare const province2MaxWithdrawalPct: MaxWithdrawalPctByAge;
7
- export declare const federalMaxWithdrawalPct: MaxWithdrawalPctByAge;
8
7
  export declare const othersMaxWithdrawalPct: MaxWithdrawalPctByAge;
8
+ export declare const federalMaxWithdrawalPct: MaxWithdrawalPctByAge;
9
9
  export declare function getMaxWithdrawalPct(jurisdiction: ProvinceCode | FederalCode, age: number): number;
10
10
  export {};
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
+ // tslint:disable:max-line-length
2
3
  /*
3
- Sources:
4
- Federal: http://www.osfi-bsif.gc.ca/Eng/pp-rr/faq/Pages/lif-frv.aspx
4
+ Sources
5
5
  Provincial: https://www.empire.ca/sites/default/files/2020-02/INV-996A-LIFMinMaxWithdrawalPercentages-EN-web_0.pdf
6
+ https://ca.rbcwealthmanagement.com/documents/634020/2289317/2021+-+Registered+Plan+Minimums+and+Maximums.pdf/ded97359-099d-4650-b626-67358d78f3af
7
+ Federal: http://www.osfi-bsif.gc.ca/Eng/pp-rr/faq/Pages/lif-frv.aspx
6
8
 
7
- Revised 2020-12-21
9
+ Revised
10
+ 2021-12-21
8
11
  */
12
+ // tslint:enable:max-line-length
9
13
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.getMaxWithdrawalPct = exports.othersMaxWithdrawalPct = exports.federalMaxWithdrawalPct = exports.province2MaxWithdrawalPct = exports.province1MaxWithdrawalPct = void 0;
11
- const math_1 = require("../utils/math");
14
+ exports.getMaxWithdrawalPct = exports.federalMaxWithdrawalPct = exports.othersMaxWithdrawalPct = exports.province2MaxWithdrawalPct = exports.province1MaxWithdrawalPct = void 0;
15
+ const utils_1 = require("../utils");
12
16
  /* Alberta (AB), British Columbia (BC), Ontario (ON), New Brunswick (NB),
13
17
  Newfoundland and Labrador (NL), Saskatchewan (SK)
14
- */
18
+ */
15
19
  exports.province1MaxWithdrawalPct = {
16
20
  54: 0.0640,
17
21
  55: 0.0645,
@@ -90,46 +94,6 @@ exports.province2MaxWithdrawalPct = {
90
94
  88: 0.1890,
91
95
  89: 0.2000,
92
96
  };
93
- // Federal
94
- exports.federalMaxWithdrawalPct = {
95
- 54: 0.040251,
96
- 55: 0.040662,
97
- 56: 0.041107,
98
- 57: 0.041589,
99
- 58: 0.042113,
100
- 59: 0.042683,
101
- 60: 0.043304,
102
- 61: 0.043983,
103
- 62: 0.044726,
104
- 63: 0.045541,
105
- 64: 0.046438,
106
- 65: 0.047429,
107
- 66: 0.048526,
108
- 67: 0.049746,
109
- 68: 0.051107,
110
- 69: 0.052635,
111
- 70: 0.054357,
112
- 71: 0.056309,
113
- 72: 0.058538,
114
- 73: 0.061102,
115
- 74: 0.064077,
116
- 75: 0.067563,
117
- 76: 0.071699,
118
- 77: 0.076427,
119
- 78: 0.081883,
120
- 79: 0.088251,
121
- 80: 0.095777,
122
- 81: 0.104811,
123
- 82: 0.115855,
124
- 83: 0.129661,
125
- 84: 0.147416,
126
- 85: 0.171091,
127
- 86: 0.20424,
128
- 87: 0.253968,
129
- 88: 0.336854,
130
- 89: 0.502636,
131
- 90: 1,
132
- };
133
97
  // Others: Northwest Territories (NT), Nunavut (NU), Prince Edward Island (PE), Yukon (YT)
134
98
  exports.othersMaxWithdrawalPct = {
135
99
  54: 0.0270,
@@ -176,6 +140,45 @@ exports.othersMaxWithdrawalPct = {
176
140
  95: 0.1879,
177
141
  96: 0.2000,
178
142
  };
143
+ // Federal
144
+ exports.federalMaxWithdrawalPct = {
145
+ 54: 0.044832,
146
+ 55: 0.045301,
147
+ 56: 0.045808,
148
+ 57: 0.046359,
149
+ 58: 0.046957,
150
+ 59: 0.047608,
151
+ 60: 0.048318,
152
+ 61: 0.049094,
153
+ 62: 0.049944,
154
+ 63: 0.050878,
155
+ 64: 0.051907,
156
+ 65: 0.053045,
157
+ 66: 0.054306,
158
+ 67: 0.05571,
159
+ 68: 0.05728,
160
+ 69: 0.059044,
161
+ 70: 0.061036,
162
+ 71: 0.0633,
163
+ 72: 0.06589,
164
+ 73: 0.068878,
165
+ 74: 0.072356,
166
+ 75: 0.076448,
167
+ 76: 0.08113,
168
+ 77: 0.086536,
169
+ 78: 0.092849,
170
+ 79: 0.100316,
171
+ 80: 0.109283,
172
+ 81: 0.12025,
173
+ 82: 0.133967,
174
+ 83: 0.151612,
175
+ 84: 0.175151,
176
+ 85: 0.208118,
177
+ 86: 0.257586,
178
+ 87: 0.340054,
179
+ 88: 0.505024,
180
+ 89: 1,
181
+ };
179
182
  function getMaxWithdrawalPct(jurisdiction, age) {
180
183
  switch (jurisdiction) {
181
184
  case 'AB':
@@ -184,15 +187,15 @@ function getMaxWithdrawalPct(jurisdiction, age) {
184
187
  case 'NB':
185
188
  case 'NL':
186
189
  case 'SK':
187
- return exports.province1MaxWithdrawalPct[(0, math_1.clamp)(age, 54, 90)];
190
+ return exports.province1MaxWithdrawalPct[utils_1.clamp(age, 54, 90)];
188
191
  case 'QC':
189
192
  case 'MB':
190
193
  case 'NS':
191
- return exports.province2MaxWithdrawalPct[(0, math_1.clamp)(age, 54, 89)];
194
+ return exports.province2MaxWithdrawalPct[utils_1.clamp(age, 54, 89)];
192
195
  case 'CA':
193
- return exports.federalMaxWithdrawalPct[(0, math_1.clamp)(age, 54, 90)];
196
+ return exports.federalMaxWithdrawalPct[utils_1.clamp(age, 54, 89)];
194
197
  default:
195
- return exports.othersMaxWithdrawalPct[(0, math_1.clamp)(age, 54, 96)];
198
+ return exports.othersMaxWithdrawalPct[utils_1.clamp(age, 54, 96)];
196
199
  }
197
200
  }
198
201
  exports.getMaxWithdrawalPct = getMaxWithdrawalPct;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
4
+ Sources
5
5
  http://www.getsmarteraboutmoney.ca/en/managing-your-money/investing/rrifs-and-annuities/Pages/Making-withdrawals-from-your-RRIF.aspx
6
6
 
7
- Revised 2020-12-21
7
+ Revised
8
+ 2021-12-21
8
9
  */
9
10
  // tslint:enable:max-line-length
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
4
+ Sources
5
5
  https://www.canada.ca/en/revenue-agency/services/tax/registered-plans-administrators/pspa/mp-rrsp-dpsp-tfsa-limits-ympe.html
6
6
 
7
- Revised 2020-12-21
7
+ Revised
8
+ 2021-12-21
8
9
  */
9
10
  // tslint:enable:max-line-length
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -14,5 +15,5 @@ exports.RRSP = {
14
15
  MIN: 55,
15
16
  MAX: 71,
16
17
  },
17
- MAX_CONTRIBUTION: 27830,
18
+ MAX_CONTRIBUTION: 29210,
18
19
  };
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
4
+ Sources
5
5
  https://www.canada.ca/en/revenue-agency/services/tax/registered-plans-administrators/pspa/mp-rrsp-dpsp-tfsa-limits-ympe.html
6
6
 
7
- Revised 2020-12-21
7
+ Revised
8
+ 2021-12-21
8
9
  */
9
10
  // tslint:enable:max-line-length
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -25,6 +25,7 @@ export interface ConsumerPriceIndex {
25
25
  2018: MonthlyConsumerPriceIndex;
26
26
  2019: MonthlyConsumerPriceIndex;
27
27
  2020: MonthlyConsumerPriceIndex;
28
+ 2021: MonthlyConsumerPriceIndex;
28
29
  }
29
30
  export declare const CONSUMER_PRICE_INDEX: ConsumerPriceIndex;
30
31
  export {};
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  https://www.bankofcanada.ca/rates/price-indexes/cpi/
5
+ Use column v41690973
5
6
 
6
7
  NOT USED BY FNA-ENGINE
7
- Revised 2019-12-23
8
+ Revised
9
+ 2021-12-21
8
10
  */
9
11
  Object.defineProperty(exports, "__esModule", { value: true });
10
12
  exports.CONSUMER_PRICE_INDEX = void 0;
@@ -175,6 +177,21 @@ exports.CONSUMER_PRICE_INDEX = {
175
177
  SEP: 136.9,
176
178
  OCT: 137.5,
177
179
  NOV: 137.7,
178
- DEC: 137.7,
180
+ DEC: 137.4,
181
+ },
182
+ 2021: {
183
+ JAN: 138.2,
184
+ FEB: 138.9,
185
+ MAR: 139.6,
186
+ APR: 140.3,
187
+ MAY: 141.0,
188
+ JUN: 141.4,
189
+ JUL: 142.3,
190
+ AUG: 142.6,
191
+ SEP: 142.9,
192
+ OCT: 143.9,
193
+ NOV: 144.2,
194
+ // DEC is estimated using the difference between OCT and NOV.
195
+ DEC: 144.5,
179
196
  },
180
197
  };
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  https://www.iqpf.org/docs/default-source/outils/iqpf-normes-projection2021.pdf
5
5
 
6
- Revised 2021-05-05
6
+ Revised
7
+ 2021-05-05
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.IQPF = void 0;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  http://app.iqpf.org/?locale=en#/guidelines/life-expectancy
5
5
 
6
- Revised 2020-12-21
6
+ Revised
7
+ 2020-12-21
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.LIFE_EXPECTANCY = void 0;
@@ -1,19 +1,17 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  http://www.cra-arc.gc.ca/tx/bsnss/tpcs/pyrll/clcltng/cpp-rpc/cnt-chrt-pf-eng.html
5
- Excutive decision to calculate AVG_MAX with AVG(YMPE2019+YMPE2020+YMPE2021+YMPE2021 for 2022+YMPE2021 for 2023)
6
- because YMPE is overinflated following coronavirus pandemic. Executive deciision to calculate SUP_MAX with
7
- YMPE2021*1.14 because YMPE is overinflated following coronavirus pandemic.
8
5
  https://www.canada.ca/en/services/benefits/publicpensions/cpp/payment-amounts.html
6
+ https://www.canada.ca/en/services/benefits/publicpensions/cpp/old-age-security/cpp-price.html
9
7
  ---
10
8
  http://www.esdc.gc.ca/en/cpp/survivor_pension.page
11
9
  http://www.esdc.gc.ca/en/cpp/death_benefit.page
12
10
  http://www.esdc.gc.ca/en/reports/pension/cpp_technical_amendments.page
13
- http://www.esdc.gc.ca/en/cpp/consumer_price_index.page
14
11
  http://www.statcan.gc.ca/tables-tableaux/sum-som/l01/cst01/econ46a-eng.htm
15
12
 
16
- Revised 2021-01-05
13
+ Revised
14
+ 2022-01-04
17
15
  */
18
16
  Object.defineProperty(exports, "__esModule", { value: true });
19
17
  exports.CPP = void 0;
@@ -22,12 +20,12 @@ const math_1 = require("../utils/math");
22
20
  exports.CPP = {
23
21
  CONTRIBUTIONS: {
24
22
  PENSIONABLE_EARNINGS: {
25
- MAX: 61600,
23
+ MAX: 64900,
26
24
  MIN: 3500,
27
- // Average YPE of the last 5 year (including current year)
28
- AVG_MAX: 57780,
25
+ // Average YMPE of the last 5 year (including current year)
26
+ AVG_MAX: 59700,
29
27
  // 114% of AVG_MAX
30
- SUP_MAX: 65869,
28
+ SUP_MAX: 68058,
31
29
  SUP_FACTORS: [
32
30
  { FROM: 2019, TO: 2023, FACTOR: 1 },
33
31
  { FROM: 2024, TO: 2024, FACTOR: 1.07 },
@@ -49,24 +47,24 @@ exports.CPP = {
49
47
  DEATH_BENEFIT: { RATE: 0.5 },
50
48
  DEFAULT_REFERENCE_AGE: 65,
51
49
  FLAT_BENEFIT: {
52
- ORPHAN: 3090.96,
53
- DISABILITY: 16963.92,
54
- UNDER_45: 7808.64,
55
- UNDER_45_WITH_CHILD: 7808.64,
56
- UNDER_45_DISABLED: 7808.64,
57
- FROM_45_TO_64: 7808.64,
58
- OVER_64_WITHOUT_PENSION: 8667.00,
50
+ ORPHAN: 3174.36,
51
+ DISABILITY: 17577.96,
52
+ UNDER_45: 8097.48,
53
+ UNDER_45_WITH_CHILD: 8097.48,
54
+ UNDER_45_DISABLED: 8097.48,
55
+ FROM_45_TO_64: 8097.48,
56
+ OVER_64_WITHOUT_PENSION: 9025.80,
59
57
  },
60
58
  getRequestDateFactor(birthDate, requestDate, customReferenceDate) {
61
59
  const { BONUS, PENALTY } = this.MONTHLY_DELAY;
62
- const minRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MIN_REQUEST_AGE);
63
- const maxRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MAX_REQUEST_AGE);
64
- const referenceDate = customReferenceDate || (0, date_1.addYearsToDate)(birthDate, this.DEFAULT_REFERENCE_AGE);
65
- const monthsToToday = (0, date_1.getMonthsDiff)(birthDate, (0, date_1.now)());
66
- const monthsToMinRequestDate = (0, date_1.getMonthsDiff)(birthDate, minRequestDate);
67
- const monthsToMaxRequestDate = (0, date_1.getMonthsDiff)(birthDate, maxRequestDate);
68
- const monthsToReferenceDate = (0, date_1.getMonthsDiff)(birthDate, referenceDate);
69
- const monthsToRequestDate = (0, date_1.getMonthsDiff)(birthDate, requestDate);
60
+ const minRequestDate = date_1.addYearsToDate(birthDate, this.MIN_REQUEST_AGE);
61
+ const maxRequestDate = date_1.addYearsToDate(birthDate, this.MAX_REQUEST_AGE);
62
+ const referenceDate = customReferenceDate || date_1.addYearsToDate(birthDate, this.DEFAULT_REFERENCE_AGE);
63
+ const monthsToToday = date_1.getMonthsDiff(birthDate, date_1.now());
64
+ const monthsToMinRequestDate = date_1.getMonthsDiff(birthDate, minRequestDate);
65
+ const monthsToMaxRequestDate = date_1.getMonthsDiff(birthDate, maxRequestDate);
66
+ const monthsToReferenceDate = date_1.getMonthsDiff(birthDate, referenceDate);
67
+ const monthsToRequestDate = date_1.getMonthsDiff(birthDate, requestDate);
70
68
  const monthsToLastBirthDay = monthsToToday - (monthsToToday % 12);
71
69
  // Request date is before minimum request date
72
70
  if (monthsToRequestDate < monthsToMinRequestDate) {
@@ -80,13 +78,13 @@ exports.CPP = {
80
78
  if (monthsToToday > monthsToReferenceDate && monthsToRequestDate < monthsToLastBirthDay) {
81
79
  return 1;
82
80
  }
83
- let monthsDelta = (0, math_1.clamp)(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
81
+ let monthsDelta = math_1.clamp(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
84
82
  monthsDelta -= Math.max(monthsToLastBirthDay, monthsToReferenceDate);
85
83
  return 1 + monthsDelta * (monthsDelta >= 0 ? BONUS : PENALTY);
86
84
  },
87
85
  getAverageIndexationRate() {
88
86
  const sum = this.INDEXATION_RATE_REFERENCES.reduce((previous, current) => previous + current[1], 0);
89
- return (0, math_1.roundToPrecision)(sum / this.INDEXATION_RATE_REFERENCES.length, 3);
87
+ return math_1.roundToPrecision(sum / this.INDEXATION_RATE_REFERENCES.length, 3);
90
88
  },
91
89
  INDEXATION_RATE_REFERENCES: [
92
90
  [2007, 0.020],
@@ -104,6 +102,7 @@ exports.CPP = {
104
102
  [2019, 0.023],
105
103
  [2020, 0.019],
106
104
  [2021, 0.010],
105
+ [2022, 0.027],
107
106
  ],
108
107
  MAX_INCOME: {
109
108
  1966: 5000,
@@ -162,10 +161,11 @@ exports.CPP = {
162
161
  2019: 57400,
163
162
  2020: 58700,
164
163
  2021: 61600,
164
+ 2022: 64900,
165
165
  },
166
166
  MAX_PENSION: {
167
- RETIREMENT: 14445.00,
168
- COMBINED_RETIREMENT_SURVIVOR: 14445.00,
167
+ RETIREMENT: 15043.08,
168
+ COMBINED_RETIREMENT_SURVIVOR: 15085.56,
169
169
  DEATH_BENEFIT: 2500,
170
170
  },
171
171
  MAX_REQUEST_AGE: 70,
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  https://www.canada.ca/en/services/benefits/publicpensions/cpp/old-age-security/benefit-amount.html
5
5
  https://www.canada.ca/en/services/benefits/publicpensions/cpp/old-age-security/recovery-tax.html
6
6
  https://www.canada.ca/en/services/benefits/publicpensions/cpp/old-age-security/eligibility.html (delay bonus)
7
7
  https://www.canada.ca/en/services/benefits/publicpensions/cpp/old-age-security/payments.html
8
8
 
9
- Revised 2021-11-16
9
+ Revised
10
+ 2021-12-21
10
11
  */
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.OAS = void 0;
@@ -14,12 +15,12 @@ const date_1 = require("../utils/date");
14
15
  const math_1 = require("../utils/math");
15
16
  exports.OAS = {
16
17
  getRequestDateFactor(birthDate, requestDate) {
17
- const minRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MIN_AGE);
18
- const maxRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MAX_AGE);
19
- const monthsToToday = (0, date_1.getMonthsDiff)(birthDate, (0, date_1.now)());
20
- const monthsToMinRequestDate = (0, date_1.getMonthsDiff)(birthDate, minRequestDate);
21
- const monthsToMaxRequestDate = (0, date_1.getMonthsDiff)(birthDate, maxRequestDate);
22
- const monthsToRequestDate = (0, date_1.getMonthsDiff)(birthDate, requestDate);
18
+ const minRequestDate = date_1.addYearsToDate(birthDate, this.MIN_AGE);
19
+ const maxRequestDate = date_1.addYearsToDate(birthDate, this.MAX_AGE);
20
+ const monthsToToday = date_1.getMonthsDiff(birthDate, date_1.now());
21
+ const monthsToMinRequestDate = date_1.getMonthsDiff(birthDate, minRequestDate);
22
+ const monthsToMaxRequestDate = date_1.getMonthsDiff(birthDate, maxRequestDate);
23
+ const monthsToRequestDate = date_1.getMonthsDiff(birthDate, requestDate);
23
24
  const monthsToLastBirthDay = monthsToToday - (monthsToToday % 12);
24
25
  // Request date is before minimum request date
25
26
  if (monthsToRequestDate < monthsToMinRequestDate) {
@@ -29,7 +30,7 @@ exports.OAS = {
29
30
  if (monthsToMaxRequestDate < monthsToToday || monthsToRequestDate < monthsToLastBirthDay) {
30
31
  return 1;
31
32
  }
32
- let monthsDelta = (0, math_1.clamp)(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
33
+ let monthsDelta = math_1.clamp(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
33
34
  monthsDelta -= Math.max(monthsToLastBirthDay, monthsToMinRequestDate);
34
35
  return 1 + (monthsDelta * this.MONTHLY_DELAY_BONUS);
35
36
  },
@@ -39,7 +40,7 @@ exports.OAS = {
39
40
  MONTHLY_DELAY_BONUS: 0.006,
40
41
  REPAYMENT: {
41
42
  MAX: 129757,
42
- MIN: 79054,
43
+ MIN: 79845,
43
44
  RATIO: 0.15,
44
45
  },
45
46
  };
@@ -32,7 +32,7 @@ export interface FlatBenefit {
32
32
  FROM_45_TO_64: number;
33
33
  OVER_64_WITHOUT_PENSION: number;
34
34
  }
35
- export declare type IndexationRateReferenceYear = 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021;
35
+ export declare type IndexationRateReferenceYear = 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022;
36
36
  export declare type IndexationRateReference = [IndexationRateReferenceYear, number];
37
37
  export interface MaxPension {
38
38
  RETIREMENT: number;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
4
+ Sources
5
5
  http://www.rrq.gouv.qc.ca/en/programmes/regime_rentes/regime_chiffres/Pages/regime_chiffres.aspx
6
6
  https://www.rrq.gouv.qc.ca/en/services/publications/regime_rentes/retraite/Pages/tableaux-revenus-travail-admissibles.aspx
7
7
 
8
- Revised 2021-01-05
8
+ Revised
9
+ 2022-01-04
9
10
  */
10
11
  // tslint:enable:max-line-length
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -15,12 +16,12 @@ const math_1 = require("../utils/math");
15
16
  exports.QPP = {
16
17
  CONTRIBUTIONS: {
17
18
  PENSIONABLE_EARNINGS: {
18
- MAX: 61600,
19
+ MAX: 64900,
19
20
  MIN: 3500,
20
21
  // Average YPE of the last 5 year (including current year)
21
- AVG_MAX: 57780,
22
+ AVG_MAX: 59700,
22
23
  // 114% of AVG_MAX
23
- SUP_MAX: 65869,
24
+ SUP_MAX: 68058,
24
25
  SUP_FACTORS: [
25
26
  { FROM: 2019, TO: 2023, FACTOR: 1 },
26
27
  { FROM: 2024, TO: 2024, FACTOR: 1.07 },
@@ -42,24 +43,24 @@ exports.QPP = {
42
43
  DEATH_BENEFIT: { RATE: 0.5 },
43
44
  DEFAULT_REFERENCE_AGE: 65,
44
45
  FLAT_BENEFIT: {
45
- ORPHAN: 3090.96,
46
- DISABILITY: 16997.40,
47
- UNDER_45: 6941.04,
48
- UNDER_45_WITH_CHILD: 11062.68,
49
- UNDER_45_DISABLED: 11500.80,
50
- FROM_45_TO_64: 11500.80,
51
- OVER_64_WITHOUT_PENSION: 8577.36,
46
+ ORPHAN: 3174.36,
47
+ DISABILITY: 17565.96,
48
+ UNDER_45: 7268.16,
49
+ UNDER_45_WITH_CHILD: 11501.16,
50
+ UNDER_45_DISABLED: 11951.04,
51
+ FROM_45_TO_64: 11951.04,
52
+ OVER_64_WITHOUT_PENSION: 9013.80,
52
53
  },
53
54
  getRequestDateFactor(birthDate, requestDate, customReferenceDate) {
54
55
  const { BONUS, PENALTY } = this.MONTHLY_DELAY;
55
- const minRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MIN_REQUEST_AGE);
56
- const maxRequestDate = (0, date_1.addYearsToDate)(birthDate, this.MAX_REQUEST_AGE);
57
- const referenceDate = customReferenceDate || (0, date_1.addYearsToDate)(birthDate, this.DEFAULT_REFERENCE_AGE);
58
- const monthsToToday = (0, date_1.getMonthsDiff)(birthDate, (0, date_1.now)());
59
- const monthsToMinRequestDate = (0, date_1.getMonthsDiff)(birthDate, minRequestDate);
60
- const monthsToMaxRequestDate = (0, date_1.getMonthsDiff)(birthDate, maxRequestDate);
61
- const monthsToReferenceDate = (0, date_1.getMonthsDiff)(birthDate, referenceDate);
62
- const monthsToRequestDate = (0, date_1.getMonthsDiff)(birthDate, requestDate);
56
+ const minRequestDate = date_1.addYearsToDate(birthDate, this.MIN_REQUEST_AGE);
57
+ const maxRequestDate = date_1.addYearsToDate(birthDate, this.MAX_REQUEST_AGE);
58
+ const referenceDate = customReferenceDate || date_1.addYearsToDate(birthDate, this.DEFAULT_REFERENCE_AGE);
59
+ const monthsToToday = date_1.getMonthsDiff(birthDate, date_1.now());
60
+ const monthsToMinRequestDate = date_1.getMonthsDiff(birthDate, minRequestDate);
61
+ const monthsToMaxRequestDate = date_1.getMonthsDiff(birthDate, maxRequestDate);
62
+ const monthsToReferenceDate = date_1.getMonthsDiff(birthDate, referenceDate);
63
+ const monthsToRequestDate = date_1.getMonthsDiff(birthDate, requestDate);
63
64
  const monthsToLastBirthDay = monthsToToday - (monthsToToday % 12);
64
65
  // Request date is before minimum request date
65
66
  if (monthsToRequestDate < monthsToMinRequestDate) {
@@ -73,13 +74,13 @@ exports.QPP = {
73
74
  if (monthsToToday > monthsToReferenceDate && monthsToRequestDate < monthsToLastBirthDay) {
74
75
  return 1;
75
76
  }
76
- let monthsDelta = (0, math_1.clamp)(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
77
+ let monthsDelta = math_1.clamp(monthsToRequestDate, monthsToMinRequestDate, monthsToMaxRequestDate);
77
78
  monthsDelta -= Math.max(monthsToLastBirthDay, monthsToReferenceDate);
78
79
  return 1 + monthsDelta * (monthsDelta >= 0 ? BONUS : PENALTY);
79
80
  },
80
81
  getAverageIndexationRate() {
81
82
  const sum = this.INDEXATION_RATE_REFERENCES.reduce((previous, current) => previous + current[1], 0);
82
- return (0, math_1.roundToPrecision)(sum / this.INDEXATION_RATE_REFERENCES.length, 2);
83
+ return math_1.roundToPrecision(sum / this.INDEXATION_RATE_REFERENCES.length, 2);
83
84
  },
84
85
  INDEXATION_RATE_REFERENCES: [
85
86
  [2007, 0.021],
@@ -97,6 +98,7 @@ exports.QPP = {
97
98
  [2019, 0.023],
98
99
  [2020, 0.019],
99
100
  [2021, 0.010],
101
+ [2022, 0.027],
100
102
  ],
101
103
  MAX_INCOME: {
102
104
  1966: 5000,
@@ -155,10 +157,11 @@ exports.QPP = {
155
157
  2019: 57400,
156
158
  2020: 58700,
157
159
  2021: 61600,
160
+ 2022: 64900,
158
161
  },
159
162
  MAX_PENSION: {
160
- RETIREMENT: 14499.12,
161
- COMBINED_RETIREMENT_SURVIVOR: 14499.12,
163
+ RETIREMENT: 15043.08,
164
+ COMBINED_RETIREMENT_SURVIVOR: 15043.08,
162
165
  DEATH_BENEFIT: 2500,
163
166
  },
164
167
  MAX_REQUEST_AGE: 70,
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  /*
3
- Revised 2020-12-22
3
+ Revised
4
+ 2021-12-22
4
5
  */
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
7
  exports.SPP = void 0;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
4
- non-eligible dividends: https://www.taxtips.ca/dtc/non-eligible-dividend-tax-credit.htm
5
- eligible dividends: https://www.taxtips.ca/dtc/eligible-dividends/eligible-dividend-tax-credit-rates.htm
3
+ Sources
4
+ Non-eligible Dividends: https://www.taxtips.ca/dtc/non-eligible-dividend-tax-credit.htm
5
+ Eligible Dividends: https://www.taxtips.ca/dtc/eligible-dividends/eligible-dividend-tax-credit-rates.htm
6
6
 
7
- Revised 2021-11-02
7
+ Revised
8
+ 2022-01-04
8
9
  */
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
11
  exports.ELIGIBLE_DIVIDEND = exports.NON_ELIGIBLE_DIVIDEND = void 0;
@@ -15,14 +16,14 @@ exports.NON_ELIGIBLE_DIVIDEND = {
15
16
  BC: 0.0196,
16
17
  MB: 0.007835,
17
18
  NB: 0.0275,
18
- NL: 0.035,
19
+ NL: 0.032,
19
20
  NS: 0.0299,
20
21
  NT: 0.06,
21
22
  NU: 0.0261,
22
23
  ON: 0.029863,
23
- PE: 0.0196,
24
- QC: 0.0401,
25
- SK: 0.01695,
24
+ PE: 0.013,
25
+ QC: 0.0342,
26
+ SK: 0.02105,
26
27
  YT: 0.0067,
27
28
  };
28
29
  exports.ELIGIBLE_DIVIDEND = {
@@ -32,7 +33,7 @@ exports.ELIGIBLE_DIVIDEND = {
32
33
  BC: 0.12,
33
34
  MB: 0.08,
34
35
  NB: 0.14,
35
- NL: 0.054,
36
+ NL: 0.063,
36
37
  NS: 0.0885,
37
38
  NT: 0.115,
38
39
  NU: 0.0551,
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
5
- https://www.canada.ca/en/employment-social-development/programs/ei/ei-list/ei-employers/2021-maximum-insurable-earnings.html
4
+ Sources
5
+ https://www.canada.ca/en/employment-social-development/programs/ei/ei-list/ei-employers/2022-maximum-insurable-earnings.html
6
6
 
7
- Revised 2021-01-05
7
+ Revised
8
+ 2021-12-22
8
9
  */
9
10
  // tslint:enable:max-line-length
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
11
12
  exports.EI = void 0;
12
13
  exports.EI = {
13
- MAX_INSURABLE_EARNINGS: 56300,
14
+ MAX_INSURABLE_EARNINGS: 60300,
14
15
  PREMIUM_RATES: {
15
16
  CA: 0.0158,
16
17
  QC: 0.0120,
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  // tslint:disable:max-line-length
3
3
  /*
4
- Sources:
4
+ Sources
5
5
  http://www.taxtips.ca/marginaltaxrates.htm
6
6
  Abattement QC: http://www.cra-arc.gc.ca/tx/ndvdls/tpcs/ncm-tx/rtrn/cmpltng/ddctns/lns409-485/440-fra.html
7
7
 
8
- Revised 2020-12-22
8
+ Revised
9
+ 2021-12-22
9
10
  */
10
11
  // tslint:enable:max-line-length
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -17,25 +18,25 @@ exports.TAX_BRACKETS = {
17
18
  CA: {
18
19
  ABATEMENT: 0,
19
20
  TAX_CREDIT_RATE: 0.15,
20
- BASE_TAX_CREDIT: 13808,
21
+ BASE_TAX_CREDIT: 14398,
21
22
  RATES: [{
22
23
  FROM: 0,
23
- TO: 49020,
24
+ TO: 50197,
24
25
  RATE: 0.15,
25
26
  }, {
26
- FROM: 49020,
27
- TO: 98040,
27
+ FROM: 50197,
28
+ TO: 100392,
28
29
  RATE: 0.205,
29
30
  }, {
30
- FROM: 98040,
31
- TO: 151978,
31
+ FROM: 100392,
32
+ TO: 155625,
32
33
  RATE: 0.26,
33
34
  }, {
34
- FROM: 151978,
35
- TO: 216511,
36
- RATE: 0.29,
35
+ FROM: 155625,
36
+ TO: 221708,
37
+ RATE: 0.2938,
37
38
  }, {
38
- FROM: 216511,
39
+ FROM: 221708,
39
40
  TO: 999999999,
40
41
  RATE: 0.33,
41
42
  }],
@@ -79,30 +80,30 @@ exports.TAX_BRACKETS = {
79
80
  BC: {
80
81
  ABATEMENT: 0,
81
82
  TAX_CREDIT_RATE: 0.0506,
82
- BASE_TAX_CREDIT: 11070,
83
+ BASE_TAX_CREDIT: 11302,
83
84
  RATES: [{
84
85
  FROM: 0,
85
- TO: 42184,
86
+ TO: 43070,
86
87
  RATE: 0.0506,
87
88
  }, {
88
- FROM: 42184,
89
- TO: 84369,
89
+ FROM: 43070,
90
+ TO: 86141,
90
91
  RATE: 0.077,
91
92
  }, {
92
- FROM: 84369,
93
- TO: 96866,
93
+ FROM: 86141,
94
+ TO: 98901,
94
95
  RATE: 0.105,
95
96
  }, {
96
- FROM: 96866,
97
- TO: 117623,
97
+ FROM: 98901,
98
+ TO: 120094,
98
99
  RATE: 0.1229,
99
100
  }, {
100
- FROM: 117623,
101
- TO: 159483,
101
+ FROM: 120094,
102
+ TO: 162832,
102
103
  RATE: 0.147,
103
104
  }, {
104
- FROM: 159483,
105
- TO: 222420,
105
+ FROM: 162832,
106
+ TO: 227091,
106
107
  RATE: 0.168,
107
108
  }, {
108
109
  FROM: 222420,
@@ -118,7 +119,7 @@ exports.TAX_BRACKETS = {
118
119
  MB: {
119
120
  ABATEMENT: 0,
120
121
  TAX_CREDIT_RATE: 0.108,
121
- BASE_TAX_CREDIT: 9936,
122
+ BASE_TAX_CREDIT: 10145,
122
123
  RATES: [{
123
124
  FROM: 0,
124
125
  TO: 33723,
@@ -140,26 +141,26 @@ exports.TAX_BRACKETS = {
140
141
  },
141
142
  NB: {
142
143
  ABATEMENT: 0,
143
- TAX_CREDIT_RATE: 0.0968,
144
- BASE_TAX_CREDIT: 10564,
144
+ TAX_CREDIT_RATE: 0.094,
145
+ BASE_TAX_CREDIT: 10817,
145
146
  RATES: [{
146
147
  FROM: 0,
147
- TO: 43835,
148
- RATE: 0.0968,
148
+ TO: 44887,
149
+ RATE: 0.0940,
149
150
  }, {
150
- FROM: 43835,
151
- TO: 87671,
151
+ FROM: 44887,
152
+ TO: 89775,
152
153
  RATE: 0.1482,
153
154
  }, {
154
- FROM: 87671,
155
- TO: 142534,
155
+ FROM: 89775,
156
+ TO: 145955,
156
157
  RATE: 0.1652,
157
158
  }, {
158
- FROM: 142534,
159
- TO: 162383,
159
+ FROM: 145955,
160
+ TO: 166280,
160
161
  RATE: 0.1784,
161
162
  }, {
162
- FROM: 162383,
163
+ FROM: 166280,
163
164
  TO: 999999999,
164
165
  RATE: 0.2030,
165
166
  }],
@@ -172,27 +173,39 @@ exports.TAX_BRACKETS = {
172
173
  NL: {
173
174
  ABATEMENT: 0,
174
175
  TAX_CREDIT_RATE: 0.087,
175
- BASE_TAX_CREDIT: 9536,
176
+ BASE_TAX_CREDIT: 9804,
176
177
  RATES: [{
177
178
  FROM: 0,
178
- TO: 38081,
179
+ TO: 39147,
179
180
  RATE: 0.087,
180
181
  }, {
181
- FROM: 38081,
182
- TO: 76161,
182
+ FROM: 39147,
183
+ TO: 78294,
183
184
  RATE: 0.145,
184
185
  }, {
185
- FROM: 76161,
186
- TO: 135973,
186
+ FROM: 78294,
187
+ TO: 139780,
187
188
  RATE: 0.158,
188
189
  }, {
189
- FROM: 135973,
190
- TO: 190363,
191
- RATE: 0.173,
190
+ FROM: 139780,
191
+ TO: 195693,
192
+ RATE: 0.178,
192
193
  }, {
193
- FROM: 190363,
194
+ FROM: 195693,
195
+ TO: 250000,
196
+ RATE: 0.198,
197
+ }, {
198
+ FROM: 250000,
199
+ TO: 500000,
200
+ RATE: 0.208,
201
+ }, {
202
+ FROM: 500000,
203
+ TO: 1000000,
204
+ RATE: 0.213,
205
+ }, {
206
+ FROM: 1000000,
194
207
  TO: 999999999,
195
- RATE: 0.183,
208
+ RATE: 0.218,
196
209
  }],
197
210
  SURTAX_RATES: [{
198
211
  FROM: 0,
@@ -234,7 +247,7 @@ exports.TAX_BRACKETS = {
234
247
  PE: {
235
248
  ABATEMENT: 0,
236
249
  TAX_CREDIT_RATE: 0.098,
237
- BASE_TAX_CREDIT: 10500,
250
+ BASE_TAX_CREDIT: 11250,
238
251
  RATES: [{
239
252
  FROM: 0,
240
253
  TO: 31984,
@@ -261,17 +274,17 @@ exports.TAX_BRACKETS = {
261
274
  ON: {
262
275
  ABATEMENT: 0,
263
276
  TAX_CREDIT_RATE: 0.0505,
264
- BASE_TAX_CREDIT: 10880,
277
+ BASE_TAX_CREDIT: 11141,
265
278
  RATES: [{
266
279
  FROM: 0,
267
- TO: 45142,
280
+ TO: 46226,
268
281
  RATE: 0.0505,
269
282
  }, {
270
- FROM: 45142,
271
- TO: 90287,
283
+ FROM: 46226,
284
+ TO: 92454,
272
285
  RATE: 0.0915,
273
286
  }, {
274
- FROM: 90287,
287
+ FROM: 92454,
275
288
  TO: 150000,
276
289
  RATE: 0.1116,
277
290
  }, {
@@ -285,14 +298,14 @@ exports.TAX_BRACKETS = {
285
298
  }],
286
299
  SURTAX_RATES: [{
287
300
  FROM: 0,
288
- TO: 4874,
301
+ TO: 4991,
289
302
  RATE: 0,
290
303
  }, {
291
- FROM: 4874,
292
- TO: 6237,
304
+ FROM: 4991,
305
+ TO: 6387,
293
306
  RATE: 0.20,
294
307
  }, {
295
- FROM: 6237,
308
+ FROM: 6387,
296
309
  TO: 999999999,
297
310
  RATE: 0.56, // 0.20 + 0.36
298
311
  }],
@@ -300,21 +313,21 @@ exports.TAX_BRACKETS = {
300
313
  QC: {
301
314
  ABATEMENT: 0.165,
302
315
  TAX_CREDIT_RATE: 0.15,
303
- BASE_TAX_CREDIT: 15728,
316
+ BASE_TAX_CREDIT: 16143,
304
317
  RATES: [{
305
318
  FROM: 0,
306
- TO: 45105,
319
+ TO: 46295,
307
320
  RATE: 0.15,
308
321
  }, {
309
- FROM: 45105,
310
- TO: 90200,
322
+ FROM: 46295,
323
+ TO: 92580,
311
324
  RATE: 0.20,
312
325
  }, {
313
- FROM: 90200,
314
- TO: 109755,
326
+ FROM: 92580,
327
+ TO: 112655,
315
328
  RATE: 0.24,
316
329
  }, {
317
- FROM: 109755,
330
+ FROM: 112655,
318
331
  TO: 999999999,
319
332
  RATE: 0.2575,
320
333
  }],
@@ -327,17 +340,17 @@ exports.TAX_BRACKETS = {
327
340
  SK: {
328
341
  ABATEMENT: 0,
329
342
  TAX_CREDIT_RATE: 0.105,
330
- BASE_TAX_CREDIT: 16225,
343
+ BASE_TAX_CREDIT: 16615,
331
344
  RATES: [{
332
345
  FROM: 0,
333
- TO: 45677,
346
+ TO: 46773,
334
347
  RATE: 0.105,
335
348
  }, {
336
- FROM: 45677,
337
- TO: 130506,
349
+ FROM: 46773,
350
+ TO: 133638,
338
351
  RATE: 0.125,
339
352
  }, {
340
- FROM: 130506,
353
+ FROM: 133638,
341
354
  TO: 999999999,
342
355
  RATE: 0.145,
343
356
  }],
@@ -350,21 +363,21 @@ exports.TAX_BRACKETS = {
350
363
  NT: {
351
364
  ABATEMENT: 0,
352
365
  TAX_CREDIT_RATE: 0.059,
353
- BASE_TAX_CREDIT: 15243,
366
+ BASE_TAX_CREDIT: 15609,
354
367
  RATES: [{
355
368
  FROM: 0,
356
- TO: 44396,
369
+ TO: 45462,
357
370
  RATE: 0.059,
358
371
  }, {
359
- FROM: 44396,
360
- TO: 88796,
372
+ FROM: 45462,
373
+ TO: 90927,
361
374
  RATE: 0.086,
362
375
  }, {
363
- FROM: 88796,
364
- TO: 144362,
376
+ FROM: 90927,
377
+ TO: 147826,
365
378
  RATE: 0.122,
366
379
  }, {
367
- FROM: 144362,
380
+ FROM: 147826,
368
381
  TO: 999999999,
369
382
  RATE: 0.1405,
370
383
  }],
@@ -377,21 +390,21 @@ exports.TAX_BRACKETS = {
377
390
  NU: {
378
391
  ABATEMENT: 0,
379
392
  TAX_CREDIT_RATE: 0.04,
380
- BASE_TAX_CREDIT: 16467,
393
+ BASE_TAX_CREDIT: 16862,
381
394
  RATES: [{
382
395
  FROM: 0,
383
- TO: 46740,
396
+ TO: 47862,
384
397
  RATE: 0.04,
385
398
  }, {
386
- FROM: 46740,
387
- TO: 93480,
399
+ FROM: 47862,
400
+ TO: 95724,
388
401
  RATE: 0.07,
389
402
  }, {
390
- FROM: 93480,
391
- TO: 151978,
403
+ FROM: 95724,
404
+ TO: 155625,
392
405
  RATE: 0.09,
393
406
  }, {
394
- FROM: 151978,
407
+ FROM: 155625,
395
408
  TO: 999999999,
396
409
  RATE: 0.115,
397
410
  }],
@@ -404,25 +417,25 @@ exports.TAX_BRACKETS = {
404
417
  YT: {
405
418
  ABATEMENT: 0,
406
419
  TAX_CREDIT_RATE: 0.064,
407
- BASE_TAX_CREDIT: 13808,
420
+ BASE_TAX_CREDIT: 14398,
408
421
  RATES: [{
409
422
  FROM: 0,
410
- TO: 49020,
423
+ TO: 50197,
411
424
  RATE: 0.064,
412
425
  }, {
413
- FROM: 49020,
414
- TO: 98040,
426
+ FROM: 50197,
427
+ TO: 100392,
415
428
  RATE: 0.09,
416
429
  }, {
417
- FROM: 98040,
418
- TO: 151978,
430
+ FROM: 100392,
431
+ TO: 155625,
419
432
  RATE: 0.109,
420
433
  }, {
421
- FROM: 151978,
422
- TO: 216511,
423
- RATE: 0.1294,
434
+ FROM: 155625,
435
+ TO: 221708,
436
+ RATE: 0.1296,
424
437
  }, {
425
- FROM: 216511,
438
+ FROM: 221708,
426
439
  TO: 500000,
427
440
  RATE: 0.128,
428
441
  }, {
@@ -527,27 +540,27 @@ exports.getProvincialBaseCredit = getProvincialBaseCredit;
527
540
  function getTotalMarginalRate(provincialCode, grossIncome, inflationRate = 0, yearsToInflate = 0) {
528
541
  const provRate = getProvincialMarginalRate(provincialCode, grossIncome, inflationRate, yearsToInflate);
529
542
  const fedRate = getFederalMarginalRate(provincialCode, grossIncome, inflationRate, yearsToInflate);
530
- return (0, utils_1.roundToPrecision)(provRate + fedRate, 4);
543
+ return utils_1.roundToPrecision(provRate + fedRate, 4);
531
544
  }
532
545
  exports.getTotalMarginalRate = getTotalMarginalRate;
533
546
  function getMaxProvincialMarginalRate(provincialCode) {
534
547
  // tslint:disable-next-line:no-non-null-assertion
535
- const marginalRate = (0, collections_1.maxBy)(getTaxRates(provincialCode), (bracket) => bracket.TO).RATE;
548
+ const marginalRate = collections_1.maxBy(getTaxRates(provincialCode), (bracket) => bracket.TO).RATE;
536
549
  // tslint:disable-next-line:no-non-null-assertion
537
- const surtaxRate = (0, collections_1.maxBy)(getSurtaxRates(provincialCode), bracket => bracket.TO).RATE;
550
+ const surtaxRate = collections_1.maxBy(getSurtaxRates(provincialCode), bracket => bracket.TO).RATE;
538
551
  return marginalRate + (marginalRate * surtaxRate);
539
552
  }
540
553
  exports.getMaxProvincialMarginalRate = getMaxProvincialMarginalRate;
541
554
  function getMaxFederalMarginalRate(provincialCode) {
542
555
  // tslint:disable-next-line:no-non-null-assertion
543
- const maxRate = (0, collections_1.maxBy)(getTaxRates(code_types_1.FEDERAL_CODE), bracket => bracket.TO).RATE;
556
+ const maxRate = collections_1.maxBy(getTaxRates(code_types_1.FEDERAL_CODE), bracket => bracket.TO).RATE;
544
557
  return maxRate * (1 - getAbatement(provincialCode));
545
558
  }
546
559
  exports.getMaxFederalMarginalRate = getMaxFederalMarginalRate;
547
560
  function getTotalMaxMarginalRate(provincialCode) {
548
561
  const provRate = getMaxProvincialMarginalRate(provincialCode);
549
562
  const fedRate = getMaxFederalMarginalRate(provincialCode);
550
- return (0, utils_1.roundToPrecision)(provRate + fedRate, 4);
563
+ return utils_1.roundToPrecision(provRate + fedRate, 4);
551
564
  }
552
565
  exports.getTotalMaxMarginalRate = getTotalMaxMarginalRate;
553
566
  function getTotalTaxAmount(provincialCode, grossIncome, inflationRate = 0, yearsToInflate = 0) {
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  /*
3
- Sources:
3
+ Sources
4
4
  https://www.rqap.gouv.qc.ca/fr/a-propos-du-regime/information-generale/cotisations-et-revenu-maximal-assurable
5
5
 
6
- Revised 2020-12-22
6
+ Revised
7
+ 2021-12-22
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.QPIP = void 0;
10
11
  exports.QPIP = {
11
- MAX_INSURABLE_EARNINGS: 83500,
12
+ MAX_INSURABLE_EARNINGS: 88000,
12
13
  PREMIUM_RATES: {
13
14
  SELF_EMPLOYED: 0.00878,
14
15
  SALARIED: 0.00494,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equisoft/tax-ca",
3
- "version": "2021.8.0",
3
+ "version": "2022.0.0",
4
4
  "description": "Canadian tax data and calculation functions.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,8 +35,8 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@equisoft/tslint-config": "~0.0.8",
38
- "@types/jest": "~27.0.1",
39
- "@types/node": "^16.0.0",
38
+ "@types/jest": "~27.4.0",
39
+ "@types/node": "^17.0.7",
40
40
  "jest": "~24.9.0",
41
41
  "jest-junit": "~13.0.0",
42
42
  "ts-jest": "~24.3.0",