예제 #1
0
    def function(self, simulation, period):
        period = period.this_month
        chomage_brut = simulation.calculate('chomage_brut', period)
        csg_deductible_chomage = simulation.calculate('csg_deductible_chomage', period)
        csg_imposable_chomage = simulation.calculate('csg_imposable_chomage', period)
        taux_csg_remplacement = simulation.calculate('taux_csg_remplacement', period)
        law = simulation.legislation_at(period.start)

        smic_h_b = law.cotsoc.gen.smic_h_b
        # salaire_mensuel_reference = chomage_brut / .7
        # heures_mensuelles = min_(salaire_mensuel_reference / smic_h_b, 35 * 52 / 12)  # TODO: depuis 2001 mais avant ?
        heures_mensuelles = 35 * 52 / 12
        cho_seuil_exo = law.csg.chomage.min_exo * heures_mensuelles * smic_h_b

        montant_crds = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            law_node = law.crds.activite,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            ) * (2 <= taux_csg_remplacement)

        crds_chomage = max_(
            -montant_crds - max_(
                cho_seuil_exo - (chomage_brut + csg_imposable_chomage + csg_deductible_chomage + montant_crds), 0
                ), 0
            )
        return period, -crds_chomage
예제 #2
0
    def formula(individu, period, parameters):
        chomage_brut = individu('chomage_brut', period)
        csg_imposable_chomage = individu('csg_imposable_chomage', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        parameters = parameters(period.start)
        montant_csg = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            indicatrice_taux_plein = (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_plein),
            indicatrice_taux_reduit = (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_reduit),
            law_node = parameters.prelevements_sociaux.contributions.csg.chomage.deductible,
            plafond_securite_sociale = parameters.cotsoc.gen.plafond_securite_sociale,
            )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?

        cho_seuil_exo = (
            parameters.prelevements_sociaux.contributions.csg.chomage.min_exo
            * nbh_travail
            * parameters.cotsoc.gen.smic_h_b
            )

        csg_deductible_chomage = max_(
            - montant_csg
            - max_(cho_seuil_exo - (
                chomage_brut
                + csg_imposable_chomage
                + montant_csg
                ), 0),
            0,
            )

        return - csg_deductible_chomage
    def formula(individu, period, parameters):
        chomage_brut = individu('chomage_brut', period)
        csg_deductible_chomage = individu('csg_deductible_chomage', period)
        csg_imposable_chomage = individu('csg_imposable_chomage', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = parameters(period.start)
        smic_h_b = law.cotsoc.gen.smic_h_b
        # salaire_mensuel_reference = chomage_brut / .7
        # heures_mensuelles = min_(salaire_mensuel_reference / smic_h_b, 35 * 52 / 12)  # TODO: depuis 2001 mais avant ?
        heures_mensuelles = 35 * 52 / 12
        cho_seuil_exo = law.prelevements_sociaux.contributions.csg.chomage.min_exo * heures_mensuelles * smic_h_b
        eligible = (
            (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_reduit) +
            (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_plein))
        montant_crds = montant_csg_crds(
            base_avec_abattement=chomage_brut,
            law_node=law.prelevements_sociaux.contributions.crds.activite,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        ) * eligible

        crds_chomage = max_(
            -montant_crds - max_(
                cho_seuil_exo - (chomage_brut + csg_imposable_chomage +
                                 csg_deductible_chomage + montant_crds), 0), 0)
        return -crds_chomage
예제 #4
0
    def formula(individu, period, parameters):
        chomage_brut = individu('chomage_brut', period)
        csg_deductible_chomage = individu('csg_deductible_chomage', period)
        csg_imposable_chomage = individu('csg_imposable_chomage', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = parameters(period.start)
        smic_h_b = law.cotsoc.gen.smic_h_b
        # salaire_mensuel_reference = chomage_brut / .7
        # heures_mensuelles = min_(salaire_mensuel_reference / smic_h_b, 35 * 52 / 12)  # TODO: depuis 2001 mais avant ?
        heures_mensuelles = 35 * 52 / 12
        cho_seuil_exo = law.prelevements_sociaux.contributions.csg.chomage.min_exo * heures_mensuelles * smic_h_b
        eligible = (
            (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_reduit)
            + (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_plein)
            )
        montant_crds = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            law_node = law.prelevements_sociaux.contributions.crds.activite,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            ) * eligible

        crds_chomage = max_(
            -montant_crds - max_(
                cho_seuil_exo - (chomage_brut + csg_imposable_chomage + csg_deductible_chomage + montant_crds), 0
                ), 0
            )
        return -crds_chomage
예제 #5
0
 def formula(individu, period, legislation):
     chomage_brut = individu('chomage_brut', period)
     csg_imposable_chomage = individu('csg_imposable_chomage', period)
     taux_csg_remplacement = individu('taux_csg_remplacement', period)
     legislation = legislation(period.start)
     montant_csg = montant_csg_crds(
         base_avec_abattement=chomage_brut,
         indicatrice_taux_plein=(taux_csg_remplacement == 3),
         indicatrice_taux_reduit=(taux_csg_remplacement == 2),
         law_node=legislation.prelevements_sociaux.contributions.csg.
         chomage.deductible,
         plafond_securite_sociale=legislation.cotsoc.gen.
         plafond_securite_sociale,
     )
     nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
     cho_seuil_exo = (
         legislation.prelevements_sociaux.contributions.csg.chomage.min_exo
         * nbh_travail * legislation.cotsoc.gen.smic_h_b)
     csg_deductible_chomage = max_(
         -montant_csg - max_(
             cho_seuil_exo -
             (chomage_brut + csg_imposable_chomage + montant_csg), 0),
         0,
     )
     return -csg_deductible_chomage
예제 #6
0
    def formula(individu, period, parameters):
        retraite_brute = individu('retraite_brute', period)
        law = parameters(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement = retraite_brute,
            law_node = law.prelevements_sociaux.contributions.csg.retraite.imposable,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        return montant_csg
예제 #7
0
    def formula(individu, period, parameters):
        retraite_brute = individu('retraite_brute', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = parameters(period.start)

        montant_crds = montant_csg_crds(
            base_sans_abattement = retraite_brute,
            law_node = law.prelevements_sociaux.contributions.crds.retraite,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            ) * (taux_csg_remplacement == TypesTauxCSGRemplacement.exonere)
        return montant_crds
    def formula(individu, period, parameters):
        retraite_brute = individu('retraite_brute', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = parameters(period.start)

        montant_crds = montant_csg_crds(
            base_sans_abattement=retraite_brute,
            law_node=law.prelevements_sociaux.contributions.crds.retraite,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        ) * (taux_csg_remplacement == TypesTauxCSGRemplacement.exonere)
        return montant_crds
예제 #9
0
    def formula(individu, period, legislation):
        retraite_brute = individu('retraite_brute', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = legislation(period.start)

        montant_crds = montant_csg_crds(
            base_sans_abattement=retraite_brute,
            law_node=law.prelevements_sociaux.contributions.crds.retraite,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        ) * (taux_csg_remplacement == 1)
        return montant_crds
예제 #10
0
    def function(self, simulation, period):
        period = period.this_month
        retraite_brute = simulation.calculate('retraite_brute', period)
        law = simulation.legislation_at(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement = retraite_brute,
            law_node = law.csg.retraite.imposable,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        return period, montant_csg
예제 #11
0
    def function(individu, period, legislation):
        period = period.this_month
        retraite_brute = individu('retraite_brute', period)
        law = legislation(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement=retraite_brute,
            law_node=law.prelevements_sociaux.contributions.csg.retraite.
            imposable,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        )
        return period, montant_csg
예제 #12
0
    def formula(self, simulation, period):
        assiette_csg_abattue = simulation.calculate('assiette_csg_abattue', period)
        assiette_csg_non_abattue = simulation.calculate('assiette_csg_non_abattue', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)

        csg = simulation.legislation_at(period.start).prelevements_sociaux.contributions.csg
        montant_csg = montant_csg_crds(
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            law_node = csg.activite.deductible,
            plafond_securite_sociale = plafond_securite_sociale,
            )
        return montant_csg
예제 #13
0
    def formula(individu, period, parameters):
        assiette_csg_abattue = individu('assiette_csg_abattue', period)
        assiette_csg_non_abattue = individu('assiette_csg_non_abattue', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)

        csg = parameters(period).prelevements_sociaux.contributions.csg
        montant_csg = montant_csg_crds(
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            law_node = csg.activite.deductible,
            plafond_securite_sociale = plafond_securite_sociale,
            )
        return montant_csg
예제 #14
0
    def formula(individu, period, parameters):
        assiette_csg_abattue = individu('assiette_csg_abattue', period)
        assiette_csg_non_abattue = individu('assiette_csg_non_abattue', period)
        plafond_securite_sociale = individu('plafond_securite_sociale', period)

        csg = parameters(period).prelevements_sociaux.contributions.csg
        montant_csg = montant_csg_crds(
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            law_node = csg.activite.deductible,
            plafond_securite_sociale = plafond_securite_sociale,
            )
        return montant_csg
예제 #15
0
    def formula(individu, period, parameters):
        retraite_brute = individu('retraite_brute', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = parameters(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement = retraite_brute,
            indicatrice_taux_plein = (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_plein),
            indicatrice_taux_reduit = (taux_csg_remplacement == TypesTauxCSGRemplacement.taux_reduit),
            law_node = law.prelevements_sociaux.contributions.csg.retraite.deductible,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        return montant_csg
예제 #16
0
    def function(self, simulation, period):
        period = period.this_month
        retraite_brute = simulation.calculate('retraite_brute', period)
        taux_csg_remplacement = simulation.calculate('taux_csg_remplacement', period)
        law = simulation.legislation_at(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement = retraite_brute,
            indicatrice_taux_plein = (taux_csg_remplacement == 3),
            indicatrice_taux_reduit = (taux_csg_remplacement == 2),
            law_node = law.csg.retraite.deductible,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        return period, montant_csg
예제 #17
0
    def function(individu, period, legislation):
        retraite_brute = individu('retraite_brute', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = legislation(period.start)

        montant_csg = montant_csg_crds(
            base_sans_abattement=retraite_brute,
            indicatrice_taux_plein=(taux_csg_remplacement == 3),
            indicatrice_taux_reduit=(taux_csg_remplacement == 2),
            law_node=law.prelevements_sociaux.contributions.csg.retraite.
            deductible,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        )
        return montant_csg
예제 #18
0
    def function(self, simulation, period):
        period = period.this_month
        chomage_brut = simulation.calculate('chomage_brut', period)
        law = simulation.legislation_at(period.start)

        montant_csg = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            law_node = law.csg.chomage.imposable,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
        cho_seuil_exo = law.csg.chomage.min_exo * nbh_travail * law.cotsoc.gen.smic_h_b
        csg_imposable_chomage = max_(- montant_csg - max_(cho_seuil_exo - (chomage_brut + montant_csg), 0), 0)
        return period, - csg_imposable_chomage
예제 #19
0
    def function(self, simulation, period):
        period = period.this_month
        assiette_csg_abattue = simulation.calculate('assiette_csg_abattue', period)
        assiette_csg_non_abattue = simulation.calculate('assiette_csg_non_abattue', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)

        csg = simulation.legislation_at(period.start).prelevements_sociaux.contributions.csg
        montant_csg = montant_csg_crds(
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            law_node = csg.activite.deductible,
            plafond_securite_sociale = plafond_securite_sociale,
            )
        return period, montant_csg
예제 #20
0
    def function(self, simulation, period):
        period = period.this_month
        assiette_csg_abattue = simulation.calculate('assiette_csg_abattue', period)
        assiette_csg_non_abattue = simulation.calculate('assiette_csg_non_abattue', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)
        legislation = simulation.legislation_at(period.start)

        montant_csg = montant_csg_crds(
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            law_node = legislation.prelevements_sociaux.contributions.csg.activite.imposable,
            plafond_securite_sociale = plafond_securite_sociale,
            )

        return period, montant_csg
예제 #21
0
    def formula(self, simulation, period):
        assiette_csg_abattue = simulation.calculate('assiette_csg_abattue', period)
        assiette_csg_non_abattue = simulation.calculate('assiette_csg_non_abattue', period)
        plafond_securite_sociale = simulation.calculate('plafond_securite_sociale', period)

        law = simulation.parameters_at(period.start)

        montant_crds = montant_csg_crds(
            law_node = law.prelevements_sociaux.contributions.crds.activite,
            base_avec_abattement = assiette_csg_abattue,
            base_sans_abattement = assiette_csg_non_abattue,
            plafond_securite_sociale = plafond_securite_sociale,
            )

        return montant_crds
예제 #22
0
    def formula(individu, period, parameters):
        chomage_brut = individu('chomage_brut', period)
        parameters = parameters(period.start)

        montant_csg = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            law_node = parameters.prelevements_sociaux.contributions.csg.chomage.imposable,
            plafond_securite_sociale = parameters.cotsoc.gen.plafond_securite_sociale,
            )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
        cho_seuil_exo = (
            parameters.prelevements_sociaux.contributions.csg.chomage.min_exo * nbh_travail *
            parameters.cotsoc.gen.smic_h_b
            )
        csg_imposable_chomage = max_(- montant_csg - max_(cho_seuil_exo - (chomage_brut + montant_csg), 0), 0)
        return - csg_imposable_chomage
예제 #23
0
    def formula(individu, period, parameters):
        chomage_brut = individu('chomage_brut', period)
        parameters = parameters(period.start)

        montant_csg = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            law_node = parameters.prelevements_sociaux.contributions.csg.chomage.imposable,
            plafond_securite_sociale = parameters.cotsoc.gen.plafond_securite_sociale,
            )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
        cho_seuil_exo = (
            parameters.prelevements_sociaux.contributions.csg.chomage.min_exo
            * nbh_travail
            * parameters.cotsoc.gen.smic_h_b
            )
        csg_imposable_chomage = max_(- montant_csg - max_(cho_seuil_exo - (chomage_brut + montant_csg), 0), 0)
        return - csg_imposable_chomage
예제 #24
0
    def function(individu, period, legislation):
        period = period.this_month
        chomage_brut = individu('chomage_brut', period)
        legislation = legislation(period.start)

        montant_csg = montant_csg_crds(
            base_avec_abattement=chomage_brut,
            law_node=legislation.prelevements_sociaux.contributions.csg.
            chomage.imposable,
            plafond_securite_sociale=legislation.cotsoc.gen.
            plafond_securite_sociale,
        )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
        cho_seuil_exo = (
            legislation.prelevements_sociaux.contributions.csg.chomage.min_exo
            * nbh_travail * legislation.cotsoc.gen.smic_h_b)
        csg_imposable_chomage = max_(
            -montant_csg - max_(cho_seuil_exo -
                                (chomage_brut + montant_csg), 0), 0)
        return period, -csg_imposable_chomage
예제 #25
0
    def function(self, simulation, period):
        period = period.this_month
        chomage_brut = simulation.calculate('chomage_brut', period)
        csg_imposable_chomage = simulation.calculate('csg_imposable_chomage', period)
        taux_csg_remplacement = simulation.calculate('taux_csg_remplacement', period)
        law = simulation.legislation_at(period.start)
        montant_csg = montant_csg_crds(
            base_avec_abattement = chomage_brut,
            indicatrice_taux_plein = (taux_csg_remplacement == 3),
            indicatrice_taux_reduit = (taux_csg_remplacement == 2),
            law_node = law.csg.chomage.deductible,
            plafond_securite_sociale = law.cotsoc.gen.plafond_securite_sociale,
            )
        nbh_travail = 35 * 52 / 12  # = 151.67  # TODO: depuis 2001 mais avant ?
        cho_seuil_exo = law.csg.chomage.min_exo * nbh_travail * law.cotsoc.gen.smic_h_b
        csg_deductible_chomage = max_(
            - montant_csg - max_(cho_seuil_exo - (chomage_brut + csg_imposable_chomage + montant_csg), 0),
            0,
            )

        return period, - csg_deductible_chomage
예제 #26
0
    def function(individu, period, legislation):
        chomage_brut = individu('chomage_brut', period)
        csg_deductible_chomage = individu('csg_deductible_chomage', period)
        csg_imposable_chomage = individu('csg_imposable_chomage', period)
        taux_csg_remplacement = individu('taux_csg_remplacement', period)
        law = legislation(period.start)
        smic_h_b = law.cotsoc.gen.smic_h_b
        # salaire_mensuel_reference = chomage_brut / .7
        # heures_mensuelles = min_(salaire_mensuel_reference / smic_h_b, 35 * 52 / 12)  # TODO: depuis 2001 mais avant ?
        heures_mensuelles = 35 * 52 / 12
        cho_seuil_exo = law.prelevements_sociaux.contributions.csg.chomage.min_exo * heures_mensuelles * smic_h_b

        montant_crds = montant_csg_crds(
            base_avec_abattement=chomage_brut,
            law_node=law.prelevements_sociaux.contributions.crds.activite,
            plafond_securite_sociale=law.cotsoc.gen.plafond_securite_sociale,
        ) * (2 <= taux_csg_remplacement)

        crds_chomage = max_(
            -montant_crds - max_(
                cho_seuil_exo - (chomage_brut + csg_imposable_chomage +
                                 csg_deductible_chomage + montant_crds), 0), 0)
        return -crds_chomage