示例#1
0
    def function__2009(self, simulation, period):
        """
        Allocation de parent isolé
        """
        period = period.this_month
        age_en_mois_holder = simulation.compute('age_en_mois', period)
        age_holder = simulation.compute('age', period)
        autonomie_financiere_holder = simulation.compute('autonomie_financiere', period)
        isole = not_(simulation.calculate('en_couple', period))
        rsa_forfait_logement = simulation.calculate('rsa_forfait_logement', period)
        rsa_base_ressources = simulation.calculate('rsa_base_ressources', period)
        af_majoration = simulation.calculate('af_majoration', period)
        rsa = simulation.calculate('rsa', period)
        af = simulation.legislation_at(period.start).fam.af
        api = simulation.legislation_at(period.start).minim.api

        age = self.split_by_roles(age_holder, roles = ENFS)
        age_en_mois = self.split_by_roles(age_en_mois_holder, roles = ENFS)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
        # TODO:
        #    Majoration pour isolement
        #    Si vous êtes parent isolé, c’est-à-dire célibataire, divorcé(e), séparé(e) ou veuf(ve) avec des enfants
        #    à charge ou enceinte, le montant forfaitaire garanti est majoré.
        #    Ce montant forfaitaire majoré est accordé à partir du mois au cours duquel survient l'un des événements
        #    suivants :
        #    - déclaration de grossesse,
        #    - naissance d'un enfant,
        #    - prise en charge d'un enfant,
        #    - séparation, veuvage,
        #    - dépôt de la demande si l’événement est antérieur.
        #
        #    Le montant forfaitaire majoré peut être accordé pendant 12 mois, continus ou discontinus, au cours
        #    d’une période de 18 mois suivant l’événement.
        #    Si votre plus jeune enfant à charge a moins de 3 ans, le montant forfaitaire majoré vous est accordé
        #    jusqu'à ses 3 ans.
        benjamin = age_en_mois_benjamin(age_en_mois)
        enceinte = (benjamin < 0) * (benjamin > -6)
        # TODO: quel mois mettre ?
        # TODO: pas complètement exact
        # L'allocataire perçoit l'API :
        # jusqu'�� ce que le plus jeune enfant ait 3 ans,
        # ou pendant 12 mois consécutifs si les enfants sont âgés de plus de 3 ans
        #    et s'il a présenté sa demande dans les 6 mois à partir du moment où il
        #    assure seul la charge de l'enfant.
        # TODO: API courte gens pour les gens qui ont divorcés dans l'année
        # Le droit à l'allocation est réétudié tous les 3 mois.
        # # Calcul de l'année et mois de naissance du benjamin

        condition = (floor(benjamin / 12) <= api.age - 1)
        eligib = isole * ((enceinte != 0) | (nb_enf(age, autonomie_financiere, 0, api.age - 1) > 0)) * condition

        # moins de 20 ans avant inclusion dans rsa
        # moins de 25 ans après inclusion dans rsa
        api1 = eligib * af.bmaf * (api.base + api.enf_sup * nb_enf(age, autonomie_financiere, af.age1, api.age_pac - 1))
        rsa = (api.age_pac >= 25)  # dummy passage au rsa majoré
        br_api = rsa_base_ressources + af_majoration * not_(rsa)
        # On pourrait mensualiser RMI, BRrmi et forfait logement
        api = max_(0, api1 - rsa_forfait_logement / 12 - br_api / 12 - rsa / 12)
        # L'API est exonérée de CRDS
        return period, api  # annualisé
示例#2
0
    def function(famille, period, legislation):
        """
        Allocation de parent isolé
        """
        period = period.this_month
        isole = not_(famille('en_couple', period))
        rsa_forfait_logement = famille('rsa_forfait_logement', period)
        rsa_base_ressources = famille('rsa_base_ressources', period)
        af_majoration = famille('af_majoration', period)
        rsa = famille('rsa', period)
        af = legislation(period).prestations.prestations_familiales.af
        api = legislation(period).prestations.minima_sociaux.api

        # TODO:
        #    Majoration pour isolement
        #    Si vous êtes parent isolé, c’est-à-dire célibataire, divorcé(e), séparé(e) ou veuf(ve) avec des enfants
        #    à charge ou enceinte, le montant forfaitaire garanti est majoré.
        #    Ce montant forfaitaire majoré est accordé à partir du mois au cours duquel survient l'un des événements
        #    suivants :
        #    - déclaration de grossesse,
        #    - naissance d'un enfant,
        #    - prise en charge d'un enfant,
        #    - séparation, veuvage,
        #    - dépôt de la demande si l’événement est antérieur.
        #
        #    Le montant forfaitaire majoré peut être accordé pendant 12 mois, continus ou discontinus, au cours
        #    d’une période de 18 mois suivant l’événement.
        #    Si votre plus jeune enfant à charge a moins de 3 ans, le montant forfaitaire majoré vous est accordé
        #    jusqu'à ses 3 ans.
        age_en_mois_i = famille.members('age_en_mois', period)
        age_en_mois_benjamin = famille.min(age_en_mois_i, role=Famille.ENFANT)
        enceinte = (age_en_mois_benjamin < 0) * (age_en_mois_benjamin > -6)
        # TODO: quel mois mettre ?
        # TODO: pas complètement exact
        # L'allocataire perçoit l'API :
        # jusqu'�� ce que le plus jeune enfant ait 3 ans,
        # ou pendant 12 mois consécutifs si les enfants sont âgés de plus de 3 ans
        #    et s'il a présenté sa demande dans les 6 mois à partir du moment où il
        #    assure seul la charge de l'enfant.
        # TODO: API courte gens pour les gens qui ont divorcés dans l'année
        # Le droit à l'allocation est réétudié tous les 3 mois.
        # # Calcul de l'année et mois de naissance du benjamin

        condition = (floor(age_en_mois_benjamin / 12) <= api.age_limite - 1)
        eligib = isole * (
            (enceinte != 0) |
            (nb_enf(famille, period, 0, api.age_limite - 1) > 0)) * condition

        # moins de 20 ans avant inclusion dans rsa
        # moins de 25 ans après inclusion dans rsa
        api1 = eligib * af.bmaf * (
            api.base + api.supplement_par_enfant *
            nb_enf(famille, period, af.age1, api.age_pac - 1))
        rsa = (api.age_pac >= 25)  # dummy passage au rsa majoré
        br_api = rsa_base_ressources + af_majoration * not_(rsa)
        # On pourrait mensualiser RMI, BRrmi et forfait logement
        api = max_(0,
                   api1 - rsa_forfait_logement / 12 - br_api / 12 - rsa / 12)
        # L'API est exonérée de CRDS
        return period, api  # annualisé
示例#3
0
    def function(self, simulation, period):
        '''
        Allocation parentale d'éducation
        'fam'

        L’allocation parentale d’éducation s’adresse aux parents qui souhaitent arrêter ou
        réduire leur activité pour s’occuper de leurs jeunes enfants, à condition que ceux-ci
        soient nés avant le 01/01/2004. En effet, pour les enfants nés depuis cette date,
        dans le cadre de la Prestation d’Accueil du Jeune Enfant, les parents peuvent bénéficier
        du « complément de libre choix d’activité. »

        Les personnes en couple peuvent toutes deux bénéficier de l’APE à taux plein, mais pas en même temps.
        En revanche, elles peuvent cumuler deux taux partiels, à condition que leur total ne dépasse pas le montant
        du taux plein.

        TODO: cumul,  adoption, triplés,
        Cumul d'allocations : Cette allocation n'est pas cumulable pour un même ménage avec
        - une autre APE (sauf à taux partiel),
        - ou l'allocation pour jeune enfant (APJE) versée à partir de la naissance,
        - ou le complément familial,
        - ou l'allocation d’adulte handicapé (AAH).
        Enfin, il est à noter que cette allocation n’est pas cumulable avec :
        - une pension d’invalidité ou une retraite ;
        - des indemnités journalières de maladie, de maternité ou d’accident du travail ;
        - des allocations chômage. Il est tout de même possible de demander aux ASSEDIC la suspension de ces dernières
          pour percevoir l’APE.

        L'allocation parentale d'éducation n'est pas soumise à condition de ressources, sauf l’APE à taux partiel pour
        les professions non salariées.
        '''
        period = period.this_month
        age_holder = simulation.compute('age', period)
        autonomie_financiere_holder = simulation.compute('autonomie_financiere', accept_other_period = True)
        inactif = simulation.calculate('inactif', period)
        partiel1 = simulation.calculate('partiel1', period)
        partiel2 = simulation.calculate('partiel2', period)
        P = simulation.legislation_at(period.start).fam

        age = self.split_by_roles(age_holder, roles = ENFS)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)

        elig = (nb_enf(age, autonomie_financiere, 0, P.ape.age - 1) >= 1) & (nb_enf(age, autonomie_financiere, 0, P.af.age2) >= 2)
        # Inactif
        # Temps partiel 1
        # Salarié:
        # Temps de travail ne dépassant pas 50 % de la durée du travail fixée dans l'entreprise
        # VRP ou non salarié travaillant à temps partiel:
        # Temps de travail ne dépassant pas 76 heures par mois et un revenu professionnel mensuel inférieur ou égal à
        # (smic_8.27*169*85 %)
        # partiel1 = zeros((12,self.taille))

        # Temps partiel 2
        # Salarié:
        # Salarié: Temps de travail compris entre 50 et 80 % de la durée du travail fixée dans l'entreprise.
        # Temps de travail compris entre 77 et 122 heures par mois et un revenu professionnel mensuel ne dépassant pas
        #  (smic_8.27*169*136 %)
        ape = elig * (inactif * P.ape.tx_inactif + partiel1 * P.ape.tx_50 + partiel2 * P.ape.tx_80)
        # Cummul APE APJE CF
        return period, ape  # annualisé
示例#4
0
    def formula(famille, period, parameters):
        '''
        Allocation parentale d'éducation

        L’allocation parentale d’éducation s’adresse aux parents qui souhaitent arrêter ou
        réduire leur activité pour s’occuper de leurs jeunes enfants, à condition que ceux-ci
        soient nés avant le 01/01/2004. En effet, pour les enfants nés depuis cette date,
        dans le cadre de la Prestation d’Accueil du Jeune Enfant, les parents peuvent bénéficier
        du « complément de libre choix d’activité. »

        Les personnes en couple peuvent toutes deux bénéficier de l’APE à taux plein, mais pas en même temps.
        En revanche, elles peuvent cumuler deux taux partiels, à condition que leur total ne dépasse pas le montant
        du taux plein.

        TODO: cumul,  adoption, triplés,
        Cumul d'allocations : Cette allocation n'est pas cumulable pour un même ménage avec
        - une autre APE (sauf à taux partiel),
        - ou l'allocation pour jeune enfant (APJE) versée à partir de la naissance,
        - ou le complément familial,
        - ou l'allocation d’adulte handicapé (AAH).
        Enfin, il est à noter que cette allocation n’est pas cumulable avec :
        - une pension d’invalidité ou une retraite ;
        - des indemnités journalières de maladie, de maternité ou d’accident du travail ;
        - des allocations chômage. Il est tout de même possible de demander aux ASSEDIC la suspension de ces dernières
          pour percevoir l’APE.

        L'allocation parentale d'éducation n'est pas soumise à condition de ressources, sauf l’APE à taux partiel pour
        les professions non salariées.
        '''
        inactif = famille('inactif', period)
        partiel1 = famille('partiel1', period)
        partiel2 = famille('partiel2', period)
        P = parameters(period).prestations.prestations_familiales

        elig = (nb_enf(famille, period, 0, P.ape.age_max_enfant - 1) >= 1) & (
            nb_enf(famille, period, 0, P.af.age2) >= 2)  # Inactif
        # Temps partiel 1
        # Salarié:
        # Temps de travail ne dépassant pas 50 % de la durée du travail fixée dans l'entreprise
        # VRP ou non salarié travaillant à temps partiel:
        # Temps de travail ne dépassant pas 76 heures par mois et un revenu professionnel mensuel inférieur ou égal à
        # (smic_8.27*169*85 %)
        # partiel1 = zeros((12,self.taille))

        # Temps partiel 2
        # Salarié:
        # Salarié: Temps de travail compris entre 50 et 80 % de la durée du travail fixée dans l'entreprise.
        # Temps de travail compris entre 77 et 122 heures par mois et un revenu professionnel mensuel ne dépassant pas
        #  (smic_8.27*169*136 %)
        ape = elig * (inactif * P.ape.taux_inactivite +
                      partiel1 * P.ape.taux_activite_sup_50 +
                      partiel2 * P.ape.taux_activite_sup_80)
        # Cummul APE APJE CF
        return ape  # annualisé
示例#5
0
    def formula(famille, period, parameters):
        """
        Allocation de parent isolé
        """
        isole = not_(famille('en_couple', period))
        rsa_forfait_logement = famille('rsa_forfait_logement', period)
        rsa_base_ressources = famille('rsa_base_ressources', period)
        af_majoration = famille('af_majoration', period)
        rsa = famille('rsa', period)
        af = parameters(period).prestations.prestations_familiales.af
        api = parameters(period).prestations.minima_sociaux.api

        # TODO:
        #    Majoration pour isolement
        #    Si vous êtes parent isolé, c’est-à-dire célibataire, divorcé(e), séparé(e) ou veuf(ve) avec des enfants
        #    à charge ou enceinte, le montant forfaitaire garanti est majoré.
        #    Ce montant forfaitaire majoré est accordé à partir du mois au cours duquel survient l'un des événements
        #    suivants :
        #    - déclaration de grossesse,
        #    - naissance d'un enfant,
        #    - prise en charge d'un enfant,
        #    - séparation, veuvage,
        #    - dépôt de la demande si l’événement est antérieur.
        #
        #    Le montant forfaitaire majoré peut être accordé pendant 12 mois, continus ou discontinus, au cours
        #    d’une période de 18 mois suivant l’événement.
        #    Si votre plus jeune enfant à charge a moins de 3 ans, le montant forfaitaire majoré vous est accordé
        #    jusqu'à ses 3 ans.
        age_en_mois_i = famille.members('age_en_mois', period)
        age_en_mois_enfant = famille.min(age_en_mois_i, role = Famille.ENFANT)
        enceinte = (age_en_mois_enfant < 0) * (age_en_mois_enfant > -6)
        # TODO: quel mois mettre ?
        # TODO: pas complètement exact
        # L'allocataire perçoit l'API :
        # jusqu'�� ce que le plus jeune enfant ait 3 ans,
        # ou pendant 12 mois consécutifs si les enfants sont âgés de plus de 3 ans
        #    et s'il a présenté sa demande dans les 6 mois à partir du moment où il
        #    assure seul la charge de l'enfant.
        # TODO: API courte gens pour les gens qui ont divorcés dans l'année
        # Le droit à l'allocation est réétudié tous les 3 mois.
        # # Calcul de l'année et mois de naissance du benjamin

        condition = (floor(age_en_mois_enfant / 12) <= api.age_limite - 1)
        eligib = isole * ((enceinte != 0) | (nb_enf(famille, period, 0, api.age_limite - 1) > 0)) * condition

        # moins de 20 ans avant inclusion dans rsa
        # moins de 25 ans après inclusion dans rsa
        api1 = eligib * af.bmaf * (api.base + api.supplement_par_enfant * nb_enf(famille, period, af.age1, api.age_pac - 1))
        rsa = (api.age_pac >= 25)  # dummy passage au rsa majoré
        br_api = rsa_base_ressources + af_majoration * not_(rsa)
        # On pourrait mensualiser RMI, BRrmi et forfait logement
        api = max_(0, api1 - rsa_forfait_logement / 12 - br_api / 12 - rsa / 12)
        # L'API est exonérée de CRDS
        return api  # annualisé
示例#6
0
    def formula(famille, period, parameters):
        '''
        Allocation de rentrée scolaire brute de CRDS
        '''
        janvier = period.first_month
        septembre = period.start.offset('first-of',
                                        'year').offset(9,
                                                       'month').period('month')
        af_nbenf = famille('af_nbenf', septembre)
        base_ressources = famille('prestations_familiales_base_ressources',
                                  janvier)
        P = parameters(septembre).prestations.prestations_familiales
        # TODO: convention sur la mensualisation
        # On tient compte du fait qu'en cas de léger dépassement du plafond, une allocation dégressive
        # (appelée allocation différentielle), calculée en fonction des revenus, peut être versée.

        bmaf = P.af.bmaf
        # On doit prendre l'âge en septembre
        enf_05 = nb_enf(famille, septembre, P.ars.age_entree_primaire - 1,
                        P.ars.age_entree_primaire -
                        1)  # 5 ans et 6 ans avant le 31 décembre
        # enf_05 = 0
        # Un enfant scolarisé qui n'a pas encore atteint l'âge de 6 ans
        # avant le 1er février 2012 peut donner droit à l'ARS à condition qu'il
        # soit inscrit à l'école primaire. Il faudra alors présenter un
        # certificat de scolarité.
        enf_primaire = enf_05 + nb_enf(famille, septembre,
                                       P.ars.age_entree_primaire,
                                       P.ars.age_entree_college - 1)
        enf_college = nb_enf(famille, septembre, P.ars.age_entree_college,
                             P.ars.age_entree_lycee - 1)
        enf_lycee = nb_enf(famille, septembre, P.ars.age_entree_lycee,
                           P.ars.age_sortie_lycee)

        arsnbenf = enf_primaire + enf_college + enf_lycee

        # Plafond en fonction du nb d'enfants A CHARGE (Cf. article R543)
        ars_plaf_res = P.ars.plafond_ressources * (
            1 + af_nbenf * P.ars.majoration_par_enf_supp)

        arsbase = bmaf * (P.ars.taux_primaire * enf_primaire +
                          P.ars.taux_college * enf_college +
                          P.ars.taux_lycee * enf_lycee)

        # Forme de l'ARS  en fonction des enfants a*n - (rev-plaf)/n
        # ars_diff = (ars_plaf_res + arsbase - base_ressources) / arsnbenf
        ars = (arsnbenf > 0) * max_(
            0, arsbase -
            max_(0, (base_ressources - ars_plaf_res) / max_(1, arsnbenf)))

        return ars * (ars >= P.ars.montant_seuil_non_versement)
def test_nb_enfants():
    test_case = deepcopy(TEST_CASE_AGES)
    simulation = tax_benefit_system.new_scenario().init_from_test_case(
        period = 2013,
        test_case = test_case
    ).new_simulation()
    from openfisca_france.model.prestations.prestations_familiales.base_ressource import nb_enf

    assert_near(nb_enf(simulation, simulation.period, 3, 18), [2, 0])
    assert_near(nb_enf(simulation, simulation.period, 19, 50), [0, 1]) # Adults don't count

    test_case['individus'][5]['autonomie_financiere'] = True
    simulation_2 = new_simulation(test_case)

    assert_near(nb_enf(simulation_2, simulation_2.period, 19, 50), [0, 0])
def test_nb_enfants():
    test_case = deepcopy(TEST_CASE_AGES)
    year = 2013
    test_case['period'] = year
    simulation = tax_benefit_system.new_scenario().init_from_dict(test_case).new_simulation()
    from openfisca_france.model.prestations.prestations_familiales.base_ressource import nb_enf

    month = periods.period(year).first_month
    assert_near(nb_enf(simulation.famille, month, 3, 18), [2, 0])
    assert_near(nb_enf(simulation.famille, month, 19, 50), [0, 1])  # Adults don't count

    test_case['individus']['ind5']['autonomie_financiere'] = True
    simulation_2 = new_simulation(test_case)

    assert_near(nb_enf(simulation_2.famille, month, 19, 50), [0, 0])
示例#9
0
        def function(self, simulation, period):
            period = period.start.offset('first-of', 'month').period('month')
            age_holder = simulation.compute('age', period)
            P = simulation.legislation_at(period.start).fam.af
            bmaf = P.bmaf

            smic55_holder = simulation.compute('smic55', period)
            smic55 = self.split_by_roles(smic55_holder, roles=ENFS)
            age = self.split_by_roles(age_holder, roles=ENFS)

            smic5 = {role: array * 0 for role, array in smic55.iteritems()}
            nbenf_inf13 = nb_enf(age, smic5, 0, 13)
            nbenf_sup14 = nb_enf(age, smic5, 14, 18)

            return period, (nbenf_inf13 * 0.41 + nbenf_sup14 * 0.57) * bmaf
示例#10
0
def test_nb_enfants():
    test_case = deepcopy(TEST_CASE_AGES)
    simulation = tax_benefit_system.new_scenario().init_from_test_case(
        period=2013, test_case=test_case).new_simulation()
    from openfisca_france.model.prestations.prestations_familiales.base_ressource import nb_enf

    assert_near(nb_enf(simulation.famille, simulation.period, 3, 18), [2, 0])
    assert_near(nb_enf(simulation.famille, simulation.period, 19, 50),
                [0, 1])  # Adults don't count

    test_case['individus'][5]['autonomie_financiere'] = True
    simulation_2 = new_simulation(test_case)

    assert_near(nb_enf(simulation_2.famille, simulation_2.period, 19, 50),
                [0, 0])
示例#11
0
    def formula_2002_01_01(famille, period, parameters):
        janvier = period.first_month

        af_nbenf = famille('af_nbenf', janvier)
        nb_parents = famille('nb_parents', janvier)
        ass = famille('ass', period, options=[ADD])
        api = famille('api', period, options=[ADD])
        rsa = famille('rsa', period, options=[ADD])
        P = parameters(period).prestations.minima_sociaux.aefa
        af = parameters(period).prestations.prestations_familiales.af

        aer_i = famille.members('aer', period, options=[ADD])
        aer = famille.sum(aer_i)
        dummy_ass = ass > 0
        dummy_aer = aer > 0
        dummy_api = api > 0
        dummy_rmi = rsa > 0
        maj = 0  # TODO
        condition = (dummy_ass + dummy_aer + dummy_api + dummy_rmi > 0)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(famille, janvier, af.age1, af.age3)
        else:
            nbPAC = af_nbenf
        # TODO check nombre de PAC pour une famille
        aefa = condition * P.mon_seul * (
            1 + (nb_parents == 2) * P.tx_2p + nbPAC * P.tx_supp *
            (nb_parents <= 2) + nbPAC * P.tx_3pac * max_(nbPAC - 2, 0))
        aefa_maj = P.mon_seul * maj
        aefa = max_(aefa_maj, aefa)
        return aefa
示例#12
0
    def function__2008_(self, simulation, period):
        period = period.this_year
        af_nbenf = simulation.calculate('af_nbenf', period)
        nb_parents = simulation.calculate('nb_parents', period)
        ass = simulation.calculate_add('ass', period)
        aer_holder = simulation.compute('aer', period)
        api = simulation.calculate_add('api', period)
        rsa = simulation.calculate('rsa', period)
        P = simulation.legislation_at(period.start).prestations.minima_sociaux.aefa
        af = simulation.legislation_at(period.start).prestations.prestations_familiales.af

        aer = self.sum_by_entity(aer_holder)
        dummy_ass = ass > 0
        dummy_aer = aer > 0
        dummy_api = api > 0
        dummy_rmi = rsa > 0
        maj = 0  # TODO
        condition = (dummy_ass + dummy_aer + dummy_api + dummy_rmi > 0)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(simulation.famille, period, af.age1, af.age3)
        else:
            nbPAC = af_nbenf
        # TODO check nombre de PAC pour une famille
        aefa = condition * P.mon_seul * (
            1 + (nb_parents == 2) * P.tx_2p +
            nbPAC * P.tx_supp * (nb_parents <= 2) +
            nbPAC * P.tx_3pac * max_(nbPAC - 2, 0)
            )
        aefa_maj = P.mon_seul * maj
        aefa = max_(aefa_maj, aefa)
        return period, aefa
示例#13
0
    def function__2008_(famille, period, legislation):
        period = period.this_year
        af_nbenf = famille('af_nbenf', period)
        nb_parents = famille('nb_parents', period)
        ass = famille('ass', period, options=[ADD])
        api = famille('api', period, options=[ADD])
        rsa = famille('rsa', period)
        P = legislation(period).prestations.minima_sociaux.aefa
        af = legislation(period).prestations.prestations_familiales.af

        aer_i = famille.members('aer', period)
        aer = famille.sum(aer_i)
        dummy_ass = ass > 0
        dummy_aer = aer > 0
        dummy_api = api > 0
        dummy_rmi = rsa > 0
        maj = 0  # TODO
        condition = (dummy_ass + dummy_aer + dummy_api + dummy_rmi > 0)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(famille, period, af.age1, af.age3)
        else:
            nbPAC = af_nbenf
        # TODO check nombre de PAC pour une famille
        aefa = condition * P.mon_seul * (
            1 + (nb_parents == 2) * P.tx_2p + nbPAC * P.tx_supp *
            (nb_parents <= 2) + nbPAC * P.tx_3pac * max_(nbPAC - 2, 0))
        aefa_maj = P.mon_seul * maj
        aefa = max_(aefa_maj, aefa)
        return period, aefa
示例#14
0
        def al_nb_enfants():
            autonomie_financiere_holder = simulation.compute('autonomie_financiere', period)
            age = self.split_by_roles(age_holder, roles = ENFS)
            autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
            age_min_enfant = simulation.legislation_at(period.start).fam.af.age1

            return nb_enf(age, autonomie_financiere, age_min_enfant, age_max_enfant - 1)  # La limite sur l'age max est stricte.
示例#15
0
    def function(famille, period, legislation):
        '''
        Allocation pour jeune enfant
        '''
        period = period.this_month
        base_ressources = famille('prestations_familiales_base_ressources', period.this_month)
        biactivite = famille('biactivite', period, options = [ADD])
        isole = not_(famille('en_couple', period))
        P = legislation(period).prestations.prestations_familiales
        P_n_2 = legislation(period.start.offset(-2, 'year')).prestations.prestations_familiales

        # TODO: APJE courte voir doc ERF 2006
        nbenf = nb_enf(famille, period, 0, P.apje.age_max_dernier_enf - 1)
        bmaf = P.af.bmaf
        bmaf_n_2 = P_n_2.af.bmaf
        base = round(P.apje.taux * bmaf, 2)
        base2 = round(P.apje.taux * bmaf_n_2, 2)

        plaf_tx = (nbenf > 0) + P.apje.taux_enfant_1_et_2 * min_(nbenf, 2) + P.apje.taux_enfant_3_et_plus * max_(nbenf - 2, 0)
        majo = isole | biactivite
        plaf = P.apje.plaf * plaf_tx + P.apje.plaf_maj * majo
        plaf2 = plaf + 12 * base2

        apje = (nbenf >= 1) * ((base_ressources <= plaf) * base + (base_ressources > plaf) * max_(plaf2 - base_ressources, 0) / 12.0)

        # Pour bénéficier de cette allocation, il faut que tous les enfants du foyer soient nés, adoptés, ou recueillis
        # en vue d’une adoption avant le 1er janvier 2004, et qu’au moins l’un d’entre eux ait moins de 3 ans.
        # Cette allocation est versée du 5ème mois de grossesse jusqu'au mois précédant le 3ème anniversaire de
        # l’enfant.

        # Non cumul APE APJE CF
        #  - L’allocation parentale d’éducation (APE), sauf pour les femmes enceintes.
        #    L’APJE est alors versée du 5ème mois de grossesse jusqu’à la naissance de l’enfant.
        #  - Le CF
        return period, apje
示例#16
0
    def formula_2002_01_01(famille, period, parameters):
        rsa = famille('rsa', period, options = [ADD])
        ass_i = famille.members('ass', period, options = [ADD])
        ass = famille.sum(ass_i)
        api = famille('api', period, options = [ADD])
        aer_i = famille.members('aer', period, options = [ADD])
        aer = famille.sum(aer_i)
        condition = (ass > 0) + (aer > 0) + (api > 0) + (rsa > 0)
        condition_majoration = rsa > 0

        af = parameters(period).prestations.prestations_familiales.af
        janvier = period.first_month
        af_nbenf = famille('af_nbenf', janvier)
        nb_parents = famille('nb_parents', janvier)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(famille, janvier, af.age1, af.age3)
        else:
            nbPAC = af_nbenf

        aefa = parameters(period).prestations.minima_sociaux.aefa

        # TODO check nombre de PAC pour une famille
        majoration = 1 + (condition_majoration * (
            (nb_parents == 2) * aefa.tx_2p
            + nbPAC * aefa.tx_supp * (nb_parents <= 2)
            + nbPAC * aefa.tx_3pac * max_(nbPAC - 2, 0)
            ))

        montant_aefa = aefa.mon_seul * majoration
        montant_aefa += aefa.prime_exceptionnelle

        return condition * montant_aefa
示例#17
0
    def formula_2002_01_01(famille, period, parameters):
        rsa = famille('rsa', period, options = [ADD])
        ass_i = famille.members('ass', period, options = [ADD])
        ass = famille.sum(ass_i)
        api = famille('api', period, options = [ADD])
        aer_i = famille.members('aer', period, options = [ADD])
        aer = famille.sum(aer_i)
        condition = (ass > 0) + (aer > 0) + (api > 0) + (rsa > 0)
        condition_majoration = rsa > 0

        af = parameters(period).prestations.prestations_familiales.af
        janvier = period.first_month
        af_nbenf = famille('af_nbenf', janvier)
        nb_parents = famille('nb_parents', janvier)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(famille, janvier, af.age1, af.age3)
        else:
            nbPAC = af_nbenf

        aefa = parameters(period).prestations.minima_sociaux.aefa

        # TODO check nombre de PAC pour une famille
        majoration = 1 + (condition_majoration * (
            (nb_parents == 2) * aefa.tx_2p
            + nbPAC * aefa.tx_supp * (nb_parents <= 2)
            + nbPAC * aefa.tx_3pac * max_(nbPAC - 2, 0)
            ))

        montant_aefa = aefa.mon_seul * majoration
        montant_aefa += aefa.prime_exceptionnelle

        return condition * montant_aefa
示例#18
0
    def function(self, simulation, period):
        '''
        Allocation pour jeune enfant
        '''
        period = period.this_month
        base_ressources = simulation.calculate('prestations_familFiales_base_ressources', period.this_month)
        biactivite = simulation.calculate_add('biactivite', period)
        isole = not_(simulation.calculate('en_couple', period))
        P = simulation.legislation_at(period.start).prestations.prestations_familiales
        P_n_2 = simulation.legislation_at(period.start.offset(-2, 'year')).prestations.prestations_familiales

        # TODO: APJE courte voir doc ERF 2006
        nbenf = nb_enf(simulation, period, 0, P.apje.age_max_dernier_enf - 1)
        bmaf = P.af.bmaf
        bmaf_n_2 = P_n_2.af.bmaf
        base = round(P.apje.taux * bmaf, 2)
        base2 = round(P.apje.taux * bmaf_n_2, 2)

        plaf_tx = (nbenf > 0) + P.apje.taux_enfant_1_et_2 * min_(nbenf, 2) + P.apje.taux_enfant_3_et_plus * max_(nbenf - 2, 0)
        majo = isole | biactivite
        plaf = P.apje.plaf * plaf_tx + P.apje.plaf_maj * majo
        plaf2 = plaf + 12 * base2

        apje = (nbenf >= 1) * ((base_ressources <= plaf) * base + (base_ressources > plaf) * max_(plaf2 - base_ressources, 0) / 12.0)

        # Pour bénéficier de cette allocation, il faut que tous les enfants du foyer soient nés, adoptés, ou recueillis
        # en vue d’une adoption avant le 1er janvier 2004, et qu’au moins l’un d’entre eux ait moins de 3 ans.
        # Cette allocation est verséE du 5��me mois de grossesse jusqu���au mois précédant le 3ème anniversaire de
        # l’enfant.

        # Non cumul APE APJE CF
        #  - L’allocation parentale d’éducation (APE), sauf pour les femmes enceintes.
        #    L’APJE est alors versée du 5ème mois de grossesse jusqu’à la naissance de l’enfant.
        #  - Le CF
        return period, apje
示例#19
0
    def function_2009__(self, simulation, period):
        period = period.this_year
        age_holder = simulation.compute('age', period)
        autonomie_financiere_holder = simulation.compute('autonomie_financiere', period, accept_other_period = True)
        af_nbenf = simulation.calculate('af_nbenf', period)
        nb_parents = simulation.calculate('nb_parents', period)
        ass = simulation.calculate_add('ass', period)
        aer_holder = simulation.compute('aer', period)
        api = simulation.calculate_add('api', period)
        rsa = simulation.calculate_add('rsa', period)
        P = simulation.legislation_at(period.start).minim.aefa
        af = simulation.legislation_at(period.start).fam.af

        age = self.split_by_roles(age_holder, roles = ENFS)
        aer = self.sum_by_entity(aer_holder)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
        dummy_ass = ass > 0
        dummy_aer = aer > 0
        dummy_api = api > 0
        dummy_rmi = rsa > 0
        maj = 0  # TODO
        condition = (dummy_ass + dummy_aer + dummy_api + dummy_rmi > 0)
        if hasattr(af, "age3"):
            nbPAC = nb_enf(age, autonomie_financiere, af.age1, af.age3)
        else:
            nbPAC = af_nbenf
        # TODO check nombre de PAC pour une famille
        aefa = condition * P.mon_seul * (
            1 + (nb_parents == 2) * P.tx_2p +
            nbPAC * P.tx_supp * (nb_parents <= 2) +
            nbPAC * P.tx_3pac * max_(nbPAC - 2, 0)
            )
        aefa_maj = P.mon_seul * maj
        aefa = max_(aefa_maj, aefa)
        return period, aefa
示例#20
0
def test_nb_enfants():
    test_case = deepcopy(TEST_CASE_AGES)
    year = 2013
    test_case['period'] = year
    simulation = tax_benefit_system.new_scenario().init_from_dict(
        test_case).new_simulation()
    from openfisca_france.model.prestations.prestations_familiales.base_ressource import nb_enf

    month = periods.period(year).first_month
    assert_near(nb_enf(simulation.famille, month, 3, 18), [2, 0])
    assert_near(nb_enf(simulation.famille, month, 19, 50),
                [0, 1])  # Adults don't count

    test_case['individus']['ind5']['autonomie_financiere'] = True
    simulation_2 = new_simulation(test_case)

    assert_near(nb_enf(simulation_2.famille, month, 19, 50), [0, 0])
示例#21
0
        def has_enfant_moins_3_ans():
            age_holder = simulation.compute('age', period)
            autonomie_financiere_holder = simulation.compute('autonomie_financiere', period)
            age_enf = self.split_by_roles(age_holder, roles = ENFS)
            autonomie_financiere_enf = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
            nbenf = nb_enf(age_enf, autonomie_financiere_enf, 0, 2)

            return nbenf > 0
        def function(self, simulation, period):
            period = period.start.offset('first-of', 'month').period('month')
            age_holder = simulation.compute('age', period)
            P = simulation.legislation_at(period.start).fam.af
            bmaf = P.bmaf

            smic55_holder = simulation.compute('smic55', period)
            smic55 = self.split_by_roles(smic55_holder, roles = ENFS)
            age = self.split_by_roles(age_holder, roles = ENFS)

            smic5 = {
                role: array * 0
                for role, array in smic55.iteritems()
                }
            nbenf_inf13 = nb_enf(age, smic5, 0, 13)
            nbenf_sup14 = nb_enf(age, smic5, 14, 18)

            return period, (nbenf_inf13 * 0.41 + nbenf_sup14 * 0.57) * bmaf
示例#23
0
    def function(self, simulation, period):
        period = period.this_month
        age_holder = simulation.compute('age', period)
        age = self.split_by_roles(age_holder, roles = ENFS)
        autonomie_financiere_holder = simulation.compute('autonomie_financiere', period)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
        pfam = simulation.legislation_at(period.start).fam.af
        af_forfaitaire_nbenf = nb_enf(age, autonomie_financiere, pfam.age3, pfam.age3)

        return period, af_forfaitaire_nbenf
示例#24
0
    def function(self, simulation, period):
        '''
        Allocation de rentrée scolaire brute de CRDS
        '''
        period_br = period.this_year
        period = period.start.offset('first-of', 'year').offset(9, 'month').period('month')
        age_holder = simulation.compute('age', period)
        af_nbenf = simulation.calculate('af_nbenf', period)
        autonomie_financiere_holder = simulation.compute('autonomie_financiere', period)
        base_ressources = simulation.calculate('prestations_familiales_base_ressources', period_br.this_month)
        P = simulation.legislation_at(period.start).fam
        # TODO: convention sur la mensualisation
        # On tient compte du fait qu'en cas de léger dépassement du plafond, une allocation dégressive
        # (appelée allocation différentielle), calculée en fonction des revenus, peut être versée.
        age = self.split_by_roles(age_holder, roles = ENFS)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)

        bmaf = P.af.bmaf
        # On doit prendre l'âge en septembre
        enf_05 = nb_enf(age, autonomie_financiere, P.ars.agep - 1, P.ars.agep - 1)  # 5 ans et 6 ans avant le 31 décembre
        # enf_05 = 0
        # Un enfant scolarisé qui n'a pas encore atteint l'âge de 6 ans
        # avant le 1er février 2012 peut donner droit à l'ARS à condition qu'il
        # soit inscrit à l'école primaire. Il faudra alors présenter un
        # certificat de scolarité.
        enf_primaire = enf_05 + nb_enf(age, autonomie_financiere, P.ars.agep, P.ars.agec - 1)
        enf_college = nb_enf(age, autonomie_financiere, P.ars.agec, P.ars.agel - 1)
        enf_lycee = nb_enf(age, autonomie_financiere, P.ars.agel, P.ars.ages)

        arsnbenf = enf_primaire + enf_college + enf_lycee

        # Plafond en fonction du nb d'enfants A CHARGE (Cf. article R543)
        ars_plaf_res = P.ars.plaf * (1 + af_nbenf * P.ars.plaf_enf_supp)
        arsbase = bmaf * (P.ars.tx0610 * enf_primaire +
                         P.ars.tx1114 * enf_college +
                         P.ars.tx1518 * enf_lycee)
        # Forme de l'ARS  en fonction des enfants a*n - (rev-plaf)/n
        # ars_diff = (ars_plaf_res + arsbase - base_ressources) / arsnbenf
        ars = (arsnbenf > 0) * max_(0, arsbase - max_(0, (base_ressources - ars_plaf_res) / max_(1, arsnbenf)))
        # Calcul net de crds : ars_net = (P.ars.enf0610 * enf_primaire + P.ars.enf1114 * enf_college + P.ars.enf1518 * enf_lycee)

        return period_br, ars * (ars >= P.ars.seuil_nv)
示例#25
0
    def formula(famille, period):
        isole = not_(famille('en_couple', period))
        isolement_recent = famille('rsa_isolement_recent', period)
        enfant_moins_3_ans = nb_enf(famille, period, 0, 2) > 0
        enceinte_fam = famille('enceinte_fam', period)
        nbenf = famille('rsa_nb_enfants', period)
        rsa_eligibilite_tns = famille('rsa_eligibilite_tns', period)

        return (isole * (enceinte_fam | (nbenf > 0)) *
                (enfant_moins_3_ans | isolement_recent | enceinte_fam) *
                rsa_eligibilite_tns)
示例#26
0
    def formula(famille, period, parameters):
        '''
        Allocation de rentrée scolaire brute de CRDS
        '''
        janvier = period.first_month
        septembre = period.start.offset('first-of', 'year').offset(9, 'month').period('month')
        af_nbenf = famille('af_nbenf', septembre)
        base_ressources = famille('prestations_familiales_base_ressources', janvier)
        P = parameters(septembre).prestations.prestations_familiales
        # TODO: convention sur la mensualisation
        # On tient compte du fait qu'en cas de léger dépassement du plafond, une allocation dégressive
        # (appelée allocation différentielle), calculée en fonction des revenus, peut être versée.

        bmaf = P.af.bmaf
        # On doit prendre l'âge en septembre
        enf_05 = nb_enf(famille, septembre, P.ars.age_entree_primaire - 1, P.ars.age_entree_primaire - 1)  # 5 ans et 6 ans avant le 31 décembre
        # enf_05 = 0
        # Un enfant scolarisé qui n'a pas encore atteint l'âge de 6 ans
        # avant le 1er février 2012 peut donner droit à l'ARS à condition qu'il
        # soit inscrit à l'école primaire. Il faudra alors présenter un
        # certificat de scolarité.
        enf_primaire = enf_05 + nb_enf(famille, septembre, P.ars.age_entree_primaire, P.ars.age_entree_college - 1)
        enf_college = nb_enf(famille, septembre, P.ars.age_entree_college, P.ars.age_entree_lycee - 1)
        enf_lycee = nb_enf(famille, septembre, P.ars.age_entree_lycee, P.ars.age_sortie_lycee)

        arsnbenf = enf_primaire + enf_college + enf_lycee

        # Plafond en fonction du nb d'enfants A CHARGE (Cf. article R543)
        ars_plaf_res = P.ars.plafond_ressources * (1 + af_nbenf * P.ars.majoration_par_enf_supp)

        arsbase = bmaf * (
            P.ars.taux_primaire * enf_primaire
            + P.ars.taux_college * enf_college
            + P.ars.taux_lycee * enf_lycee
            )

        # Forme de l'ARS  en fonction des enfants a*n - (rev-plaf)/n
        # ars_diff = (ars_plaf_res + arsbase - base_ressources) / arsnbenf
        ars = (arsnbenf > 0) * max_(0, arsbase - max_(0, (base_ressources - ars_plaf_res) / max_(1, arsnbenf)))

        return ars * (ars >= P.ars.montant_seuil_non_versement)
示例#27
0
    def function(famille, period):

        period = period.this_month
        isole = not_(famille('en_couple', period))
        isolement_recent = famille('rsa_isolement_recent', period)
        enfant_moins_3_ans = nb_enf(famille, period, 0, 2) > 0
        enceinte_fam = famille('enceinte_fam', period)
        nbenf = famille('rsa_nb_enfants', period)
        rsa_eligibilite_tns = famille('rsa_eligibilite_tns', period)
        eligib = (isole * (enceinte_fam | (nbenf > 0)) *
                  (enfant_moins_3_ans | isolement_recent | enceinte_fam) *
                  rsa_eligibilite_tns)

        return period, eligib
示例#28
0
    def formula(famille, period):
        isole = not_(famille('en_couple', period))
        isolement_recent = famille('rsa_isolement_recent', period)
        enfant_moins_3_ans = nb_enf(famille, period, 0, 2) > 0
        enceinte_fam = famille('enceinte_fam', period)
        nbenf = famille('rsa_nb_enfants', period)
        rsa_eligibilite_tns = famille('rsa_eligibilite_tns', period)

        return (
            isole
            * (enceinte_fam | (nbenf > 0))
            * (enfant_moins_3_ans | isolement_recent | enceinte_fam)
            * rsa_eligibilite_tns
            )
示例#29
0
    def function(self, simulation, period):
        # Note : Cette variable est "instantanée" : quelque soit la période demandée, elle retourne la valeur au premier
        # jour, sans changer la période.
        age_holder = simulation.compute('age', period)
        salaire_de_base = simulation.calculate_add('salaire_de_base', period.start.period('month', 6).offset(-6))
        law = simulation.legislation_at(period.start)
        nbh_travaillees = 169
        smic_mensuel_brut = law.cotsoc.gen.smic_h_b * nbh_travaillees
        autonomie_financiere_holder = (salaire_de_base / 6) >= (law.fam.af.seuil_rev_taux * smic_mensuel_brut)
        age = self.split_by_roles(age_holder, roles = ENFS)
        autonomie_financiere = self.split_by_roles(autonomie_financiere_holder, roles = ENFS)
        af_nbenf = nb_enf(age, autonomie_financiere, law.fam.af.age1, law.fam.af.age2)

        return period, af_nbenf
示例#30
0
    def function(self, simulation, period):

        period = period.this_month
        isole = not_(simulation.calculate('en_couple', period))
        isolement_recent = simulation.calculate('rsa_isolement_recent', period)
        enfant_moins_3_ans = nb_enf(simulation, period, 0, 2) > 0
        enceinte_fam = simulation.calculate('enceinte_fam', period)
        nbenf = simulation.calculate('rsa_nb_enfants', period)
        rsa_eligibilite_tns = simulation.calculate('rsa_eligibilite_tns', period)
        eligib = (
            isole *
            (enceinte_fam | (nbenf > 0)) *
            (enfant_moins_3_ans | isolement_recent | enceinte_fam) *
            rsa_eligibilite_tns
            )

        return period, eligib
示例#31
0
    def function(famille, period, legislation):
        '''
        Prestation d accueil du jeune enfant - Complément de libre choix du mode de garde

        Les conditions

        Vous devez :

            avoir un enfant de moins de 6 ans né, adopté ou recueilli en vue d'adoption à partir du 1er janvier 2004
            employer une assistante maternelle agréée ou une garde à domicile.
            avoir une activité professionnelle minimale
                si vous êtes salarié cette activité doit vous procurer un revenu minimum de :
                    si vous vivez seul : une fois la BMAF
                    si vous vivez en couple  soit 2 fois la BMAF
                si vous êtes non salarié, vous devez être à jour de vos cotisations sociales d'assurance vieillesse

        Vous n'avez pas besoin de justifier d'une activité min_ si vous êtes :

            bénéficiaire de l'allocation aux adultes handicapés (Aah)
            au chômage et bénéficiaire de l'allocation d'insertion ou de l'allocation de solidarité spécifique
            bénéficiaire du Revenu de solidarité active (Rsa), sous certaines conditions de ressources étudiées par
            votre Caf, et inscrit dans une démarche d'insertionétudiant (si vous vivez en couple,
            vous devez être tous les deux étudiants).

        Autres conditions à remplir : Assistante maternelle agréée     Garde à domicile
        Son salaire brut ne doit pas dépasser par jour de garde et par enfant 5 fois le montant du Smic horaire brut,
        soit au max 45,00 €.
        Vous ne devez pas bénéficier de l'exonération des cotisations sociales dues pour la personne employée.
        '''
        period = period.this_month
        en_couple = famille('en_couple', period)
        af_nbenf = famille('af_nbenf', period)
        base_ressources = famille('prestations_familiales_base_ressources', period.this_month)
        empl_dir = famille('empl_dir', period)
        ass_mat = famille('ass_mat', period)
        gar_dom = famille('gar_dom', period)
        paje_clca_taux_partiel = famille('paje_clca_taux_partiel', period)
        paje_clca_taux_plein = famille('paje_clca_taux_plein', period)
        P = legislation(period).prestations.prestations_familiales
        P_n_2 = legislation(period.offset(-2, 'year')).prestations.prestations_familiales

        aah_i = famille.members('aah', period)
        aah = famille.sum(aah_i)

        etudiant_i = famille.members('etudiant', period)
        parent_etudiant = famille.any(etudiant_i, role = Famille.PARENT)

        salaire_imposable_i = famille.members('salaire_imposable', period)
        salaire_imposable = famille.sum(salaire_imposable_i, role = Famille.PARENT)

        hsup_i = famille.members('hsup', period)
        hsup = famille.sum(hsup_i, role = Famille.PARENT)

        # condition de revenu minimal

        bmaf_n_2 = P_n_2.af.bmaf
        cond_age_enf = (nb_enf(famille, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
        cond_sal = (
            salaire_imposable + hsup >
            12 * bmaf_n_2 * (1 + en_couple)
            )
    # TODO:    cond_rpns    =
        cond_act = cond_sal  # | cond_rpns

        cond_nonact = (aah > 0) | parent_etudiant  # | (ass>0)
    #  TODO: RSA insertion, alloc insertion, ass
        elig = cond_age_enf & (cond_act | cond_nonact)
        nbenf = af_nbenf
        seuil1 = (P.paje.clmg.seuil11 * (nbenf == 1) + P.paje.clmg.seuil12 * (nbenf >= 2) +
                 max_(nbenf - 2, 0) * P.paje.clmg.seuil1sup)
        seuil2 = (P.paje.clmg.seuil21 * (nbenf == 1) + P.paje.clmg.seuil22 * (nbenf >= 2) +
                 max_(nbenf - 2, 0) * P.paje.clmg.seuil2sup)

    #        Si vous bénéficiez du Clca taux partiel (= vous travaillez entre 50 et 80% de la durée du travail fixée
    #        dans l'entreprise), vous cumulez intégralement le Clca et le Cmg.
    #        Si vous bénéficiez du Clca taux partiel (= vous travaillez à 50% ou moins de la durée
    #        du travail fixée dans l'entreprise), le montant des plafonds Cmg est divisé par 2.
        seuil1 = seuil1 * (1 - .5 * paje_clca_taux_partiel)
        seuil2 = seuil2 * (1 - .5 * paje_clca_taux_partiel)

        clmg = P.af.bmaf * ((nb_enf(famille, period, 0, P.paje.clmg.age1 - 1) > 0) +
                            0.5 * (nb_enf(famille, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
                            ) * (
            empl_dir * (
                (base_ressources < seuil1) * P.paje.clmg.taux_recours_emploi_1er_plafond +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.taux_recours_emploi_2e_plafond +
                (base_ressources >= seuil2) * P.paje.clmg.taux_recours_emploi_supp_2e_plafond) +
            ass_mat * (
                (base_ressources < seuil1) * P.paje.clmg.ass_mat1 +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.ass_mat2 +
                (base_ressources >= seuil2) * P.paje.clmg.ass_mat3) +
            gar_dom * (
                (base_ressources < seuil1) * P.paje.clmg.domi1 +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.domi2 +
                (base_ressources >= seuil2) * P.paje.clmg.domi3))
        # TODO: connecter avec le crédit d'impôt
        # Si vous bénéficiez du Clca taux plein
        # (= vous ne travaillez plus ou interrompez votre activité professionnelle),
        # vous ne pouvez pas bénéficier du Cmg.
        paje_cmg = elig * not_(paje_clca_taux_plein) * clmg
        # TODO vérfiez les règles de cumul
        return period, paje_cmg
示例#32
0
    def formula(famille, period, parameters):
        pfam = parameters(period).prestations.prestations_familiales.af
        af_forfaitaire_nbenf = nb_enf(famille, period, pfam.age3, pfam.age3)

        return af_forfaitaire_nbenf
 def al_nb_enfants():
     age_min_enfant = parameters(
         period).prestations.prestations_familiales.af.age1
     return nb_enf(famille, period, age_min_enfant, age_max_enfant -
                   1)  # La limite sur l'age max est stricte.
示例#34
0
    def function(famille, period, legislation):
        pfam = legislation(period).prestations.prestations_familiales.af
        af_forfaitaire_nbenf = nb_enf(famille, period, pfam.age3, pfam.age3)

        return af_forfaitaire_nbenf
示例#35
0
    def function(self, simulation, period):
        period = period.this_month
        pfam = simulation.legislation_at(period.start).prestations.prestations_familiales.af
        af_forfaitaire_nbenf = nb_enf(simulation, period, pfam.age3, pfam.age3)

        return period, af_forfaitaire_nbenf
示例#36
0
    def function(self, simulation, period):
        '''
        Prestation d accueil du jeune enfant - Complément de libre choix du mode de garde

        Les conditions

        Vous devez :

            avoir un enfant de moins de 6 ans né, adopté ou recueilli en vue d'adoption à partir du 1er janvier 2004
            employer une assistante maternelle agréée ou une garde à domicile.
            avoir une activité professionnelle minimale
                si vous êtes salarié cette activité doit vous procurer un revenu minimum de :
                    si vous vivez seul : une fois la BMAF
                    si vous vivez en couple  soit 2 fois la BMAF
                si vous êtes non salarié, vous devez être à jour de vos cotisations sociales d'assurance vieillesse

        Vous n'avez pas besoin de justifier d'une activité min_ si vous êtes :

            bénéficiaire de l'allocation aux adultes handicapés (Aah)
            au chômage et bénéficiaire de l'allocation d'insertion ou de l'allocation de solidarité spécifique
            bénéficiaire du Revenu de solidarité active (Rsa), sous certaines conditions de ressources étudiées par
            votre Caf, et inscrit dans une démarche d'insertionétudiant (si vous vivez en couple,
            vous devez être tous les deux étudiants).

        Autres conditions à remplir : Assistante maternelle agréée     Garde à domicile
        Son salaire brut ne doit pas dépasser par jour de garde et par enfant 5 fois le montant du Smic horaire brut,
        soit au max 45,00 €.
        Vous ne devez pas bénéficier de l'exonération des cotisations sociales dues pour la personne employée.
        '''
        period = period.this_month
        aah_holder = simulation.compute('aah', period)
        etu_holder = simulation.compute('etudiant', period)
        salaire_imposable_holder = simulation.compute('salaire_imposable', period)
        hsup_holder = simulation.compute('hsup', period)
        en_couple = simulation.calculate('en_couple', period)
        af_nbenf = simulation.calculate('af_nbenf', period)
        base_ressources = simulation.calculate('prestations_familiales_base_ressources', period.this_month)
        empl_dir = simulation.calculate('empl_dir', period)
        ass_mat = simulation.calculate('ass_mat', period)
        gar_dom = simulation.calculate('gar_dom', period)
        paje_clca_taux_partiel = simulation.calculate('paje_clca_taux_partiel', period)
        paje_clca_taux_plein = simulation.calculate('paje_clca_taux_plein', period)
        P = simulation.legislation_at(period.start).prestations.prestations_familiales
        P_n_2 = simulation.legislation_at(period.start.offset(-2, 'year')).prestations.prestations_familiales


        etudiant = self.split_by_roles(etu_holder, roles = [CHEF, PART])
        hsup = self.split_by_roles(hsup_holder, roles = [CHEF, PART])
        salaire_imposable = self.split_by_roles(salaire_imposable_holder, roles = [CHEF, PART])
        aah = self.sum_by_entity(aah_holder)

        # condition de revenu minimal

        bmaf_n_2 = P_n_2.af.bmaf
        cond_age_enf = (nb_enf(simulation, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
        cond_sal = (
            salaire_imposable[CHEF] + salaire_imposable[PART] + hsup[CHEF] + hsup[PART] >
            12 * bmaf_n_2 * (1 + en_couple)
            )
    # TODO:    cond_rpns    =
        cond_act = cond_sal  # | cond_rpns

        cond_nonact = (aah > 0) | (etudiant[CHEF] & etudiant[PART])  # | (ass>0)
    #  TODO: RSA insertion, alloc insertion, ass
        elig = cond_age_enf & (cond_act | cond_nonact)
        nbenf = af_nbenf
        seuil1 = (P.paje.clmg.seuil11 * (nbenf == 1) + P.paje.clmg.seuil12 * (nbenf >= 2) +
                 max_(nbenf - 2, 0) * P.paje.clmg.seuil1sup)
        seuil2 = (P.paje.clmg.seuil21 * (nbenf == 1) + P.paje.clmg.seuil22 * (nbenf >= 2) +
                 max_(nbenf - 2, 0) * P.paje.clmg.seuil2sup)

    #        Si vous bénéficiez du Clca taux partiel (= vous travaillez entre 50 et 80% de la durée du travail fixée
    #        dans l'entreprise), vous cumulez intégralement le Clca et le Cmg.
    #        Si vous bénéficiez du Clca taux partiel (= vous travaillez à 50% ou moins de la durée
    #        du travail fixée dans l'entreprise), le montant des plafonds Cmg est divisé par 2.
        seuil1 = seuil1 * (1 - .5 * paje_clca_taux_partiel)
        seuil2 = seuil2 * (1 - .5 * paje_clca_taux_partiel)

        clmg = P.af.bmaf * ((nb_enf(simulation, period, 0, P.paje.clmg.age1 - 1) > 0) +
                            0.5 * (nb_enf(simulation, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
                            ) * (
            empl_dir * (
                (base_ressources < seuil1) * P.paje.clmg.taux_recours_emploi_1er_plafond +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.taux_recours_emploi_2e_plafond +
                (base_ressources >= seuil2) * P.paje.clmg.taux_recours_emploi_supp_2e_plafond) +
            ass_mat * (
                (base_ressources < seuil1) * P.paje.clmg.ass_mat1 +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.ass_mat2 +
                (base_ressources >= seuil2) * P.paje.clmg.ass_mat3) +
            gar_dom * (
                (base_ressources < seuil1) * P.paje.clmg.domi1 +
                ((base_ressources >= seuil1) & (base_ressources < seuil2)) * P.paje.clmg.domi2 +
                (base_ressources >= seuil2) * P.paje.clmg.domi3))
        # TODO: connecter avec le crédit d'impôt
        # Si vous bénéficiez du Clca taux plein
        # (= vous ne travaillez plus ou interrompez votre activité professionnelle),
        # vous ne pouvez pas bénéficier du Cmg.
        paje_clmg = elig * not_(paje_clca_taux_plein) * clmg
        # TODO vérfiez les règles de cumul
        return period, paje_clmg
示例#37
0
    def formula(famille, period, parameters):
        pfam = parameters(period).prestations.prestations_familiales.af
        af_forfaitaire_nbenf = nb_enf(famille, period, pfam.age3, pfam.age3)

        return af_forfaitaire_nbenf
示例#38
0
    def formula_2017_04_01(famille, period, parameters):
        """
        Prestation d accueil du jeune enfant - Complément de libre choix du mode de garde

        Les conditions

        Vous devez :

            avoir un enfant de moins de 6 ans né, adopté ou recueilli en vue d'adoption à partir du 1er janvier 2004
            employer une assistante maternelle agréée ou une garde à domicile.

        Vous n'avez pas besoin de justifier d'une activité min_ si vous êtes :

            bénéficiaire de l'allocation aux adultes handicapés (Aah)
            au chômage et bénéficiaire de l'allocation d'insertion ou de l'allocation de solidarité spécifique
            bénéficiaire du Revenu de solidarité active (Rsa), sous certaines conditions de ressources étudiées par
            votre Caf, et inscrit dans une démarche d'insertionétudiant (si vous vivez en couple,
            vous devez être tous les deux étudiants).

        Autres conditions à remplir : Assistante maternelle agréée     Garde à domicile
        Son salaire brut ne doit pas dépasser par jour de garde et par enfant 5 fois le montant du Smic horaire brut,
        soit au max 45,00 €.
        Vous ne devez pas bénéficier de l'exonération des cotisations sociales dues pour la personne employée.
        """
        # Récupération des données

        inactif = famille('inactif', period)
        partiel1 = famille('partiel1', period)
        nombre_enfants = famille('af_nbenf', period)
        base_ressources = famille('prestations_familiales_base_ressources', period.first_month)
        emploi_direct = famille('empl_dir', period)
        assistant_maternel = famille('ass_mat', period)
        garde_a_domicile = famille('gar_dom', period)
        paje_prepare = famille('paje_prepare', period)
        P = parameters(period).prestations.prestations_familiales

        aah_i = famille.members('aah', period)
        aah = famille.sum(aah_i)

        etudiant_i = famille.members('etudiant', period)
        parent_etudiant = famille.any(etudiant_i, role = Famille.PARENT)

    # condition de revenu minimal

        cond_age_enf = (nb_enf(famille, period, 0, P.paje.clmg.age2 - 1) > 0)

        # TODO:    cond_rpns    =
        # TODO: RSA insertion, alloc insertion, ass
        cond_nonact = (aah > 0) | parent_etudiant  # | (ass>0)

        cond_eligibilite = cond_age_enf & (not_(inactif) | cond_nonact)

        # Si vous bénéficiez de la PreParE taux plein
        # (= vous ne travaillez plus ou interrompez votre activité professionnelle),
        # vous ne pouvez pas bénéficier du Cmg.
        paje_prepare_inactif = (paje_prepare > 0) * inactif
        eligible = cond_eligibilite * not_(paje_prepare_inactif)

    # Les plafonds de ressource

        seuil_revenus_1 = (
            (nombre_enfants == 1) * P.paje.clmg.seuil11
            + (nombre_enfants >= 2) * P.paje.clmg.seuil12
            + max_(nombre_enfants - 2, 0) * P.paje.clmg.seuil1sup
            )

        seuil_revenus_2 = (
            (nombre_enfants == 1) * P.paje.clmg.seuil21
            + (nombre_enfants >= 2) * P.paje.clmg.seuil22
            + max_(nombre_enfants - 2, 0) * P.paje.clmg.seuil2sup
            )

    #        Si vous bénéficiez du PreParE taux partiel (= vous travaillez entre 50 et 80% de la durée du travail fixée
    #        dans l'entreprise), vous cumulez intégralement la PreParE et le Cmg.
    #        Si vous bénéficiez du PreParE taux partiel (= vous travaillez à 50% ou moins de la durée
    #        du travail fixée dans l'entreprise), le montant des plafonds Cmg est divisé par 2.

        paje_prepare_temps_partiel = (paje_prepare > 0) * partiel1
        seuil_revenus_1 = seuil_revenus_1 * (1 - .5 * paje_prepare_temps_partiel)
        seuil_revenus_2 = seuil_revenus_2 * (1 - .5 * paje_prepare_temps_partiel)

    # calcul du montant

        montant_cmg = (
            P.af.bmaf * (
                1.0 * (nb_enf(famille, period, 0, P.paje.clmg.age1 - 1) > 0)
                + 0.5 * (nb_enf(famille, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
                ) * (
                    emploi_direct * (
                        (base_ressources < seuil_revenus_1) * P.paje.clmg.taux_recours_emploi_1er_plafond
                        + ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.taux_recours_emploi_2e_plafond
                        + (base_ressources >= seuil_revenus_2) * P.paje.clmg.taux_recours_emploi_supp_2e_plafond
                        )
                    + assistant_maternel * (
                        (base_ressources < seuil_revenus_1) * P.paje.clmg.ass_mat1
                        + ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.ass_mat2
                        + (base_ressources >= seuil_revenus_2) * P.paje.clmg.ass_mat3
                        )
                    + garde_a_domicile * (
                        (base_ressources < seuil_revenus_1) * P.paje.clmg.domi1
                        + ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.domi2
                        + (base_ressources >= seuil_revenus_2) * P.paje.clmg.domi3)
                    )
            )

        paje_cmg = eligible * montant_cmg
        # TODO: connecter avec le crédit d'impôt
        # TODO vérfiez les règles de cumul
        return paje_cmg
示例#39
0
 def al_nb_enfants():
     age_min_enfant = legislation(period).prestations.prestations_familiales.af.age1
     return nb_enf(famille, period, age_min_enfant, age_max_enfant - 1)  # La limite sur l'age max est stricte.
    def formula_2017_04_01(famille, period, parameters):
        """
        Prestation d accueil du jeune enfant - Complément de libre choix du mode de garde

        Les conditions

        Vous devez :

            avoir un enfant de moins de 6 ans né, adopté ou recueilli en vue d'adoption à partir du 1er janvier 2004
            employer une assistante maternelle agréée ou une garde à domicile.

        Vous n'avez pas besoin de justifier d'une activité min_ si vous êtes :

            bénéficiaire de l'allocation aux adultes handicapés (Aah)
            au chômage et bénéficiaire de l'allocation d'insertion ou de l'allocation de solidarité spécifique
            bénéficiaire du Revenu de solidarité active (Rsa), sous certaines conditions de ressources étudiées par
            votre Caf, et inscrit dans une démarche d'insertionétudiant (si vous vivez en couple,
            vous devez être tous les deux étudiants).

        Autres conditions à remplir : Assistante maternelle agréée     Garde à domicile
        Son salaire brut ne doit pas dépasser par jour de garde et par enfant 5 fois le montant du Smic horaire brut,
        soit au max 45,00 €.
        Vous ne devez pas bénéficier de l'exonération des cotisations sociales dues pour la personne employée.
        """
        # Récupération des données

        inactif = famille('inactif', period)
        partiel1 = famille('partiel1', period)
        nombre_enfants = famille('af_nbenf', period)
        base_ressources = famille('prestations_familiales_base_ressources', period.first_month)
        emploi_direct = famille('empl_dir', period)
        assistant_maternel = famille('ass_mat', period)
        garde_a_domicile = famille('gar_dom', period)
        paje_prepare = famille('paje_prepare', period)
        P = parameters(period).prestations.prestations_familiales

        aah_i = famille.members('aah', period)
        aah = famille.sum(aah_i)

        etudiant_i = famille.members('etudiant', period)
        parent_etudiant = famille.any(etudiant_i, role = Famille.PARENT)


    # condition de revenu minimal

        cond_age_enf = (nb_enf(famille, period, 0, P.paje.clmg.age2 - 1) > 0)

        # TODO:    cond_rpns    =
        # TODO: RSA insertion, alloc insertion, ass
        cond_nonact = (aah > 0) | parent_etudiant  # | (ass>0)

        cond_eligibilite = cond_age_enf & (not_(inactif)| cond_nonact)

        # Si vous bénéficiez de la PreParE taux plein
        # (= vous ne travaillez plus ou interrompez votre activité professionnelle),
        # vous ne pouvez pas bénéficier du Cmg.
        paje_prepare_inactif = (paje_prepare > 0) * inactif
        eligible = cond_eligibilite * not_(paje_prepare_inactif)

    # Les plafonds de ressource

        seuil_revenus_1 = (
                (nombre_enfants == 1) * P.paje.clmg.seuil11 +
                (nombre_enfants >= 2) * P.paje.clmg.seuil12 +
                max_(nombre_enfants - 2, 0) * P.paje.clmg.seuil1sup
        )
        seuil_revenus_2 = (
                (nombre_enfants == 1) * P.paje.clmg.seuil21 +
                (nombre_enfants >= 2) * P.paje.clmg.seuil22 +
                max_(nombre_enfants - 2, 0) * P.paje.clmg.seuil2sup
        )


    #        Si vous bénéficiez du PreParE taux partiel (= vous travaillez entre 50 et 80% de la durée du travail fixée
    #        dans l'entreprise), vous cumulez intégralement la PreParE et le Cmg.
    #        Si vous bénéficiez du PreParE taux partiel (= vous travaillez à 50% ou moins de la durée
    #        du travail fixée dans l'entreprise), le montant des plafonds Cmg est divisé par 2.

        paje_prepare_temps_partiel = (paje_prepare > 0) * partiel1
        seuil_revenus_1 = seuil_revenus_1 * (1 - .5 * paje_prepare_temps_partiel)
        seuil_revenus_2 = seuil_revenus_2 * (1 - .5 * paje_prepare_temps_partiel)

    # calcul du montant

        montant_cmg = (
                P.af.bmaf *
                (
                    1.0 * (nb_enf(famille, period, 0, P.paje.clmg.age1 - 1) > 0) +
                    0.5 * (nb_enf(famille, period, P.paje.clmg.age1, P.paje.clmg.age2 - 1) > 0)
                ) *
                (
            emploi_direct * (
                (base_ressources < seuil_revenus_1) * P.paje.clmg.taux_recours_emploi_1er_plafond +
                ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.taux_recours_emploi_2e_plafond +
                (base_ressources >= seuil_revenus_2) * P.paje.clmg.taux_recours_emploi_supp_2e_plafond) +
            assistant_maternel * (
                (base_ressources < seuil_revenus_1) * P.paje.clmg.ass_mat1 +
                ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.ass_mat2 +
                (base_ressources >= seuil_revenus_2) * P.paje.clmg.ass_mat3) +
            garde_a_domicile * (
                (base_ressources < seuil_revenus_1) * P.paje.clmg.domi1 +
                ((base_ressources >= seuil_revenus_1) & (base_ressources < seuil_revenus_2)) * P.paje.clmg.domi2 +
                (base_ressources >= seuil_revenus_2) * P.paje.clmg.domi3))
        )

        paje_cmg = eligible * montant_cmg
        # TODO: connecter avec le crédit d'impôt
        # TODO vérfiez les règles de cumul
        return paje_cmg