export default class CotisationsSociales { remuneration : number = 0 ; accre : boolean ; PASS : number = 39732 ; _revenuPro ( ) { return this . remuneration ; } _tauxProgressif ( montantMin , tauxMin , montantMax , tauxMax , montant ) { let pc = montant / montantMax ; return tauxMin + ( ( tauxMax - tauxMin ) * ( montant - montantMin ) / ( montantMax - montantMin ) ) ; } getMaladie ( ) { let revenus = Math . max ( 40 * this . PASS / 100 , this . _revenuPro ( ) ) ; if ( revenus > 110 * this . PASS / 100 ) { return revenus * 6.5 / 100 ; } let tauxMin = 1.5 ; let tauxMax = 6.5 ; let montantMin = 0 ; let montantMax = 110 * this . PASS / 100 ; let taux = this . _tauxProgressif ( montantMin , tauxMin , montantMax , tauxMax , revenus ) ; return revenus * taux / 100 ; } getAllocationsFamiliales ( ) { let revenus = Math . max ( 19 * this . PASS / 100 , this . _revenuPro ( ) ) ; if ( revenus < 110 * this . PASS / 100 ) { return 0 ; } if ( revenus > 140 * this . PASS / 100 ) { return revenus * 3.10 / 100 ; } let tauxMin = 0 ; let tauxMax = 3.10 ; let montantMin = 110 * this . PASS / 100 ; let montantMax = 140 * this . PASS / 100 ; let taux = this . _tauxProgressif ( montantMin , tauxMin , montantMax , tauxMax , revenus ) ; return revenus * taux / 100 ; } getFormationProfessionnelle ( ) { return this . PASS * 0.25 / 100 ; } getRetraiteBase ( ) { let montant = 0 ; if ( this . _revenuPro ( ) < 11.50 * this . PASS / 100 ) { montant = 461 ; } if ( this . _revenuPro ( ) >= 11.50 * this . PASS / 100 && this . _revenuPro ( ) < this . PASS ) { montant = 8.23 * this . _revenuPro ( ) / 100 ; } if ( this . _revenuPro ( ) >= this . PASS && this . _revenuPro ( ) < 5 * this . PASS ) { montant = ( 8.23 * this . PASS + 1.87 * this . _revenuPro ( ) ) / 100 ; } if ( this . _revenuPro ( ) >= 5 * this . PASS ) { montant = ( 8.23 * this . PASS + 1.87 * 5 * this . PASS ) / 100 ; } return montant ; } getRetraiteComplementaire ( ) { let assiette = this . _revenuPro ( ) ; let montant = 0 ; if ( assiette <= 26580 ) { montant = 1315 ; } if ( assiette > 26580 && assiette <= 49280 ) { montant = 2630 ; } if ( assiette > 49280 && assiette <= 57850 ) { montant = 3945 ; } if ( assiette > 57850 && assiette <= 66400 ) { montant = 6575 ; } if ( assiette > 66400 && assiette <= 83060 ) { montant = 9205 ; } if ( assiette > 83060 && assiette <= 103180 ) { montant = 14465 ; } if ( assiette > 103180 && assiette <= 123300 ) { montant = 15780 ; } if ( assiette > 123300 ) { montant = 17095 ; } return montant ; } getInvaliditeDeces ( classe = 'C' ) { let montant = 0 ; switch ( classe ) { case 'A' : montant = 76 ; break ; case 'B' : montant = 228 ; break ; case 'C' : montant = 380 ; break ; } return montant ; } getCsgCrds ( ) { var assiette = Math . max ( 19 * this . PASS / 100 , this . _revenuPro ( ) + this . getMaladie ( ) + this . getAllocationsFamiliales ( ) + this . getRetraiteBase ( ) ) ; return assiette * 9.7 / 100 ; } getCotisations ( ) { return this . getMaladie ( ) + this . getAllocationsFamiliales ( ) + this . getFormationProfessionnelle ( ) + this . getRetraiteBase ( ) + this . getRetraiteComplementaire ( ) + this . getInvaliditeDeces ( ) + this . getCsgCrds ( ) ; } }