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é
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é
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é
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é
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é
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])
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
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])
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
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
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
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.
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
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
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
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
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
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])
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
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
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)
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)
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 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
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 )
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
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
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
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.
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
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
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
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 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
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