def function(self, simulation, period):
        period = period.this_month

        assiette_cotisations_sociales_public = simulation.calculate(
            'assiette_cotisations_sociales_public', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        _P = simulation.legislation_at(period.start)

        base = assiette_cotisations_sociales_public
        cotisation_etat = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_employeur,
            bareme_name="ati",
            base=base,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        cotisation_collectivites_locales = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_employeur,
            bareme_name="atiacl",
            base=base,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return period, cotisation_etat + cotisation_collectivites_locales
示例#2
0
    def formula(self, simulation, period):
        assiette_cotisations_sociales = simulation.calculate(
            'assiette_cotisations_sociales', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)

        law = simulation.parameters_at(period.start)

        cotisation_non_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffnc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )

        cotisation_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return cotisation_cadre + cotisation_non_cadre
示例#3
0
    def function(self, simulation, period):
        period = period.start.period(u'month').offset('first-of')
        assiette_cotisations_sociales = simulation.calculate(
            'assiette_cotisations_sociales', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)

        law = simulation.legislation_at(period.start)

        cotisation_non_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = law.cotsoc.cotisations_employeur,
            bareme_name = "agffnc",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )

        cotisation_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = law.cotsoc.cotisations_employeur,
            bareme_name = "agffc",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return period, cotisation_cadre + cotisation_non_cadre
示例#4
0
    def function(self, simulation, period):
        period = period.start.period(u'month').offset('first-of')
        assiette_cotisations_sociales = simulation.calculate(
            'assiette_cotisations_sociales', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)

        law = simulation.legislation_at(period.start)

        cotisation_non_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffnc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )

        cotisation_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return period, cotisation_cadre + cotisation_non_cadre
示例#5
0
    def function(self, simulation, period):
        period = period.this_month
        agirc_salarie = simulation.calculate('agirc_salarie', period)
        agirc_gmp_salarie = simulation.calculate('agirc_gmp_salarie', period)
        arrco_salarie = simulation.calculate('arrco_salarie', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        stage_gratification_reintegration = simulation.calculate('stage_gratification_reintegration', period)
        stagiaire = simulation.calculate('stagiaire', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(period.start).cotsoc.cotisations_salarie
        bareme_names = ['agff', 'assedic']

        exoneration = plafond_securite_sociale * 0.0
        for bareme_name in bareme_names:
            exoneration += apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name = bareme_by_type_sal_name,
                bareme_name = bareme_name,
                categorie_salarie = categorie_salarie,
                base = stage_gratification_reintegration,
                plafond_securite_sociale = plafond_securite_sociale,
                round_base_decimals = 2,
                )
        exoneration = exoneration + agirc_salarie + agirc_gmp_salarie + arrco_salarie

        return period, - exoneration * stagiaire
示例#6
0
    def formula(self, simulation, period):
        agirc_salarie = simulation.calculate('agirc_salarie', period)
        agirc_gmp_salarie = simulation.calculate('agirc_gmp_salarie', period)
        arrco_salarie = simulation.calculate('arrco_salarie', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        stage_gratification_reintegration = simulation.calculate(
            'stage_gratification_reintegration', period)
        stagiaire = simulation.calculate('stagiaire', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(
            period.start).cotsoc.cotisations_salarie
        bareme_names = ['agff', 'assedic']

        exoneration = plafond_securite_sociale * 0.0
        for bareme_name in bareme_names:
            exoneration += apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name=bareme_by_type_sal_name,
                bareme_name=bareme_name,
                categorie_salarie=categorie_salarie,
                base=stage_gratification_reintegration,
                plafond_securite_sociale=plafond_securite_sociale,
                round_base_decimals=2,
            )
        exoneration = exoneration + agirc_salarie + agirc_gmp_salarie + arrco_salarie

        return -exoneration * stagiaire
示例#7
0
    def formula(self, simulation, period):
        agirc_employeur = simulation.calculate('agirc_employeur', period)
        agirc_gmp_employeur = simulation.calculate('agirc_gmp_employeur',
                                                   period)
        arrco_employeur = simulation.calculate('arrco_employeur', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        stage_gratification_reintegration = simulation.calculate(
            'stage_gratification_reintegration', period)
        stagiaire = simulation.calculate('stagiaire', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(
            period.start).cotsoc.cotisations_employeur
        exoneration = sum(
            apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name=bareme_by_type_sal_name,
                bareme_name=bareme_name,
                categorie_salarie=categorie_salarie,
                base=stage_gratification_reintegration,
                plafond_securite_sociale=plafond_securite_sociale,
                round_base_decimals=2,
            ) for bareme_name in ['agffnc', 'agffc', 'chomfg', 'assedic'])
        exoneration += agirc_employeur + agirc_gmp_employeur + arrco_employeur
        return -exoneration * stagiaire
示例#8
0
    def formula(individu, period, parameters):
        agirc_salarie = individu('agirc_salarie', period)
        agirc_gmp_salarie = individu('agirc_gmp_salarie', period)
        arrco_salarie = individu('arrco_salarie', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)
        stage_gratification_reintegration = individu('stage_gratification_reintegration', period)
        stagiaire = individu('stagiaire', period)
        categorie_salarie = individu('categorie_salarie', period)

        bareme_by_type_sal_name = parameters(period).cotsoc.cotisations_salarie
        bareme_names = ['agff', 'assedic']

        exoneration = plafond_securite_sociale * 0.0
        for bareme_name in bareme_names:
            exoneration += apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name = bareme_by_type_sal_name,
                bareme_name = bareme_name,
                categorie_salarie = categorie_salarie,
                base = stage_gratification_reintegration,
                plafond_securite_sociale = plafond_securite_sociale,
                round_base_decimals = 2,
                )
        exoneration = exoneration + agirc_salarie + agirc_gmp_salarie + arrco_salarie

        return - exoneration * stagiaire
 def formula(individu, period, parameters):
     traitement_indiciaire_brut = individu('traitement_indiciaire_brut',
                                           period)
     hsup = individu('hsup', period)
     categorie_salarie = individu('categorie_salarie', period)
     indemnite_residence = individu('indemnite_residence', period)
     primes_fonction_publique = individu('primes_fonction_publique', period)
     rafp_salarie = individu('rafp_salarie', period)
     pension_civile_salarie = individu('pension_civile_salarie', period)
     cotisations_salariales_contributives = individu(
         'cotisations_salariales_contributives', period)
     plafond_securite_sociale = individu('plafond_securite_sociale', period)
     salaire_de_base = individu('salaire_de_base', period)
     supplement_familial_traitement = individu(
         'supplement_familial_traitement', period)
     # Assujettis
     parameters = parameters(period)
     seuil_assujetissement_fds = compute_seuil_fds(parameters)
     concernes = (
         (categorie_salarie == TypesCategorieSalarie.public_titulaire_etat)
         + (categorie_salarie
            == TypesCategorieSalarie.public_titulaire_territoriale) +
         (categorie_salarie
          == TypesCategorieSalarie.public_titulaire_hospitaliere) +
         (categorie_salarie == TypesCategorieSalarie.public_non_titulaire))
     remuneration_brute = (traitement_indiciaire_brut + salaire_de_base +
                           indemnite_residence - hsup)
     assujettis = concernes * (remuneration_brute >
                               seuil_assujetissement_fds)
     # Pour le calcul de l'assiette, on déduit de la rémunaration brute
     #  - toutes les cotisations de sécurité sociale obligatoires
     #  - les prélèvements pour pension
     #  - et, le cas échéant, les prélèvements au profit des régimes de retraite complémentaire obligatoires.
     # Soit:
     #  - pour les titutlaires, les pensions
     #  - les non titulaires, les cotisations sociales contributives (car pas de cotisations non contributives pour les non titulaires de la fonction public)
     deduction = assujettis * (
         +rafp_salarie + pension_civile_salarie +
         (categorie_salarie == TypesCategorieSalarie.public_non_titulaire) *
         cotisations_salariales_contributives)
     # Ces déductions sont négatives
     cotisation = apply_bareme_for_relevant_type_sal(
         bareme_by_type_sal_name=parameters.cotsoc.cotisations_salarie,
         bareme_name="excep_solidarite",
         base=assujettis * min_(
             remuneration_brute + supplement_familial_traitement +
             primes_fonction_publique + deduction,
             parameters.prelevements_sociaux.cotisations_sociales.fds.
             plafond_base_solidarite,
         ),
         plafond_securite_sociale=plafond_securite_sociale,
         categorie_salarie=categorie_salarie,
     )
     return cotisation
 def formula(individu, period, parameters):
     traitement_indiciaire_brut = individu('traitement_indiciaire_brut', period)
     hsup = individu('hsup', period)
     categorie_salarie = individu('categorie_salarie', period)
     indemnite_residence = individu('indemnite_residence', period)
     primes_fonction_publique = individu('primes_fonction_publique', period)
     rafp_salarie = individu('rafp_salarie', period)
     pension_civile_salarie = individu('pension_civile_salarie', period)
     cotisations_salariales_contributives = individu('cotisations_salariales_contributives', period)
     plafond_securite_sociale = individu('plafond_securite_sociale', period)
     salaire_de_base = individu('salaire_de_base', period)
     supplement_familial_traitement = individu('supplement_familial_traitement', period)
     # Assujettis
     parameters = parameters(period)
     seuil_assujetissement_fds = compute_seuil_fds(parameters)
     concernes = (
         (categorie_salarie == TypesCategorieSalarie.public_titulaire_etat)
         + (categorie_salarie == TypesCategorieSalarie.public_titulaire_territoriale)
         + (categorie_salarie == TypesCategorieSalarie.public_titulaire_hospitaliere)
         + (categorie_salarie == TypesCategorieSalarie.public_non_titulaire)
         )
     remuneration_brute = (
         traitement_indiciaire_brut
         + salaire_de_base
         + indemnite_residence
         - hsup
         )
     assujettis = concernes * (remuneration_brute > seuil_assujetissement_fds)
     # Pour le calcul de l'assiette, on déduit de la rémunaration brute
     #  - toutes les cotisations de sécurité sociale obligatoires
     #  - les prélèvements pour pension
     #  - et, le cas échéant, les prélèvements au profit des régimes de retraite complémentaire obligatoires.
     # Soit:
     #  - pour les titutlaires, les pensions
     #  - les non titulaires, les cotisations sociales contributives (car pas de cotisations non contributives pour les non titulaires de la fonction public)
     deduction = assujettis * (
         + rafp_salarie
         + pension_civile_salarie
         + (categorie_salarie == TypesCategorieSalarie.public_non_titulaire) * cotisations_salariales_contributives
         )
     # Ces déductions sont négatives
     cotisation = apply_bareme_for_relevant_type_sal(
         bareme_by_type_sal_name = parameters.cotsoc.cotisations_salarie,
         bareme_name = "excep_solidarite",
         base = assujettis * min_(
             remuneration_brute + supplement_familial_traitement + primes_fonction_publique + deduction,
             parameters.prelevements_sociaux.cotisations_sociales.fds.plafond_base_solidarite,
             ),
         plafond_securite_sociale = plafond_securite_sociale,
         categorie_salarie = categorie_salarie,
         )
     return cotisation
 def formula(individu, period, parameters):
     assiette_cotisations_sociales_public = individu('assiette_cotisations_sociales_public', period)
     plafond_securite_sociale = individu('plafond_securite_sociale', period)
     categorie_salarie = individu('categorie_salarie', period)
     _P = parameters(period)
     cotisation = apply_bareme_for_relevant_type_sal(
         bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
         bareme_name = "feh",
         base = assiette_cotisations_sociales_public,  # TODO: check base
         plafond_securite_sociale = plafond_securite_sociale,
         categorie_salarie = categorie_salarie,
         )
     return cotisation
    def formula(individu, period, parameters):
        assiette_cotisations_sociales_public = individu('assiette_cotisations_sociales_public', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)
        categorie_salarie = individu('categorie_salarie', period)
        _P = parameters(period)

        base = assiette_cotisations_sociales_public
        cotisation_etat = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "ati",
            base = base,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        cotisation_collectivites_locales = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "atiacl",
            base = base,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return cotisation_etat + cotisation_collectivites_locales
    def function(self, simulation, period):
        period = period.this_month
        traitement_indiciaire_brut = simulation.calculate(
            'traitement_indiciaire_brut', period)
        hsup = simulation.calculate('hsup', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        indemnite_residence = simulation.calculate('indemnite_residence',
                                                   period)
        primes_fonction_publique = simulation.calculate(
            'primes_fonction_publique', period)
        rafp_salarie = simulation.calculate('rafp_salarie', period)
        pension_civile_salarie = simulation.calculate('pension_civile_salarie',
                                                      period)
        cotisations_salariales_contributives = simulation.calculate(
            'cotisations_salariales_contributives', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        salaire_de_base = simulation.calculate('salaire_de_base', period)

        _P = simulation.legislation_at(period.start)

        seuil_assuj_fds = seuil_fds(_P)

        assujettis = (
            (categorie_salarie == CATEGORIE_SALARIE['public_titulaire_etat']) +
            (categorie_salarie
             == CATEGORIE_SALARIE['public_titulaire_territoriale']) +
            (categorie_salarie
             == CATEGORIE_SALARIE['public_titulaire_hospitaliere']) +
            (categorie_salarie == CATEGORIE_SALARIE['public_non_titulaire'])
        ) * ((traitement_indiciaire_brut + salaire_de_base - hsup) >
             seuil_assuj_fds)

        # TODO: check assiette voir IPP
        cotisation = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_salarie,
            bareme_name="excep_solidarite",
            base=assujettis * min_(
                (traitement_indiciaire_brut + salaire_de_base - hsup +
                 indemnite_residence + rafp_salarie + pension_civile_salarie +
                 primes_fonction_publique +
                 (categorie_salarie
                  == CATEGORIE_SALARIE['public_non_titulaire']) *
                 cotisations_salariales_contributives),
                _P.prelevements_sociaux.cotisations_sociales.fds.
                plafond_base_solidarite,
            ),
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return period, cotisation
    def formula(individu, period, parameters):
        assiette_cotisations_sociales = individu('assiette_cotisations_sociales', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)
        categorie_salarie = individu('categorie_salarie', period)
        _P = parameters(period)

        ircantec = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "ircantec",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return ircantec * (categorie_salarie == TypesCategorieSalarie.public_non_titulaire)
示例#15
0
    def function(self, simulation, period):
        period = period.this_month
        assiette_allegement = simulation.calculate('assiette_allegement',
                                                   period)
        jei_date_demande = simulation.calculate('jei_date_demande', period)
        jeune_entreprise_innovante = simulation.calculate(
            'jeune_entreprise_innovante', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        smic_proratise = simulation.calculate('smic_proratise', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(
            period.start).cotsoc.cotisations_employeur
        bareme_names = [
            'vieillesse_deplafonnee', 'vieillesse_plafonnee', 'maladie',
            'famille'
        ]

        exoneration = smic_proratise * 0.0
        for bareme_name in bareme_names:
            exoneration += apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name=bareme_by_type_sal_name,
                bareme_name=bareme_name,
                categorie_salarie=categorie_salarie,
                base=min_(assiette_allegement, 4.5 * smic_proratise),
                plafond_securite_sociale=plafond_securite_sociale,
                round_base_decimals=2,
            )

        exoneration_relative_year_passed = exoneration_relative_year(
            period, jei_date_demande)
        rate_by_year_passed = {
            0: 1,
            1: 1,
            2: 1,
            3: 1,
            4: 1,
            5: 1,
            6: 1,
            7: 1,
        }  # TODO: move to legislation parameters file
        for year_passed, rate in rate_by_year_passed.iteritems():
            condition_on_year_passed = exoneration_relative_year_passed == timedelta64(
                year_passed, 'Y')
            if condition_on_year_passed.any():
                exoneration[condition_on_year_passed] = rate * exoneration

        return period, -exoneration * jeune_entreprise_innovante
    def function(self, simulation, period):
        period = period.this_month
        assiette_cotisations_sociales = simulation.calculate('assiette_cotisations_sociales', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        _P = simulation.legislation_at(period.start)

        ircantec = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "ircantec",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return period, ircantec
示例#17
0
 def function(self, simulation, period):
     assiette_cotisations_sociales_public = simulation.calculate(
         'assiette_cotisations_sociales_public', period)
     plafond_securite_sociale = simulation.calculate(
         'plafond_securite_sociale', period)
     categorie_salarie = simulation.calculate('categorie_salarie', period)
     _P = simulation.legislation_at(period.start)
     cotisation = apply_bareme_for_relevant_type_sal(
         bareme_by_type_sal_name=_P.cotsoc.cotisations_employeur,
         bareme_name="feh",
         base=assiette_cotisations_sociales_public,  # TODO: check base
         plafond_securite_sociale=plafond_securite_sociale,
         categorie_salarie=categorie_salarie,
     )
     return cotisation
    def function(self, simulation, period):
        period = period.this_month

        assiette_cotisations_sociales_public = simulation.calculate('assiette_cotisations_sociales_public', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        _P = simulation.legislation_at(period.start)

        base = assiette_cotisations_sociales_public
        cotisation_etat = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "ati",
            base = base,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        cotisation_collectivites_locales = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_employeur,
            bareme_name = "atiacl",
            base = base,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return period, cotisation_etat + cotisation_collectivites_locales
示例#19
0
    def formula(individu, period, parameters):
        assiette_cotisations_sociales = individu(
            'assiette_cotisations_sociales', period)
        categorie_salarie = individu('categorie_salarie', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)

        law = parameters(period)

        cotisation_non_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffnc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )

        cotisation_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=law.cotsoc.cotisations_employeur,
            bareme_name="agffc",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return cotisation_cadre + cotisation_non_cadre
示例#20
0
    def formula(individu, period, parameters):
        assiette_cotisations_sociales = individu(
            'assiette_cotisations_sociales', period)
        categorie_salarie = individu('categorie_salarie', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)

        law = parameters(period)

        cotisation_non_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = law.cotsoc.cotisations_employeur,
            bareme_name = "agffnc",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )

        cotisation_cadre = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = law.cotsoc.cotisations_employeur,
            bareme_name = "agffc",
            base = assiette_cotisations_sociales,
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return cotisation_cadre + cotisation_non_cadre
示例#21
0
    def function(self, simulation, period):
        assiette_cotisations_sociales = simulation.calculate(
            'assiette_cotisations_sociales', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        _P = simulation.legislation_at(period.start)

        ircantec = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_employeur,
            bareme_name="ircantec",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return ircantec
示例#22
0
    def formula(self, simulation, period):
        assiette_cotisations_sociales = simulation.calculate(
            'assiette_cotisations_sociales', period)
        plafond_securite_sociale = simulation.calculate(
            'plafond_securite_sociale', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        _P = simulation.parameters_at(period.start)

        ircantec = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_salarie,
            bareme_name="ircantec",
            base=assiette_cotisations_sociales,
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return ircantec * (categorie_salarie == 6)  # agent non titulaire
    def formula(individu, period, parameters):
        traitement_indiciaire_brut = individu('traitement_indiciaire_brut',
                                              period)
        hsup = individu('hsup', period)
        categorie_salarie = individu('categorie_salarie', period)
        indemnite_residence = individu('indemnite_residence', period)
        primes_fonction_publique = individu('primes_fonction_publique', period)
        rafp_salarie = individu('rafp_salarie', period)
        pension_civile_salarie = individu('pension_civile_salarie', period)
        cotisations_salariales_contributives = individu(
            'cotisations_salariales_contributives', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)
        salaire_de_base = individu('salaire_de_base', period)

        _P = parameters(period)

        seuil_assuj_fds = seuil_fds(_P)

        assujettis = (
            (categorie_salarie == TypesCategorieSalarie.public_titulaire_etat)
            + (categorie_salarie
               == TypesCategorieSalarie.public_titulaire_territoriale) +
            (categorie_salarie
             == TypesCategorieSalarie.public_titulaire_hospitaliere) +
            (categorie_salarie == TypesCategorieSalarie.public_non_titulaire)
        ) * ((traitement_indiciaire_brut + salaire_de_base - hsup) >
             seuil_assuj_fds)

        # TODO: check assiette voir IPP
        cotisation = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name=_P.cotsoc.cotisations_salarie,
            bareme_name="excep_solidarite",
            base=assujettis * min_(
                (traitement_indiciaire_brut + salaire_de_base - hsup +
                 indemnite_residence + rafp_salarie + pension_civile_salarie +
                 primes_fonction_publique +
                 (categorie_salarie
                  == TypesCategorieSalarie.public_non_titulaire) *
                 cotisations_salariales_contributives),
                _P.prelevements_sociaux.cotisations_sociales.fds.
                plafond_base_solidarite,
            ),
            plafond_securite_sociale=plafond_securite_sociale,
            categorie_salarie=categorie_salarie,
        )
        return cotisation
    def function(self, simulation, period):
        period = period.this_month
        traitement_indiciaire_brut = simulation.calculate('traitement_indiciaire_brut', period)
        hsup = simulation.calculate('hsup', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)
        indemnite_residence = simulation.calculate('indemnite_residence', period)
        primes_fonction_publique = simulation.calculate('primes_fonction_publique', period)
        rafp_salarie = simulation.calculate('rafp_salarie', period)
        pension_civile_salarie = simulation.calculate('pension_civile_salarie', period)
        cotisations_salariales_contributives = simulation.calculate('cotisations_salariales_contributives', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        salaire_de_base = simulation.calculate('salaire_de_base', period)

        _P = simulation.legislation_at(period.start)

        seuil_assuj_fds = seuil_fds(_P)

        assujettis = (
            (categorie_salarie == CAT['public_titulaire_etat']) +
            (categorie_salarie == CAT['public_titulaire_territoriale']) +
            (categorie_salarie == CAT['public_titulaire_hospitaliere']) +
            (categorie_salarie == CAT['public_non_titulaire'])
            ) * (
            (traitement_indiciaire_brut + salaire_de_base - hsup) > seuil_assuj_fds
            )

        # TODO: check assiette voir IPP
        cotisation = apply_bareme_for_relevant_type_sal(
            bareme_by_type_sal_name = _P.cotsoc.cotisations_salarie,
            bareme_name = "excep_solidarite",
            base = assujettis * min_(
                (
                    traitement_indiciaire_brut + salaire_de_base - hsup + indemnite_residence + rafp_salarie +
                    pension_civile_salarie +
                    primes_fonction_publique +
                    (categorie_salarie == CAT['public_non_titulaire']) * cotisations_salariales_contributives
                    ),
                _P.cotsoc.sal.fonc.commun.plafond_base_solidarite,
                ),
            plafond_securite_sociale = plafond_securite_sociale,
            categorie_salarie = categorie_salarie,
            )
        return period, cotisation
示例#25
0
    def function(self, simulation, period):
        period = period.this_month
        assiette_allegement = simulation.calculate('assiette_allegement', period)
        jei_date_demande = simulation.calculate('jei_date_demande', period)
        jeune_entreprise_innovante = simulation.calculate('jeune_entreprise_innovante', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        smic_proratise = simulation.calculate('smic_proratise', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(period.start).cotsoc.cotisations_employeur
        bareme_names = ['vieillesse_deplafonnee', 'vieillesse_plafonnee', 'maladie', 'famille']

        exoneration = smic_proratise * 0.0
        for bareme_name in bareme_names:
            exoneration += apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name = bareme_by_type_sal_name,
                bareme_name = bareme_name,
                categorie_salarie = categorie_salarie,
                base = min_(assiette_allegement, 4.5 * smic_proratise),
                plafond_securite_sociale = plafond_securite_sociale,
                round_base_decimals = 2,
                )

        exoneration_relative_year_passed = exoneration_relative_year(period, jei_date_demande)
        rate_by_year_passed = {
            0: 1,
            1: 1,
            2: 1,
            3: 1,
            4: 1,
            5: 1,
            6: 1,
            7: 1,
            }  # TODO: move to legislation parameters file
        for year_passed, rate in rate_by_year_passed.iteritems():
            condition_on_year_passed = exoneration_relative_year_passed == timedelta64(year_passed, 'Y')
            if condition_on_year_passed.any():
                exoneration[condition_on_year_passed] = rate * exoneration

        return period, - exoneration * jeune_entreprise_innovante
示例#26
0
    def formula(individu, period, parameters):
        agirc_employeur = individu('agirc_employeur', period)
        agirc_gmp_employeur = individu('agirc_gmp_employeur', period)
        arrco_employeur = individu('arrco_employeur', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)
        stage_gratification_reintegration = individu('stage_gratification_reintegration', period)
        stagiaire = individu('stagiaire', period)
        categorie_salarie = individu('categorie_salarie', period)

        bareme_by_type_sal_name = parameters(period).cotsoc.cotisations_employeur
        exoneration = sum(
            apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name = bareme_by_type_sal_name,
                bareme_name = bareme_name,
                categorie_salarie = categorie_salarie,
                base = stage_gratification_reintegration,
                plafond_securite_sociale = plafond_securite_sociale,
                round_base_decimals = 2,
                )
            for bareme_name in ['agffnc', 'agffc', 'chomfg', 'assedic']
            )
        exoneration += agirc_employeur + agirc_gmp_employeur + arrco_employeur
        return - exoneration * stagiaire
示例#27
0
    def function(self, simulation, period):
        period = period.this_month
        agirc_employeur = simulation.calculate('agirc_employeur', period)
        agirc_gmp_employeur = simulation.calculate('agirc_gmp_employeur', period)
        arrco_employeur = simulation.calculate('arrco_employeur', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        stage_gratification_reintegration = simulation.calculate('stage_gratification_reintegration', period)
        stagiaire = simulation.calculate('stagiaire', period)
        categorie_salarie = simulation.calculate('categorie_salarie', period)

        bareme_by_type_sal_name = simulation.legislation_at(period.start).cotsoc.cotisations_employeur
        exoneration = sum(
            apply_bareme_for_relevant_type_sal(
                bareme_by_type_sal_name = bareme_by_type_sal_name,
                bareme_name = bareme_name,
                categorie_salarie = categorie_salarie,
                base = stage_gratification_reintegration,
                plafond_securite_sociale = plafond_securite_sociale,
                round_base_decimals = 2,
                )
            for bareme_name in ['agffnc', 'agffc', 'chomfg', 'assedic']
        )
        exoneration += agirc_employeur + agirc_gmp_employeur + arrco_employeur
        return period, - exoneration * stagiaire