@equisoft/tax-ca
Advanced tools
Comparing version 2020.4.1 to 2020.4.2
@@ -139,3 +139,3 @@ declare const _default: { | ||
}; | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
getAverageIndexationRate(): string; | ||
@@ -169,3 +169,3 @@ getMPEA(year: number): number; | ||
OAS: { | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
MAX_AGE: number; | ||
@@ -217,3 +217,3 @@ MIN_AGE: number; | ||
}; | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
getAverageIndexationRate(): number; | ||
@@ -220,0 +220,0 @@ INDEXATION_RATE_REFERENCES: number[][]; |
@@ -1,1 +0,1 @@ | ||
!function(T,E){if("object"==typeof exports&&"object"==typeof module)module.exports=E();else if("function"==typeof define&&define.amd)define([],E);else{var A=E();for(var R in A)("object"==typeof exports?exports:T)[R]=A[R]}}(this,(function(){return function(T){var E={};function A(R){if(E[R])return E[R].exports;var t=E[R]={i:R,l:!1,exports:{}};return T[R].call(t.exports,t,t.exports,A),t.l=!0,t.exports}return A.m=T,A.c=E,A.d=function(T,E,R){A.o(T,E)||Object.defineProperty(T,E,{enumerable:!0,get:R})},A.r=function(T){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(T,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(T,"__esModule",{value:!0})},A.t=function(T,E){if(1&E&&(T=A(T)),8&E)return T;if(4&E&&"object"==typeof T&&T&&T.__esModule)return T;var R=Object.create(null);if(A.r(R),Object.defineProperty(R,"default",{enumerable:!0,value:T}),2&E&&"string"!=typeof T)for(var t in T)A.d(R,t,function(E){return T[E]}.bind(null,t));return R},A.n=function(T){var E=T&&T.__esModule?function(){return T.default}:function(){return T};return A.d(E,"a",E),E},A.o=function(T,E){return Object.prototype.hasOwnProperty.call(T,E)},A.p="",A(A.s=2)}([function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.monthsDelta=function(T,E){return E.getMonth()-T.getMonth()+12*(E.getFullYear()-T.getFullYear())-(E.getDate()<T.getDate()?1:0)}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.clamp=function(T,E,A){return T<=E?E:T>=A?A:T},E.roundToPrecision=function(T,E=0){return isNaN(T)?0:Math.round(T*Math.pow(10,E))/Math.pow(10,E)}},function(T,E,A){"use strict";var R=this&&this.__importDefault||function(T){return T&&T.__esModule?T:{default:T}};const t=R(A(3)),O=R(A(4)),e=R(A(5)),_=R(A(6)),M=R(A(7)),N=R(A(8)),r=R(A(9)),n=R(A(10)),S=R(A(11)),i=R(A(12)),o=R(A(13)),a=R(A(14)),F=A(15),I=R(A(17));T.exports={INVESTMENTS:{LIF:t.default,RRIF:O.default,TFSA:_.default,RRSP:e.default},PENSION:{CPP:n.default,OAS:S.default,QPP:i.default,SPP:o.default},TAXES:{EI:a.default,INCOME_TAX:F.INCOME_TAX,QPIP:I.default},MISC:{CPI:M.default,IQPF:N.default,LIFE_EXPECTANCY:r.default}}},function(T,E,A){"use strict";T.exports={MAX_WITHDRAWAL_PCT:{54:.0424,55:.0428,56:.0432,57:.0437,58:.0443,59:.0448,60:.0455,61:.0462,62:.0469,63:.0478,64:.0487,65:.0497,66:.0508,67:.0521,68:.0535,69:.055,70:.0567,71:.0587,72:.061,73:.0635,74:.0665,75:.07,76:.0741,77:.0788,78:.0843,79:.0906,80:.0981,81:.1071,82:.1181,83:.1319,84:.1496,85:.1732,86:.2062,87:.2558,88:.3385,89:.5038,90:1}}},function(T,E,A){"use strict";T.exports={MIN_WITHDRAWAL_PCT:{50:.025,51:.0256,52:.0263,53:.027,54:.0278,55:.0286,56:.0294,57:.0303,58:.0313,59:.0323,60:.0333,61:.0345,62:.0357,63:.037,64:.0385,65:.04,66:.0417,67:.0435,68:.0455,69:.0476,70:.05,71:.0528,72:.054,73:.0553,74:.0567,75:.0582,76:.0598,77:.0617,78:.0636,79:.0658,80:.0682,81:.0708,82:.0738,83:.0771,84:.0808,85:.0851,86:.0899,87:.0955,88:.1021,89:.1099,90:.1192,91:.1306,92:.1449,93:.1634,94:.1879,95:.2}}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:27230}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:6e3,ROUNDING_FACTOR:500}},function(T,E,A){"use strict";T.exports={2009:{JAN:113,FEB:113.8,MAR:114,APR:113.9,MAY:114.7,JUN:115.1,JUL:114.7,AUG:114.7,SEP:114.7,OCT:114.6,NOV:115.2,DEC:114.8},2010:{JAN:115.1,FEB:115.6,MAR:115.6,APR:116,MAY:116.3,JUN:116.2,JUL:116.8,AUG:116.7,SEP:116.9,OCT:117.4,NOV:117.5,DEC:117.5},2011:{JAN:117.8,FEB:118.1,MAR:119.4,APR:119.8,MAY:120.6,JUN:119.8,JUL:120,AUG:120.3,SEP:120.6,OCT:120.8,NOV:120.9,DEC:120.2},2012:{JAN:120.7,FEB:121.2,MAR:121.7,APR:122.2,MAY:122.1,JUN:121.6,JUL:121.5,AUG:121.8,SEP:122,OCT:122.2,NOV:121.9,DEC:121.2},2013:{JAN:121.3,FEB:122.7,MAR:122.9,APR:122.7,MAY:123,JUN:123,JUL:123.1,AUG:123.1,SEP:123.3,OCT:123,NOV:123,DEC:122.7},2014:{JAN:123.1,FEB:124.1,MAR:124.8,APR:125.2,MAY:125.8,JUN:125.9,JUL:125.7,AUG:125.7,SEP:125.8,OCT:125.9,NOV:125.4,DEC:124.5},2015:{JAN:124.3,FEB:125.4,MAR:126.3,APR:126.2,MAY:126.9,JUN:127.2,JUL:127.3,AUG:127.3,SEP:127.1,OCT:127.2,NOV:127.1,DEC:126.5},2016:{JAN:126.8,FEB:127.1,MAR:127.9,APR:128.3,MAY:128.8,JUN:129.1,JUL:128.9,AUG:128.7,SEP:128.8,OCT:129.1,NOV:128.6,DEC:128.4},2017:{JAN:129.5,FEB:129.7,MAR:129.9,APR:130.4,MAY:130.5,JUN:130.4,JUL:130.4,AUG:130.5,SEP:130.8,OCT:130.9,NOV:131.3,DEC:130.8},2018:{JAN:131.7,FEB:132.5,MAR:132.9,APR:133.3,MAY:133.4,JUN:133.6,JUL:134.3,AUG:134.2,SEP:134.3,OCT:134.1,NOV:133.5,DEC:133.4},2019:{JAN:133.6,FEB:134.5,MAR:135.4,APR:136,MAY:136.6,JUN:136.3,JUL:137,AUG:136.8,SEP:136.2,OCT:136.6,NOV:136.4,DEC:136.4}}},function(T,E,A){"use strict";T.exports={INFLATION:.021,RETURN_RATES:{SHORT_TERM:.03,FIXED_INCOME:.039,CANADIAN_EQUITIES:.061,CONSERVATIVE_PORTFOLIO:.032,BALANCED_PORTFOLIO:.037,DYNAMIC_PORTFOLIO:.045},BORROWING_RATE:.05}},function(T,E,A){"use strict";T.exports={MALE:{0:95,5:95,10:95,15:95,20:95,25:95,30:95,35:94,40:94,45:94,50:94,55:94,60:94,65:94,70:94,75:94,80:94,85:95,90:96,95:99,100:102},FEMALE:{0:97,5:97,10:97,15:97,20:97,25:97,30:97,35:97,40:97,45:96,50:96,55:96,60:96,65:96,70:96,75:96,80:96,85:97,90:98,95:100,100:103}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16651.92,UNDER_45:7519.56,UNDER_45_WITH_CHILD:7659.36,UNDER_45_DISABLED:7659.36,FROM_45_TO_64:7659.36,OVER_64_WITHOUT_PENSION:8466},getRequestDateFactor(T,E){let A=R.monthsDelta(T,E);return A=t.clamp(A,12*this.MIN_REQUEST_AGE,12*this.MAX_REQUEST_AGE),1+(A-=12*this.DEFAULT_REFERENCE_AGE)*(A>=0?this.MONTHLY_DELAY.BONUS:this.MONTHLY_DELAY.PENALTY)},getAverageIndexationRate(){const T=(this.INDEXATION_RATES_REFERENCES.reduce((T,E)=>T+E[1],0)/this.INDEXATION_RATES_REFERENCES.length).toString();return Number.parseFloat(T).toPrecision(3)},getMPEA(T){return(this.MAX_INCOME[T-4]+this.MAX_INCOME[T-3]+this.MAX_INCOME[T-2]+this.MAX_INCOME[T-1]+this.MAX_INCOME[T])/5},getPostRetirementBenefit:(T,E,A,R)=>T/E*.00625*A*R/12,INDEXATION_RATES_REFERENCES:[[2007,.02],[2008,.022],[2009,.023],[2010,.003],[2011,.018],[2012,.029],[2013,.015],[2014,.009],[2015,.02],[2016,.011],[2017,.014],[2018,.016],[2019,.023]],MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:14109.96,SURVIVOR_OVER_46:8466,SURVIVOR_UNDER_65:7659.36,DEATH_BENEFIT:2500},MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";const R=A(0);T.exports={getRequestDateFactor(T,E){let A=R.monthsDelta(T,E);return A=Math.min(A,12*this.MAX_AGE),(A-=12*this.MIN_AGE)<0?0:1+A*this.MONTHLY_DELAY_BONUS},MAX_AGE:70,MIN_AGE:65,MONTHLY_PAYMENT_MAX:613.53,MONTHLY_DELAY_BONUS:.006,REPAYMENT:{MAX:126058,MIN:77580,RATIO:.15}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16661.52,UNDER_45:6857.76,UNDER_45_WITH_CHILD:10938.6,UNDER_45_DISABLED:11372.4,FROM_45_TO_64:11372.4,OVER_64_WITHOUT_PENSION:8479.8},getRequestDateFactor(T,E){let A=R.monthsDelta(T,E);return A=t.clamp(A,12*this.MIN_REQUEST_AGE,12*this.MAX_REQUEST_AGE),1+(A-=12*this.DEFAULT_REFERENCE_AGE)*(A>=0?this.MONTHLY_DELAY.BONUS:this.MONTHLY_DELAY.PENALTY)},getAverageIndexationRate(){const T=this.INDEXATION_RATE_REFERENCES.reduce((T,E)=>T+E[1],0);return t.roundToPrecision(T/this.INDEXATION_RATE_REFERENCES.length,2)},INDEXATION_RATE_REFERENCES:[[2007,.021],[2008,.02],[2009,.025],[2010,.004],[2011,.017],[2012,.028],[2013,.018],[2014,.009],[2015,.018],[2016,.012],[2017,.02],[2018,.015],[2019,.023]],MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:20196.72,SURVIVOR_OVER_64:8479.8,SURVIVOR_FROM_45_TO_64:11372.4,SURVIVOR_UNDER_45:6857.76,DEATH_BENEFIT:2500},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";T.exports={MAX_BRIDGE_BENEFIT_AGE:65,MIN_AGE:55}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:54200,PREMIUM_RATES:{CA:.0158,QC:.012}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0});const R=A(16);E.INCOME_TAX={FEDERAL_CODE:"CA",calculateEffectiveTaxRate(T,E){if(T<=0)return 0;const A=this.getProvincialTaxAmount(E,T,0,0),R=this.getProvincialBaseCredit(E,0,0),t=this.getFederalTaxAmount(T,0,0),O=this.getFederalBaseCredit(0,0),e=this.getProvincialAbatement(E,t-O);return(Math.max(t-O-e,0)+Math.max(A-R,0))/T},getFederalMarginalRate(T,E,A=0,R=0){const t=this.getFederalTaxAmount(E,A,R),O=this.getFederalBaseCredit(A,R),e=this.getProvincialAbatement(T,t-O);return E<=0?0:Math.max(t-O-e,0)/E},getFederalTaxAmount(T,E=0,A=0){let R=0;return this.TAX_BRACKETS.CA.RATES.forEach(t=>{const O=t.FROM*Math.pow(1+E,A);if(O<T){const e=t.TO*Math.pow(1+E,A);R+=(Math.min(T,e)-O)*t.RATE}}),R},getFederalBaseCredit(T,E){return this.TAX_BRACKETS.CA.BASE_TAX_CREDIT*this.TAX_BRACKETS.CA.TAX_CREDIT_RATE*Math.pow(1+T,E)},getProvincialAbatement(T,E){return this.TAX_BRACKETS[T].ABATEMENT*E},getProvincialTaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].RATES.forEach(T=>{const O=T.FROM*Math.pow(1+A,R);if(O<E){const e=T.TO*Math.pow(1+A,R);t+=(Math.min(E,e)-O)*T.RATE}}),t},getProvincialSurtaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{const O=T.FROM*Math.pow(1+A,R);if(O<E){const e=T.TO*Math.pow(1+A,R);t+=(Math.min(E,e)-O)*T.RATE}}),t},getProvincialMarginalRate(T,E,A=0,R=0){let t=0;const O=this.getProvincialTaxAmount(T,E,A,R);this.TAX_BRACKETS[T].RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<E&&(t=T.RATE)});let e=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<O&&(e=T.RATE)}),t*(1+e)},getProvincialBaseCredit(T,E,A){return this.TAX_BRACKETS[T].BASE_TAX_CREDIT*this.TAX_BRACKETS[T].RATES[0].RATE*Math.pow(1+E,A)},getTotalMarginalRate(T,E,A=0,R=0){return this.getProvincialMarginalRate(T,E,A,R)+this.getFederalMarginalRate(T,E,A,R)},getMaxProvincialMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[T].RATES,T=>T.TO).RATE*(1+R.maxBy(this.TAX_BRACKETS[T].SURTAX_RATES,T=>T.TO).RATE)},getMaxFederalMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[this.FEDERAL_CODE].RATES,T=>T.TO).RATE*(1-this.TAX_BRACKETS[T].ABATEMENT)},getTotalMaxMarginalRate(T){return(this.getMaxProvincialMarginalRate(T)+this.getMaxFederalMarginalRate(T)).toPrecision(4)},getTotalTaxAmount(T,E,A=0,R=0){const t=this.getProvincialTaxAmount(T,E,A,R);return t+this.getProvincialSurtaxAmount(T,t,A,R)+this.getFederalTaxAmount(E,A,R)},PROVINCIAL_CODES:{ALBERTA:"AB",BRITISH_COLUMBIA:"BC",MANITOBA:"MB",NEW_BRUNSWICK:"NB",NEWFOUNDLAND:"NL",NOVA_SCOTIA:"NS",PRINCE_EDWARD_ISLAND:"PE",ONTARIO:"ON",QUEBEC:"QC",SASKATCHEWAN:"SK",NORTHWEST_TERRITORIES:"NT",NUNAVUT:"NU",YUKON:"YT"},TAX_BRACKETS:{CA:{ABATEMENT:0,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.15},{FROM:48535,TO:97069,RATE:.205},{FROM:97069,TO:150473,RATE:.26},{FROM:150473,TO:214368,RATE:.29},{FROM:214368,TO:999999999,RATE:.33}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},AB:{ABATEMENT:0,TAX_CREDIT_RATE:.1,BASE_TAX_CREDIT:19369,RATES:[{FROM:0,TO:131220,RATE:.1},{FROM:131220,TO:157464,RATE:.12},{FROM:157464,TO:209952,RATE:.13},{FROM:209952,TO:314928,RATE:.14},{FROM:314928,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},BC:{ABATEMENT:0,TAX_CREDIT_RATE:.0506,BASE_TAX_CREDIT:10949,RATES:[{FROM:0,TO:41725,RATE:.0506},{FROM:41725,TO:83451,RATE:.077},{FROM:83451,TO:95812,RATE:.105},{FROM:95812,TO:116344,RATE:.1229},{FROM:116344,TO:157748,RATE:.147},{FROM:157748,TO:999999999,RATE:.168}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},MB:{ABATEMENT:0,TAX_CREDIT_RATE:.108,BASE_TAX_CREDIT:9838,RATES:[{FROM:0,TO:33389,RATE:.108},{FROM:33389,TO:72164,RATE:.1275},{FROM:72164,TO:999999999,RATE:.174}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NB:{ABATEMENT:0,TAX_CREDIT_RATE:.0968,BASE_TAX_CREDIT:10459,RATES:[{FROM:0,TO:43401,RATE:.0968},{FROM:43401,TO:86803,RATE:.1482},{FROM:86803,TO:141122,RATE:.1652},{FROM:141122,TO:160776,RATE:.1784},{FROM:160776,TO:999999999,RATE:.203}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NL:{ABATEMENT:0,TAX_CREDIT_RATE:.087,BASE_TAX_CREDIT:9498,RATES:[{FROM:0,TO:37929,RATE:.087},{FROM:37929,TO:75858,RATE:.145},{FROM:75858,TO:135432,RATE:.158},{FROM:135432,TO:189604,RATE:.173},{FROM:189604,TO:999999999,RATE:.183}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NS:{ABATEMENT:0,TAX_CREDIT_RATE:.0879,BASE_TAX_CREDIT:8481,RATES:[{FROM:0,TO:29590,RATE:.0879},{FROM:29590,TO:59180,RATE:.1495},{FROM:59180,TO:93e3,RATE:.1667},{FROM:93e3,TO:15e4,RATE:.175},{FROM:15e4,TO:999999999,RATE:.21}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},PE:{ABATEMENT:0,TAX_CREDIT_RATE:.098,BASE_TAX_CREDIT:1e4,RATES:[{FROM:0,TO:31984,RATE:.098},{FROM:31984,TO:63969,RATE:.138},{FROM:63969,TO:999999999,RATE:.167}],SURTAX_RATES:[{FROM:0,TO:12500,RATE:0},{FROM:12500,TO:999999999,RATE:.1}]},ON:{ABATEMENT:0,TAX_CREDIT_RATE:.0505,BASE_TAX_CREDIT:10783,RATES:[{FROM:0,TO:44740,RATE:.0505},{FROM:44740,TO:89482,RATE:.0915},{FROM:89482,TO:15e4,RATE:.1116},{FROM:15e4,TO:22e4,RATE:.1216},{FROM:22e4,TO:999999999,RATE:.1316}],SURTAX_RATES:[{FROM:0,TO:4830,RATE:0},{FROM:4830,TO:6182,RATE:.2},{FROM:6182,TO:999999999,RATE:.56}]},QC:{ABATEMENT:.165,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:15532,RATES:[{FROM:0,TO:44545,RATE:.15},{FROM:44545,TO:89080,RATE:.2},{FROM:89080,TO:108390,RATE:.24},{FROM:108390,TO:999999999,RATE:.2575}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},SK:{ABATEMENT:0,TAX_CREDIT_RATE:.105,BASE_TAX_CREDIT:16065,RATES:[{FROM:0,TO:45225,RATE:.105},{FROM:45225,TO:129214,RATE:.125},{FROM:129214,TO:999999999,RATE:.145}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NT:{ABATEMENT:0,TAX_CREDIT_RATE:.059,BASE_TAX_CREDIT:15093,RATES:[{FROM:0,TO:43957,RATE:.059},{FROM:43957,TO:87916,RATE:.086},{FROM:87916,TO:142932,RATE:.122},{FROM:142932,TO:999999999,RATE:.1405}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NU:{ABATEMENT:0,TAX_CREDIT_RATE:.04,BASE_TAX_CREDIT:16304,RATES:[{FROM:0,TO:46277,RATE:.04},{FROM:46277,TO:92555,RATE:.07},{FROM:92555,TO:150473,RATE:.09},{FROM:150473,TO:999999999,RATE:.115}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},YT:{ABATEMENT:0,TAX_CREDIT_RATE:.064,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.064},{FROM:48535,TO:97069,RATE:.09},{FROM:97069,TO:150473,RATE:.109},{FROM:150473,TO:5e5,RATE:.128},{FROM:5e5,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]}}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.maxBy=function(T,E){const A=Math.max(...T.map(E));return T.find(T=>E(T)===A)}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:78500,PREMIUM_RATES:{SELF_EMPLOYED:.00878,SALARIED:.00494}}}])})); | ||
!function(T,E){if("object"==typeof exports&&"object"==typeof module)module.exports=E();else if("function"==typeof define&&define.amd)define([],E);else{var A=E();for(var R in A)("object"==typeof exports?exports:T)[R]=A[R]}}(this,(function(){return function(T){var E={};function A(R){if(E[R])return E[R].exports;var t=E[R]={i:R,l:!1,exports:{}};return T[R].call(t.exports,t,t.exports,A),t.l=!0,t.exports}return A.m=T,A.c=E,A.d=function(T,E,R){A.o(T,E)||Object.defineProperty(T,E,{enumerable:!0,get:R})},A.r=function(T){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(T,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(T,"__esModule",{value:!0})},A.t=function(T,E){if(1&E&&(T=A(T)),8&E)return T;if(4&E&&"object"==typeof T&&T&&T.__esModule)return T;var R=Object.create(null);if(A.r(R),Object.defineProperty(R,"default",{enumerable:!0,value:T}),2&E&&"string"!=typeof T)for(var t in T)A.d(R,t,function(E){return T[E]}.bind(null,t));return R},A.n=function(T){var E=T&&T.__esModule?function(){return T.default}:function(){return T};return A.d(E,"a",E),E},A.o=function(T,E){return Object.prototype.hasOwnProperty.call(T,E)},A.p="",A(A.s=2)}([function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.getMonthsDiff=function(T,E){return E.getUTCMonth()-T.getUTCMonth()+12*(E.getUTCFullYear()-T.getUTCFullYear())-(E.getUTCDate()<T.getUTCDate()?1:0)},E.addYearsToDate=function(T,E){const A=new Date(T);return A.setFullYear(T.getFullYear()+E),A},E.now=function(){return new Date}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.clamp=function(T,E,A){return T<=E?E:T>=A?A:T},E.roundToPrecision=function(T,E=0){return isNaN(T)?0:Math.round(T*Math.pow(10,E))/Math.pow(10,E)}},function(T,E,A){"use strict";var R=this&&this.__importDefault||function(T){return T&&T.__esModule?T:{default:T}};const t=R(A(3)),e=R(A(4)),O=R(A(5)),M=R(A(6)),_=R(A(7)),n=R(A(8)),r=R(A(9)),N=R(A(10)),i=R(A(11)),a=R(A(12)),o=R(A(13)),S=R(A(14)),s=A(15),F=R(A(17));T.exports={INVESTMENTS:{LIF:t.default,RRIF:e.default,TFSA:M.default,RRSP:O.default},PENSION:{CPP:N.default,OAS:i.default,QPP:a.default,SPP:o.default},TAXES:{EI:S.default,INCOME_TAX:s.INCOME_TAX,QPIP:F.default},MISC:{CPI:_.default,IQPF:n.default,LIFE_EXPECTANCY:r.default}}},function(T,E,A){"use strict";T.exports={MAX_WITHDRAWAL_PCT:{54:.0424,55:.0428,56:.0432,57:.0437,58:.0443,59:.0448,60:.0455,61:.0462,62:.0469,63:.0478,64:.0487,65:.0497,66:.0508,67:.0521,68:.0535,69:.055,70:.0567,71:.0587,72:.061,73:.0635,74:.0665,75:.07,76:.0741,77:.0788,78:.0843,79:.0906,80:.0981,81:.1071,82:.1181,83:.1319,84:.1496,85:.1732,86:.2062,87:.2558,88:.3385,89:.5038,90:1}}},function(T,E,A){"use strict";T.exports={MIN_WITHDRAWAL_PCT:{50:.025,51:.0256,52:.0263,53:.027,54:.0278,55:.0286,56:.0294,57:.0303,58:.0313,59:.0323,60:.0333,61:.0345,62:.0357,63:.037,64:.0385,65:.04,66:.0417,67:.0435,68:.0455,69:.0476,70:.05,71:.0528,72:.054,73:.0553,74:.0567,75:.0582,76:.0598,77:.0617,78:.0636,79:.0658,80:.0682,81:.0708,82:.0738,83:.0771,84:.0808,85:.0851,86:.0899,87:.0955,88:.1021,89:.1099,90:.1192,91:.1306,92:.1449,93:.1634,94:.1879,95:.2}}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:27230}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:6e3,ROUNDING_FACTOR:500}},function(T,E,A){"use strict";T.exports={2009:{JAN:113,FEB:113.8,MAR:114,APR:113.9,MAY:114.7,JUN:115.1,JUL:114.7,AUG:114.7,SEP:114.7,OCT:114.6,NOV:115.2,DEC:114.8},2010:{JAN:115.1,FEB:115.6,MAR:115.6,APR:116,MAY:116.3,JUN:116.2,JUL:116.8,AUG:116.7,SEP:116.9,OCT:117.4,NOV:117.5,DEC:117.5},2011:{JAN:117.8,FEB:118.1,MAR:119.4,APR:119.8,MAY:120.6,JUN:119.8,JUL:120,AUG:120.3,SEP:120.6,OCT:120.8,NOV:120.9,DEC:120.2},2012:{JAN:120.7,FEB:121.2,MAR:121.7,APR:122.2,MAY:122.1,JUN:121.6,JUL:121.5,AUG:121.8,SEP:122,OCT:122.2,NOV:121.9,DEC:121.2},2013:{JAN:121.3,FEB:122.7,MAR:122.9,APR:122.7,MAY:123,JUN:123,JUL:123.1,AUG:123.1,SEP:123.3,OCT:123,NOV:123,DEC:122.7},2014:{JAN:123.1,FEB:124.1,MAR:124.8,APR:125.2,MAY:125.8,JUN:125.9,JUL:125.7,AUG:125.7,SEP:125.8,OCT:125.9,NOV:125.4,DEC:124.5},2015:{JAN:124.3,FEB:125.4,MAR:126.3,APR:126.2,MAY:126.9,JUN:127.2,JUL:127.3,AUG:127.3,SEP:127.1,OCT:127.2,NOV:127.1,DEC:126.5},2016:{JAN:126.8,FEB:127.1,MAR:127.9,APR:128.3,MAY:128.8,JUN:129.1,JUL:128.9,AUG:128.7,SEP:128.8,OCT:129.1,NOV:128.6,DEC:128.4},2017:{JAN:129.5,FEB:129.7,MAR:129.9,APR:130.4,MAY:130.5,JUN:130.4,JUL:130.4,AUG:130.5,SEP:130.8,OCT:130.9,NOV:131.3,DEC:130.8},2018:{JAN:131.7,FEB:132.5,MAR:132.9,APR:133.3,MAY:133.4,JUN:133.6,JUL:134.3,AUG:134.2,SEP:134.3,OCT:134.1,NOV:133.5,DEC:133.4},2019:{JAN:133.6,FEB:134.5,MAR:135.4,APR:136,MAY:136.6,JUN:136.3,JUL:137,AUG:136.8,SEP:136.2,OCT:136.6,NOV:136.4,DEC:136.4}}},function(T,E,A){"use strict";T.exports={INFLATION:.021,RETURN_RATES:{SHORT_TERM:.03,FIXED_INCOME:.039,CANADIAN_EQUITIES:.061,CONSERVATIVE_PORTFOLIO:.032,BALANCED_PORTFOLIO:.037,DYNAMIC_PORTFOLIO:.045},BORROWING_RATE:.05}},function(T,E,A){"use strict";T.exports={MALE:{0:95,5:95,10:95,15:95,20:95,25:95,30:95,35:94,40:94,45:94,50:94,55:94,60:94,65:94,70:94,75:94,80:94,85:95,90:96,95:99,100:102},FEMALE:{0:97,5:97,10:97,15:97,20:97,25:97,30:97,35:97,40:97,45:96,50:96,55:96,60:96,65:96,70:96,75:96,80:96,85:97,90:98,95:100,100:103}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16651.92,UNDER_45:7519.56,UNDER_45_WITH_CHILD:7659.36,UNDER_45_DISABLED:7659.36,FROM_45_TO_64:7659.36,OVER_64_WITHOUT_PENSION:8466},getRequestDateFactor(T,E){const A="string"==typeof T?new Date(T):T,e="string"==typeof E?new Date(E):E,{BONUS:O,PENALTY:M}=this.MONTHLY_DELAY,_=R.addYearsToDate(A,this.MIN_REQUEST_AGE),n=R.addYearsToDate(A,this.MAX_REQUEST_AGE),r=R.addYearsToDate(A,this.DEFAULT_REFERENCE_AGE),N=R.getMonthsDiff(A,R.now()),i=R.getMonthsDiff(A,_),a=R.getMonthsDiff(A,n),o=R.getMonthsDiff(A,r),S=R.getMonthsDiff(A,e);if(S<i)return 0;if(a<N)return 1;let s=t.clamp(S,i,a);return 1+(s-=Math.max(N,o))*(s>=0?O:M)},getAverageIndexationRate(){const T=(this.INDEXATION_RATES_REFERENCES.reduce((T,E)=>T+E[1],0)/this.INDEXATION_RATES_REFERENCES.length).toString();return Number.parseFloat(T).toPrecision(3)},getMPEA(T){return(this.MAX_INCOME[T-4]+this.MAX_INCOME[T-3]+this.MAX_INCOME[T-2]+this.MAX_INCOME[T-1]+this.MAX_INCOME[T])/5},getPostRetirementBenefit:(T,E,A,R)=>T/E*.00625*A*R/12,INDEXATION_RATES_REFERENCES:[[2007,.02],[2008,.022],[2009,.023],[2010,.003],[2011,.018],[2012,.029],[2013,.015],[2014,.009],[2015,.02],[2016,.011],[2017,.014],[2018,.016],[2019,.023]],MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:14109.96,SURVIVOR_OVER_46:8466,SURVIVOR_UNDER_65:7659.36,DEATH_BENEFIT:2500},MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={getRequestDateFactor(T,E){const A="string"==typeof T?new Date(T):T,e="string"==typeof E?new Date(E):E,O=R.addYearsToDate(A,this.MIN_AGE),M=R.addYearsToDate(A,this.MAX_AGE),_=R.getMonthsDiff(A,R.now()),n=R.getMonthsDiff(A,O),r=R.getMonthsDiff(A,M),N=R.getMonthsDiff(A,e);if(N<n)return 0;if(r<_)return 1;let i=t.clamp(N,n,r);return 1+(i-=Math.max(_,n))*this.MONTHLY_DELAY_BONUS},MAX_AGE:70,MIN_AGE:65,MONTHLY_PAYMENT_MAX:613.53,MONTHLY_DELAY_BONUS:.006,REPAYMENT:{MAX:126058,MIN:77580,RATIO:.15}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16661.52,UNDER_45:6857.76,UNDER_45_WITH_CHILD:10938.6,UNDER_45_DISABLED:11372.4,FROM_45_TO_64:11372.4,OVER_64_WITHOUT_PENSION:8479.8},getRequestDateFactor(T,E){const A="string"==typeof T?new Date(T):T,e="string"==typeof E?new Date(E):E,{BONUS:O,PENALTY:M}=this.MONTHLY_DELAY,_=R.addYearsToDate(A,this.MIN_REQUEST_AGE),n=R.addYearsToDate(A,this.MAX_REQUEST_AGE),r=R.addYearsToDate(A,this.DEFAULT_REFERENCE_AGE),N=R.getMonthsDiff(A,R.now()),i=R.getMonthsDiff(A,_),a=R.getMonthsDiff(A,n),o=R.getMonthsDiff(A,r),S=R.getMonthsDiff(A,e);if(S<i)return 0;if(a<N)return 1;let s=t.clamp(S,i,a);return 1+(s-=Math.max(N,o))*(s>=0?O:M)},getAverageIndexationRate(){const T=this.INDEXATION_RATE_REFERENCES.reduce((T,E)=>T+E[1],0);return t.roundToPrecision(T/this.INDEXATION_RATE_REFERENCES.length,2)},INDEXATION_RATE_REFERENCES:[[2007,.021],[2008,.02],[2009,.025],[2010,.004],[2011,.017],[2012,.028],[2013,.018],[2014,.009],[2015,.018],[2016,.012],[2017,.02],[2018,.015],[2019,.023]],MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:20196.72,SURVIVOR_OVER_64:8479.8,SURVIVOR_FROM_45_TO_64:11372.4,SURVIVOR_UNDER_45:6857.76,DEATH_BENEFIT:2500},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";T.exports={MAX_BRIDGE_BENEFIT_AGE:65,MIN_AGE:55}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:54200,PREMIUM_RATES:{CA:.0158,QC:.012}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0});const R=A(16);E.INCOME_TAX={FEDERAL_CODE:"CA",calculateEffectiveTaxRate(T,E){if(T<=0)return 0;const A=this.getProvincialTaxAmount(E,T,0,0),R=this.getProvincialBaseCredit(E,0,0),t=this.getFederalTaxAmount(T,0,0),e=this.getFederalBaseCredit(0,0),O=this.getProvincialAbatement(E,t-e);return(Math.max(t-e-O,0)+Math.max(A-R,0))/T},getFederalMarginalRate(T,E,A=0,R=0){const t=this.getFederalTaxAmount(E,A,R),e=this.getFederalBaseCredit(A,R),O=this.getProvincialAbatement(T,t-e);return E<=0?0:Math.max(t-e-O,0)/E},getFederalTaxAmount(T,E=0,A=0){let R=0;return this.TAX_BRACKETS.CA.RATES.forEach(t=>{const e=t.FROM*Math.pow(1+E,A);if(e<T){const O=t.TO*Math.pow(1+E,A);R+=(Math.min(T,O)-e)*t.RATE}}),R},getFederalBaseCredit(T,E){return this.TAX_BRACKETS.CA.BASE_TAX_CREDIT*this.TAX_BRACKETS.CA.TAX_CREDIT_RATE*Math.pow(1+T,E)},getProvincialAbatement(T,E){return this.TAX_BRACKETS[T].ABATEMENT*E},getProvincialTaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialSurtaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialMarginalRate(T,E,A=0,R=0){let t=0;const e=this.getProvincialTaxAmount(T,E,A,R);this.TAX_BRACKETS[T].RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<E&&(t=T.RATE)});let O=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<e&&(O=T.RATE)}),t*(1+O)},getProvincialBaseCredit(T,E,A){return this.TAX_BRACKETS[T].BASE_TAX_CREDIT*this.TAX_BRACKETS[T].RATES[0].RATE*Math.pow(1+E,A)},getTotalMarginalRate(T,E,A=0,R=0){return this.getProvincialMarginalRate(T,E,A,R)+this.getFederalMarginalRate(T,E,A,R)},getMaxProvincialMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[T].RATES,T=>T.TO).RATE*(1+R.maxBy(this.TAX_BRACKETS[T].SURTAX_RATES,T=>T.TO).RATE)},getMaxFederalMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[this.FEDERAL_CODE].RATES,T=>T.TO).RATE*(1-this.TAX_BRACKETS[T].ABATEMENT)},getTotalMaxMarginalRate(T){return(this.getMaxProvincialMarginalRate(T)+this.getMaxFederalMarginalRate(T)).toPrecision(4)},getTotalTaxAmount(T,E,A=0,R=0){const t=this.getProvincialTaxAmount(T,E,A,R);return t+this.getProvincialSurtaxAmount(T,t,A,R)+this.getFederalTaxAmount(E,A,R)},PROVINCIAL_CODES:{ALBERTA:"AB",BRITISH_COLUMBIA:"BC",MANITOBA:"MB",NEW_BRUNSWICK:"NB",NEWFOUNDLAND:"NL",NOVA_SCOTIA:"NS",PRINCE_EDWARD_ISLAND:"PE",ONTARIO:"ON",QUEBEC:"QC",SASKATCHEWAN:"SK",NORTHWEST_TERRITORIES:"NT",NUNAVUT:"NU",YUKON:"YT"},TAX_BRACKETS:{CA:{ABATEMENT:0,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.15},{FROM:48535,TO:97069,RATE:.205},{FROM:97069,TO:150473,RATE:.26},{FROM:150473,TO:214368,RATE:.29},{FROM:214368,TO:999999999,RATE:.33}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},AB:{ABATEMENT:0,TAX_CREDIT_RATE:.1,BASE_TAX_CREDIT:19369,RATES:[{FROM:0,TO:131220,RATE:.1},{FROM:131220,TO:157464,RATE:.12},{FROM:157464,TO:209952,RATE:.13},{FROM:209952,TO:314928,RATE:.14},{FROM:314928,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},BC:{ABATEMENT:0,TAX_CREDIT_RATE:.0506,BASE_TAX_CREDIT:10949,RATES:[{FROM:0,TO:41725,RATE:.0506},{FROM:41725,TO:83451,RATE:.077},{FROM:83451,TO:95812,RATE:.105},{FROM:95812,TO:116344,RATE:.1229},{FROM:116344,TO:157748,RATE:.147},{FROM:157748,TO:999999999,RATE:.168}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},MB:{ABATEMENT:0,TAX_CREDIT_RATE:.108,BASE_TAX_CREDIT:9838,RATES:[{FROM:0,TO:33389,RATE:.108},{FROM:33389,TO:72164,RATE:.1275},{FROM:72164,TO:999999999,RATE:.174}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NB:{ABATEMENT:0,TAX_CREDIT_RATE:.0968,BASE_TAX_CREDIT:10459,RATES:[{FROM:0,TO:43401,RATE:.0968},{FROM:43401,TO:86803,RATE:.1482},{FROM:86803,TO:141122,RATE:.1652},{FROM:141122,TO:160776,RATE:.1784},{FROM:160776,TO:999999999,RATE:.203}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NL:{ABATEMENT:0,TAX_CREDIT_RATE:.087,BASE_TAX_CREDIT:9498,RATES:[{FROM:0,TO:37929,RATE:.087},{FROM:37929,TO:75858,RATE:.145},{FROM:75858,TO:135432,RATE:.158},{FROM:135432,TO:189604,RATE:.173},{FROM:189604,TO:999999999,RATE:.183}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NS:{ABATEMENT:0,TAX_CREDIT_RATE:.0879,BASE_TAX_CREDIT:8481,RATES:[{FROM:0,TO:29590,RATE:.0879},{FROM:29590,TO:59180,RATE:.1495},{FROM:59180,TO:93e3,RATE:.1667},{FROM:93e3,TO:15e4,RATE:.175},{FROM:15e4,TO:999999999,RATE:.21}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},PE:{ABATEMENT:0,TAX_CREDIT_RATE:.098,BASE_TAX_CREDIT:1e4,RATES:[{FROM:0,TO:31984,RATE:.098},{FROM:31984,TO:63969,RATE:.138},{FROM:63969,TO:999999999,RATE:.167}],SURTAX_RATES:[{FROM:0,TO:12500,RATE:0},{FROM:12500,TO:999999999,RATE:.1}]},ON:{ABATEMENT:0,TAX_CREDIT_RATE:.0505,BASE_TAX_CREDIT:10783,RATES:[{FROM:0,TO:44740,RATE:.0505},{FROM:44740,TO:89482,RATE:.0915},{FROM:89482,TO:15e4,RATE:.1116},{FROM:15e4,TO:22e4,RATE:.1216},{FROM:22e4,TO:999999999,RATE:.1316}],SURTAX_RATES:[{FROM:0,TO:4830,RATE:0},{FROM:4830,TO:6182,RATE:.2},{FROM:6182,TO:999999999,RATE:.56}]},QC:{ABATEMENT:.165,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:15532,RATES:[{FROM:0,TO:44545,RATE:.15},{FROM:44545,TO:89080,RATE:.2},{FROM:89080,TO:108390,RATE:.24},{FROM:108390,TO:999999999,RATE:.2575}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},SK:{ABATEMENT:0,TAX_CREDIT_RATE:.105,BASE_TAX_CREDIT:16065,RATES:[{FROM:0,TO:45225,RATE:.105},{FROM:45225,TO:129214,RATE:.125},{FROM:129214,TO:999999999,RATE:.145}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NT:{ABATEMENT:0,TAX_CREDIT_RATE:.059,BASE_TAX_CREDIT:15093,RATES:[{FROM:0,TO:43957,RATE:.059},{FROM:43957,TO:87916,RATE:.086},{FROM:87916,TO:142932,RATE:.122},{FROM:142932,TO:999999999,RATE:.1405}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NU:{ABATEMENT:0,TAX_CREDIT_RATE:.04,BASE_TAX_CREDIT:16304,RATES:[{FROM:0,TO:46277,RATE:.04},{FROM:46277,TO:92555,RATE:.07},{FROM:92555,TO:150473,RATE:.09},{FROM:150473,TO:999999999,RATE:.115}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},YT:{ABATEMENT:0,TAX_CREDIT_RATE:.064,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.064},{FROM:48535,TO:97069,RATE:.09},{FROM:97069,TO:150473,RATE:.109},{FROM:150473,TO:5e5,RATE:.128},{FROM:5e5,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]}}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.maxBy=function(T,E){const A=Math.max(...T.map(E));return T.find(T=>E(T)===A)}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:78500,PREMIUM_RATES:{SELF_EMPLOYED:.00878,SALARIED:.00494}}}])})); |
@@ -37,3 +37,3 @@ declare const _default: { | ||
}; | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
getAverageIndexationRate(): string; | ||
@@ -40,0 +40,0 @@ getMPEA(year: number): number; |
declare const _default: { | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
MAX_AGE: number; | ||
@@ -4,0 +4,0 @@ MIN_AGE: number; |
@@ -37,3 +37,3 @@ declare const _default: { | ||
}; | ||
getRequestDateFactor(birthdate: Date, requestDate: Date): number; | ||
getRequestDateFactor(paramBirthDate: string | Date, paramRequestDate: string | Date): number; | ||
getAverageIndexationRate(): number; | ||
@@ -40,0 +40,0 @@ INDEXATION_RATE_REFERENCES: number[][]; |
@@ -1,1 +0,3 @@ | ||
export declare function monthsDelta(firstDate: Date, secondDate: Date): number; | ||
export declare function getMonthsDiff(firstDate: Date, secondDate: Date): number; | ||
export declare function addYearsToDate(date: Date, years: number): Date; | ||
export declare function now(): Date; |
{ | ||
"name": "@equisoft/tax-ca", | ||
"version": "2020.4.1", | ||
"version": "2020.4.2", | ||
"description": "Canadian tax data and calculation functions.", | ||
@@ -38,2 +38,3 @@ "main": "lib/index.js", | ||
"@types/jest": "~24.0.19", | ||
"@types/node": "^13.11.1", | ||
"awesome-typescript-loader": "~5.2.1", | ||
@@ -40,0 +41,0 @@ "jest": "~24.9.0", |
Sorry, the diff of this file is not supported yet
78776
1214
12