diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 9ca79f813e..f51451f367 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -337,36 +337,6 @@ jobs: path: /tmp/conda retention-days: 30 - test-on-windows: - runs-on: "windows-latest" - needs: [ build-conda ] - steps: - - uses: conda-incubator/setup-miniconda@v2 - with: - auto-update-conda: true - python-version: "3.9.9" - # Add conda-forge for OpenFisca-Core - channels: openfisca,conda-forge - activate-environment: true - - uses: actions/checkout@v3 - - name: Test max path length - run: "python3 openfisca_france/scripts/check_path_length.py" - - name: Get version - run: | - # chcp 65001 #set code page to utf-8 - echo ("PACKAGE_VERSION=" + (python3 ./setup.py --version) ) >> $env:GITHUB_ENV - echo "Version setup.py: ${{ env.PACKAGE_VERSION }}" - - name: Download conda build - uses: actions/download-artifact@v3 - with: - name: conda-build-${{ env.PACKAGE_VERSION }}-${{ github.sha }} - path: conda-build-tmp - - name: Install with conda - run: | - conda install -c ./conda-build-tmp/noarch/openfisca-france-dev-${{ env.PACKAGE_VERSION }}-py_0.tar.bz2 openfisca-france-dev - - name: openfisca test - run: openfisca test --country-package openfisca_france tests - publish-to-conda: runs-on: windows-latest needs: [ deploy, test-on-windows ] diff --git a/openfisca_france/model/prelevements_obligatoires/impot_revenu/ir.py b/openfisca_france/model/prelevements_obligatoires/impot_revenu/ir.py index af619be429..906f1ff797 100644 --- a/openfisca_france/model/prelevements_obligatoires/impot_revenu/ir.py +++ b/openfisca_france/model/prelevements_obligatoires/impot_revenu/ir.py @@ -4089,7 +4089,7 @@ def formula(foyer_fiscal, period, parameters): class plus_values_gains_divers(Variable): value_type = float entity = FoyerFiscal - label = "Plus-values et gains divers" + label = 'Plus-values et gains divers' definition_period = YEAR diff --git a/openfisca_france/model/prestations/aides_logement.py b/openfisca_france/model/prestations/aides_logement.py index 4f6c7a2e5c..30fbd38982 100644 --- a/openfisca_france/model/prestations/aides_logement.py +++ b/openfisca_france/model/prestations/aides_logement.py @@ -256,21 +256,21 @@ class etat_logement(Variable): class assistant_maternel(Variable): value_type = bool entity = Individu - label = "Assistant maternel" + label = 'Assistant maternel' definition_period = MONTH class assistant_familial(Variable): value_type = bool entity = Individu - label = "Assistant familial" + label = 'Assistant familial' definition_period = MONTH class journaliste(Variable): value_type = bool entity = Individu - label = "Journaliste" + label = 'Journaliste' definition_period = MONTH @@ -605,12 +605,13 @@ def formula_2021_01_01(individu, period, parameters): abattement_frais_pro = where(frais_reels > abattement_forfaitaire, frais_reels, abattement_forfaitaire) + rpns = individu('rpns_imposables', period.n_2) rpns_pvce = individu('rpns_pvce', period.n_2) rpns_pvct = individu('rpns_pvct', period.n_2) rpns_mvct = individu('moins_values_court_terme_non_salaries', period.n_2) rpns_mvlt = individu('moins_values_long_terme_non_salaries', period.n_2) - rpns = rpns_pvce + rpns_pvct + rpns_mvct + rpns_mvlt + rpns = rpns + rpns_pvce + rpns_pvct + rpns_mvct + rpns_mvlt # TO DO : compléter la formule pour prendre en compte la disposition particulière concernant les indépendants ayant commencé une activité entre N-2 et N. # Non implémentée car diffile à comprendre ce qui est fait exactement diff --git a/openfisca_france/model/prestations/minima_sociaux/aah.py b/openfisca_france/model/prestations/minima_sociaux/aah.py index d06c53296a..90aee2ecf3 100644 --- a/openfisca_france/model/prestations/minima_sociaux/aah.py +++ b/openfisca_france/model/prestations/minima_sociaux/aah.py @@ -19,7 +19,7 @@ class aah_date_debut_incarceration(Variable): value_type = date default_value = date.max - label = 'La date de début d\'incarcération' + label = "La date de début d'incarcération" entity = Individu definition_period = MONTH set_input = set_input_dispatch_by_period @@ -28,7 +28,7 @@ class aah_date_debut_incarceration(Variable): class aah_date_debut_hospitalisation(Variable): value_type = date default_value = date.max - label = 'La date de début d\'hospitalisation' + label = "La date de début d'hospitalisation" entity = Individu definition_period = MONTH set_input = set_input_dispatch_by_period @@ -70,7 +70,7 @@ def assiette_revenu_activite_demandeur(revenus_demandeur): + individu('retraite_nette', last_month) + individu('rente_accident_travail', last_month) + individu('pensions_invalidite', last_month) - ) > 0 + ) > 0 abattement_cessation_activite = ( 1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution)) return abattement_cessation_activite * (revenus_abattus_smic) @@ -114,9 +114,9 @@ def base_ressource_eval_annuelle(): en_activite, base_ressource_eval_trim() / 12, base_ressource_eval_annuelle() / 12 - ) + ) - def formula_2011(individu, period, parameters): + def formula_2011_05_20(individu, period, parameters): parameters = parameters(period) aah = parameters.prestations_sociales.prestations_etat_de_sante.invalidite.aah @@ -143,7 +143,7 @@ def assiette_revenu_activite_demandeur(revenus_demandeur): + individu('retraite_nette', last_month) + individu('rente_accident_travail', last_month) + individu('pensions_invalidite', last_month) - ) > 0 + ) > 0 abattement_cessation_activite = ( 1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution)) return abattement_cessation_activite * (revenus_abattus_smic) @@ -156,10 +156,13 @@ def base_ressource_eval_trim(): base_ressource_hors_activite = individu('aah_base_ressources_hors_activite_eval_trimestrielle', period) + individu( 'aah_base_ressources_activite_milieu_protege', three_previous_months, options=[ADD]) - base_ressource_demandeur = max_(0, assiette_revenu_activite_demandeur( - base_ressource_activite) + base_ressource_hors_activite) + base_ressource_demandeur = max_(0, assiette_revenu_activite_demandeur(base_ressource_activite) + base_ressource_hors_activite) - return base_ressource_demandeur + base_ressource_demandeur_conjoint = max_(0, individu.famille.demandeur('aah_base_ressources_activite_eval_trimestrielle', period) + individu.famille.demandeur('aah_base_ressources_hors_activite_eval_trimestrielle', period)) + base_ressource_conjoint_conjoint = max_(0, individu.famille.conjoint('aah_base_ressources_activite_eval_trimestrielle', period) + individu.famille.conjoint('aah_base_ressources_hors_activite_eval_trimestrielle', period)) + base_ressource_conjoint = base_ressource_conjoint_conjoint * individu.has_role(Famille.DEMANDEUR) + base_ressource_demandeur_conjoint * individu.has_role(Famille.CONJOINT) + + return base_ressource_demandeur + assiette_conjoint(base_ressource_conjoint) def base_ressource_eval_annuelle(): base_ressource_activite = assiette_revenu_activite_demandeur( @@ -167,13 +170,72 @@ def base_ressource_eval_annuelle(): base_ressource = base_ressource_activite + \ individu('aah_base_ressources_hors_activite_eval_annuelle', period) - return base_ressource + base_ressource_demandeur_conjoint = individu.famille.demandeur('aah_base_ressources_activite_eval_annuelle', period) + individu.famille.demandeur('aah_base_ressources_hors_activite_eval_annuelle', period) + base_ressource_conjoint_conjoint = individu.famille.conjoint('aah_base_ressources_activite_eval_annuelle', period) + individu.famille.conjoint('aah_base_ressources_hors_activite_eval_annuelle', period) + base_ressource_conjoint = base_ressource_conjoint_conjoint * individu.has_role(Famille.DEMANDEUR) + base_ressource_demandeur_conjoint * individu.has_role(Famille.CONJOINT) + + return base_ressource + assiette_conjoint(base_ressource_conjoint) return where( en_activite, base_ressource_eval_trim() / 12, base_ressource_eval_annuelle() / 12 - ) + ) + + def formula_2011(individu, period, parameters): + parameters = parameters(period) + aah = parameters.prestations_sociales.prestations_etat_de_sante.invalidite.aah + + en_activite = (individu('salaire_imposable', period, options=[ + ADD]) + individu('rpns_imposables', period.last_year) > 0) + + def assiette_conjoint(revenus_conjoint): + return (1 - parameters.impot_revenu.calcul_revenus_imposables.deductions.abatpro.taux) * (1 - aah.abattement_conjoint.abattement_proportionnel) * revenus_conjoint + + def assiette_revenu_activite_demandeur(revenus_demandeur): + smic_brut_annuel = 12 * parameters.marche_travail.salaire_minimum.smic.smic_b_horaire * \ + parameters.marche_travail.salaire_minimum.smic.nb_heures_travail_mensuel + total_tranche1 = min_( + aah.travail_ordinaire.tranche_smic * smic_brut_annuel, revenus_demandeur) + total_tranche2 = max_(0, revenus_demandeur - total_tranche1) + revenus_abattus_smic = (1 - aah.travail_ordinaire.abattement_30) * total_tranche1 + ( + 1 - aah.travail_ordinaire.abattement_sup) * total_tranche2 + + return (revenus_abattus_smic) + + def base_ressource_eval_trim(): + three_previous_months = Period( + ('month', period.first_month.start, 3)).offset(-3) + base_ressource_activite = individu('aah_base_ressources_activite_eval_trimestrielle', period) - individu( + 'aah_base_ressources_activite_milieu_protege', three_previous_months, options=[ADD]) + base_ressource_hors_activite = individu('aah_base_ressources_hors_activite_eval_trimestrielle', period) + individu( + 'aah_base_ressources_activite_milieu_protege', three_previous_months, options=[ADD]) + + base_ressource_demandeur = max_(0, assiette_revenu_activite_demandeur(base_ressource_activite) + base_ressource_hors_activite) + + base_ressource_demandeur_conjoint = max_(0, individu.famille.demandeur('aah_base_ressources_activite_eval_trimestrielle', period) + individu.famille.demandeur('aah_base_ressources_hors_activite_eval_trimestrielle', period)) + base_ressource_conjoint_conjoint = max_(0, individu.famille.conjoint('aah_base_ressources_activite_eval_trimestrielle', period) + individu.famille.conjoint('aah_base_ressources_hors_activite_eval_trimestrielle', period)) + base_ressource_conjoint = base_ressource_conjoint_conjoint * individu.has_role(Famille.DEMANDEUR) + base_ressource_demandeur_conjoint * individu.has_role(Famille.CONJOINT) + + return base_ressource_demandeur + assiette_conjoint(base_ressource_conjoint) + + def base_ressource_eval_annuelle(): + base_ressource_activite = assiette_revenu_activite_demandeur( + individu('aah_base_ressources_activite_eval_annuelle', period)) + base_ressource = base_ressource_activite + \ + individu('aah_base_ressources_hors_activite_eval_annuelle', period) + + base_ressource_demandeur_conjoint = individu.famille.demandeur('aah_base_ressources_activite_eval_annuelle', period) + individu.famille.demandeur('aah_base_ressources_hors_activite_eval_annuelle', period) + base_ressource_conjoint_conjoint = individu.famille.conjoint('aah_base_ressources_activite_eval_annuelle', period) + individu.famille.conjoint('aah_base_ressources_hors_activite_eval_annuelle', period) + base_ressource_conjoint = base_ressource_conjoint_conjoint * individu.has_role(Famille.DEMANDEUR) + base_ressource_demandeur_conjoint * individu.has_role(Famille.CONJOINT) + + return base_ressource + assiette_conjoint(base_ressource_conjoint) + + return where( + en_activite, + base_ressource_eval_trim() / 12, + base_ressource_eval_annuelle() / 12 + ) def formula_2005_07_01(individu, period, parameters): parameters = parameters(period) @@ -270,7 +332,7 @@ def assiette_revenu_activite_demandeur(revenus_demandeur): + individu('retraite_nette', last_month) + individu('rente_accident_travail', last_month) + individu('pensions_invalidite', last_month) - ) > 0 + ) > 0 abattement_cessation_activite = ( 1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution)) return abattement_cessation_activite * (revenus_abattus_smic) @@ -300,7 +362,7 @@ def base_ressource_eval_annuelle(): en_activite, base_ressource_eval_trim() / 12, base_ressource_eval_annuelle() / 12 - ) + ) # TODO: - Prendre en compte les abattements temporaires sur les ressources en cas de changement de situation (6 mois pour retour à l'emploi, un an pour inactivité) # - La formule du calcul de la base de ressource est celle en vigueur à partir de 2011, avant 2011: @@ -309,7 +371,7 @@ def base_ressource_eval_annuelle(): class aah_base_ressources_activite_eval_trimestrielle(Variable): value_type = float - label = 'Base de ressources des revenus d\'activité de l\'AAH pour un individu, évaluation trimestrielle' + label = "Base de ressources des revenus d'activité de l'AAH pour un individu, évaluation trimestrielle" entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -340,12 +402,12 @@ def formula(individu, period): 'indemnites_stage', 'revenus_stage_formation_pro', 'salaire_net', - ] + ] ressources = sum( [individu(ressource, three_previous_months, options=[ADD]) for ressource in ressources_a_inclure] - ) + ) def revenus_tns(): revenus_auto_entrepreneur = individu( @@ -366,7 +428,7 @@ def revenus_tns(): class aah_base_ressources_activite_milieu_protege(Variable): value_type = float - label = 'Base de ressources de l\'AAH des revenus d\'activité en milieu protégé pour un individu' + label = "Base de ressources de l'AAH des revenus d'activité en milieu protégé pour un individu" entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -374,7 +436,7 @@ class aah_base_ressources_activite_milieu_protege(Variable): class aah_base_ressources_hors_activite_eval_trimestrielle(Variable): value_type = float - label = 'Base de ressources hors revenus d\'activité de l\'AAH pour un individu, évaluation trimestrielle' + label = "Base de ressources hors revenus d'activité de l'AAH pour un individu, évaluation trimestrielle" entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -407,12 +469,12 @@ def formula(individu, period): 'prestation_compensatoire', 'retraite_nette', 'rsa_base_ressources_patrimoine_individu', - ] + ] ressources = sum( [individu(ressource, three_previous_months, options=[ADD]) for ressource in ressources_a_inclure] - ) + ) # On récupère le montant absolu des pensions alimentaires versées au cas où la valeur reçue est négative pensions_alimentaires_versees = abs_(individu( 'pensions_alimentaires_versees_individu', three_previous_months, options=[ADD])) @@ -423,14 +485,14 @@ def formula(individu, period): class aah_base_ressources_activite_eval_annuelle(Variable): value_type = float - label = 'Base de ressources de l\'AAH pour un individu, évaluation annuelle' + label = "Base de ressources de l'AAH pour un individu, évaluation annuelle" entity = Individu definition_period = MONTH set_input = set_input_divide_by_period reference = [ 'Article R532-5 du Code de la sécurité sociale', 'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006750910' - ] + ] # TODO prendre en compte l'abattement sur les revenus de l'année précédente entre 2005 et 2010 lorsqu'une période d'inactivité # sans revenu de remplacement survient (https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006739692/2005-07-01/) # et les autres abattements sur reprise d'activité https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000023086051/#JORFARTI000023086056 (notamment Art.D. 821-9 1°) @@ -451,7 +513,7 @@ class aah_base_ressources_hors_activite_eval_annuelle(Variable): reference = [ 'Article R532-5 du Code de la sécurité sociale', 'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006750910' - ] + ] # TODO prendre en compte l'abattement sur les revenus de l'année précédente entre 2005 et 2010 lorsqu'une période d'inactivité # sans revenu de remplacement survient (https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006739692/2005-07-01/) @@ -463,18 +525,18 @@ class aah_restriction_substantielle_durable_acces_emploi(Variable): value_type = bool default_value = False entity = Individu - label = 'Restriction substantielle et durable pour l\'accès à l\'emploi reconnue par la commission des droits et de l\'autonomie des personnes handicapées' + label = "Restriction substantielle et durable pour l'accès à l'emploi reconnue par la commission des droits et de l'autonomie des personnes handicapées" reference = [ 'Article L821-2 du Code de la sécurité sociale', 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=17BE3036A19374AA1C8C7A4169702CD7.tplgfr24s_2?idArticle=LEGIARTI000020039305&cidTexte=LEGITEXT000006073189&dateTexte=20180731' - ] + ] definition_period = MONTH set_input = set_input_dispatch_by_period class aah_eligible(Variable): value_type = bool - label = 'Eligibilité à l\'Allocation adulte handicapé' + label = "Eligibilité à l'Allocation adulte handicapé" entity = Individu definition_period = MONTH set_input = set_input_dispatch_by_period @@ -529,10 +591,9 @@ def formula_2011_01_01(individu, period, parameters): prestations_familiales_enfant_a_charge = individu( 'prestations_familiales_enfant_a_charge', period) eligible_aah = ( - (taux_incapacite_max + (taux_incapacite_rsdae * - rsdae * (age <= parameters_aah.age_legal_retraite))) + (taux_incapacite_max + (taux_incapacite_rsdae * rsdae * (age <= parameters_aah.age_legal_retraite))) * ((age >= parameters_aah.age_minimal) + ((age >= parameters_aah.age_fin_educ) * not_(prestations_familiales_enfant_a_charge))) - ) + ) return eligible_aah @@ -554,7 +615,7 @@ def formula_2005_07_01(individu, period, parameters): (taux_incapacite_max + (taux_incapacite_rsdae * rsdae * (age <= parameters_aah.age_legal_retraite)) * (individu('salaire_imposable', period.last_year, options=[ADD]) <= 0)) * ((age >= parameters_aah.age_minimal) + ((age >= parameters_aah.age_fin_educ) * not_(prestations_familiales_enfant_a_charge))) - ) + ) return eligible_aah def formula(individu, period, parameters): @@ -575,13 +636,13 @@ def formula(individu, period, parameters): (taux_incapacite_max + (taux_incapacite_rsdae * rsdae * (age <= parameters_aah.age_legal_retraite))) * ((age >= parameters_aah.age_minimal) + ((age >= parameters_aah.age_fin_educ) * not_(prestations_familiales_enfant_a_charge))) - ) + ) return eligible_aah class aah_base_non_cumulable(Variable): value_type = float - label = 'Montant de l\'Allocation adulte handicapé (hors complément) pour un individu, mensualisée' + label = "Montant de l'Allocation adulte handicapé (hors complément) pour un individu, mensualisée" entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -597,7 +658,7 @@ class aah_plafond_ressources_conjugalise(Variable): reference = [ 'Article D821-2 du Code de la sécurité sociale', 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=4B54EC7065520E4812F84677B918A48E.tplgfr28s_2?idArticle=LEGIARTI000019077584&cidTexte=LEGITEXT000006073189&dateTexte=20081218' - ] + ] definition_period = MONTH set_input = set_input_divide_by_period @@ -614,7 +675,7 @@ def formula(individu, period, parameters): * parameters.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_plafond_couple + parameters.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_par_enfant_supplementaire * af_nbenf - ) + ) class aah_plafond_ressources_deconjugalise(Variable): @@ -624,7 +685,7 @@ class aah_plafond_ressources_deconjugalise(Variable): reference = [ 'Article D821-2 du Code de la sécurité sociale', 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=4B54EC7065520E4812F84677B918A48E.tplgfr28s_2?idArticle=LEGIARTI000019077584&cidTexte=LEGITEXT000006073189&dateTexte=20081218' - ] + ] definition_period = MONTH set_input = set_input_divide_by_period @@ -638,7 +699,7 @@ def formula(individu, period, parameters): + 1 + parameters.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_par_enfant_supplementaire * af_nbenf - ) + ) class aah_conjugalise_eligible(Variable): @@ -649,7 +710,7 @@ class aah_conjugalise_eligible(Variable): reference = [ 'Décret 2022-1694 du 28 décembre 2022', 'https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000046830064' - ] + ] definition_period = MONTH set_input = set_input_dispatch_by_period @@ -657,7 +718,7 @@ class aah_conjugalise_eligible(Variable): class aah_base(Variable): calculate_output = calculate_output_add value_type = float - label = 'Montant de l\'Allocation adulte handicapé (hors complément) pour un individu, mensualisée' + label = "Montant de l'Allocation adulte handicapé (hors complément) pour un individu, mensualisée" entity = Individu reference = [ 'Article L821-1 du Code de la sécurité sociale', @@ -734,8 +795,7 @@ def formula(individu, period, parameters): aah_date_debut_incarceration = individu( 'aah_date_debut_incarceration', period) pers_charge = (individu.foyer_fiscal('nb_pac', period.last_year) > 0) - aah_reduction = ((aah_date_debut_hospitalisation <= m_2) + - (aah_date_debut_incarceration <= m_2)) * not_(pers_charge) + aah_reduction = ((aah_date_debut_hospitalisation <= m_2) + (aah_date_debut_incarceration <= m_2)) * not_(pers_charge) return where(aah_reduction, aah_base * aah_parameters.pourcentage_aah.prison_hospitalisation, aah_base) # montant_max_aah = parameters.prestations_etat_de_sante.invalidite.aah.montant @@ -777,13 +837,13 @@ def formula_2015_07_01(individu, period, parameters): * ((aah > 0) | (benef_asi > 0)) * logement_independant * (activite_12_mois == 0) - ) + ) class caah(Variable): calculate_output = calculate_output_add value_type = float - label = 'Complément d\'allocation adulte handicapé (mensualisé)' + label = "Complément d'allocation adulte handicapé (mensualisé)" entity = Individu set_input = set_input_divide_by_period definition_period = MONTH @@ -824,8 +884,7 @@ def formula_2005_07_01(individu, period, parameters): period) == TypesStatutOccupationLogement.locataire_foyer) logement_independant = (individu.has_role( Menage.PERSONNE_DE_REFERENCE) + individu.has_role(Menage.CONJOINT)) * not_(locataire_foyer) - incapacite = (taux_incapacite >= - invalidite.aah.taux_capacite.taux_incapacite) + incapacite = (taux_incapacite >= invalidite.aah.taux_capacite.taux_incapacite) elig_cpl = ((aah > 0) | (benef_asi > 0)) * incapacite * \ (activite_12_mois == 0) * logement_independant # * non_capacite @@ -852,8 +911,12 @@ def formula_1994_07_01(individu, period, parameters): taux_incapacite = individu('taux_incapacite', period) locataire_foyer = (individu.menage('statut_occupation_logement', period) == TypesStatutOccupationLogement.locataire_foyer) - elig_ancien_caah = (al > 0) * ((aah > 0) | (benef_asi > 0)) * (taux_incapacite >= - prestations_etat_de_sante.invalidite.aah.taux_capacite.taux_incapacite) * not_(locataire_foyer) + elig_ancien_caah = ( + (al > 0) + * ((aah > 0) | (benef_asi > 0)) + * (taux_incapacite >= prestations_etat_de_sante.invalidite.aah.taux_capacite.taux_incapacite) + * not_(locataire_foyer) + ) ancien_caah = cpltx * aah_montant * elig_ancien_caah # En fait le taux cpltx perdure jusqu'en 2008 officiellement, la différence garantie-ressource et aah restant cependant constante égale à la valeur du complément d'allocation, 179,31 return ancien_caah diff --git a/openfisca_france/model/prestations/minima_sociaux/cs/ressources.py b/openfisca_france/model/prestations/minima_sociaux/cs/ressources.py index 7acd1cb53a..3eaaa394af 100644 --- a/openfisca_france/model/prestations/minima_sociaux/cs/ressources.py +++ b/openfisca_france/model/prestations/minima_sociaux/cs/ressources.py @@ -1,4 +1,4 @@ -from numpy import absolute as abs_, logical_and as and_, logical_or as or_, logical_not as not_, maximum as max_, select, where, sum as sum_ +from numpy import absolute as abs_, logical_or as or_, logical_not as not_, select from openfisca_core.periods import Period @@ -6,7 +6,6 @@ Variable, Individu, Famille, - FoyerFiscal, MONTH, ADD, max_, @@ -34,16 +33,13 @@ class css_cmu_base_ressources_individu(Variable): def formula(individu, period, parameters): # Rolling year previous_year = compute_previous_year(period).offset(-1, 'month') - previous_year = compute_previous_year(period) # N-1 last_year = period.last_year last_month = period.last_month - parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu ressources_a_inclure = [ - 'css_base_ressources_aah_individu', 'allocation_securisation_professionnelle', 'ass', 'bourse_recherche', @@ -88,10 +84,10 @@ def formula(individu, period, parameters): + revenus_tns(individu, previous_year, last_year) - pensions_alim_versees - abattement_chomage(individu, period, previous_year, parametres_cmu) - - abattement_chomage(individu, period, previous_year, parametres_cmu) - neutralisation_stage_formation_pro(individu, previous_year, last_month) ) + class css_base_ressources_aah_individu(Variable): value_type = float label = "Base de ressources AAH de l'individu prise en compte pour l'éligibilité à la CSS après application de l'abattement" @@ -100,7 +96,7 @@ class css_base_ressources_aah_individu(Variable): 'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75', 'Bulletin officiel Santé - Protection sociale - Solidarité n° 2023/24 du 29 décembre 2023 - Instruction interministérielle N° DSS/SD2A/2023/98 du 22 décembre 2023', 'https://sante.gouv.fr/fichiers/bo/2023/2023.24.sante.pdf#page=82', - ] + ] entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -108,61 +104,70 @@ class css_base_ressources_aah_individu(Variable): def formula(individu, period, parameters): return individu('aah', period) - def formula_2021_04_01(individu, period, parameters): + def formula_2021_04(individu, period, parameters): return max_(individu('aah', period) - parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aah, 0) -class css_abattement_asi_individu(Variable): + +class css_base_ressources_asi_individu(Variable): value_type = float label = "Base de ressources ASI de l'individu prise en compte pour l'éligibilité à la CSS après application de l'abattement" reference = [ 'Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021', 'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75' - ] + ] entity = Individu definition_period = MONTH set_input = set_input_divide_by_period def formula(individu, period, parameters): - return 0 + return individu('asi', period) - def formula_2021_04_01(individu, period, parameters): + def formula_2021_04(individu, period, parameters): - abattement_asi_personne_seule = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.personne_seule - abattement_asi_couple = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.couple/2 - adulte_ayant_asi = where(and_( - individu.has_role(FoyerFiscal.DECLARANT), - individu('asi', period)), - True, False) - appliquer_abattement_couple = sum_(adulte_ayant_asi) > 1 aah = individu('aah', period) - return select( - [aah > 0, appliquer_abattement_couple and adulte_ayant_asi, adulte_ayant_asi], - [0, abattement_asi_couple, abattement_asi_personne_seule], + asi = individu('asi', period) + asi_famille = individu.famille.members('asi', period) + nb_allocataire_asi = individu.famille.sum(asi_famille > 0, role=Famille.PARENT) + + abattement_asi_personne_seule = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.personne_seule + abattement_asi_couple = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.couple + + condition_abattement_asi_couple = nb_allocataire_asi > 1 + condition_abattement_asi_personne_seule = asi > 0 + abattement_asi = select( + [aah > 0, condition_abattement_asi_couple, condition_abattement_asi_personne_seule], + [0, abattement_asi_couple / 2, abattement_asi_personne_seule], 0) + montant_asi = asi - abattement_asi + return max_(montant_asi, 0) + + class css_base_ressources_aspa_asv(Variable): value_type = float label = "Base de ressources ASPA/ASV de pour une famille prise en compte pour l'éligibilité à la CSS après application de l'abattement" reference = [ 'Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021', 'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75' - ] + ] entity = Famille definition_period = MONTH set_input = set_input_divide_by_period def formula(famille, period, parameters): return famille('aspa', period) - def formula_2021_04_01(famille, period, parameters): + + def formula_2021_04(famille, period, parameters): aspa = famille('aspa', period) aspa_couple = famille('aspa_couple', period) abattement_aspa_personne_seule = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aspa_asv.personne_seule abattement_aspa_couple = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aspa_asv.couple return select( - [aspa > 0 and aspa_couple, aspa > 0], + [(aspa > 0) * aspa_couple, aspa > 0], [max_(aspa - abattement_aspa_couple, 0), max_(aspa - abattement_aspa_personne_seule, 0)], aspa) + class css_cmu_base_ressources(Variable): value_type = float label = "Base de ressources prise en compte pour l'éligibilité à la ACS / CMU-C / CSS" @@ -171,13 +176,12 @@ class css_cmu_base_ressources(Variable): set_input = set_input_divide_by_period def formula(famille, period, parameters): - previous_year = compute_previous_year(period) + previous_year = compute_previous_year(period).offset(-1, 'month') ressources_famille_a_inclure = [ 'af', 'asf', 'css_base_ressources_aspa_asv', - 'css_base_ressources_aspa_asv', 'cf', 'paje_clca', 'paje_prepare', @@ -192,7 +196,6 @@ def formula(famille, period, parameters): css_cmu_forfait_logement_base = famille('css_cmu_forfait_logement_base', period) css_cmu_forfait_logement_al = famille('css_cmu_forfait_logement_al', period) - parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu proprietaire = (statut_occupation_logement == TypesStatutOccupationLogement.proprietaire) @@ -205,29 +208,26 @@ def formula(famille, period, parameters): ) ressources_individuelles = famille.members('css_cmu_base_ressources_individu', period) - ressources_individuelles_asi = famille.members('asi', previous_year, options = [ADD]) - abattements_asi_individuelles = famille.members('css_abattement_asi_individu', previous_year, options = [ADD]) - - ressources_asi_parents = max_(famille.sum(ressources_individuelles_asi, role = Famille.PARENT) - famille.sum(abattements_asi_individuelles), 0) - ressources_parents = famille.sum(ressources_individuelles, role = Famille.PARENT) + ressources_asi_parents + ressources_parents = famille.sum(ressources_individuelles, role = Famille.PARENT) age = famille.members('age', period) condition_enfant_a_charge = (age >= 0) * (age <= parametres_cmu.age_limite_pac) - ressources_asi_enfants = famille.sum(ressources_individuelles_asi * condition_enfant_a_charge, role = Famille.ENFANT) - ressources_enfants = famille.sum(ressources_individuelles * condition_enfant_a_charge, role = Famille.ENFANT) + ressources_asi_enfants + ressources_enfants = famille.sum(ressources_individuelles * condition_enfant_a_charge, role = Famille.ENFANT) return forfait_logement + ressources_famille + ressources_parents + ressources_enfants # Helper functions -def compute_previous_year(period): - return Period(('year', period.start, 1)).offset(-1).offset(-1, 'month') +def compute_previous_year(period): + return Period(('year', period.start, 1)).offset(-1) # Abattement sur revenus d'activité si : # - IJ maladie # - chômage # - ass # - formation professionnelle + + def abattement_chomage(individu, period, previous_year, parametres_cmu): indemnites_journalieres_maladie = individu('indemnites_journalieres_maladie', period) @@ -249,7 +249,6 @@ def abattement_chomage(individu, period, previous_year, parametres_cmu): salaire_net = individu('salaire_net', previous_year, options = [ADD]) return eligibilite_abattement_chomage * salaire_net * parametres_cmu.abattement_chomage - return eligibilite_abattement_chomage * salaire_net * parametres_cmu.abattement_chomage # Revenus de stage de formation professionnelle exclus si plus perçus depuis 1 mois diff --git a/openfisca_france/model/prestations/minima_sociaux/ppa.py b/openfisca_france/model/prestations/minima_sociaux/ppa.py index 2498cf54f2..dc9e829b31 100644 --- a/openfisca_france/model/prestations/minima_sociaux/ppa.py +++ b/openfisca_france/model/prestations/minima_sociaux/ppa.py @@ -503,16 +503,10 @@ class ppa(Variable): reference = 'https://www.service-public.fr/particuliers/vosdroits/F2882' def formula_2024_10(famille, period, parameters): - departement_experimentation_rsa = famille('departement_experimentation_rsa', period) - experimentation = ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=last_3_months_offset_minus_1(period)) - normal = ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=period.last_3_months) - return where(departement_experimentation_rsa, experimentation, normal) + return ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=last_3_months_offset_minus_1(period)) def formula_2016_01_01(famille, period, parameters): - return ppa_base_formula(famille= famille, parameters= parameters, period= period, three_months_of_reference= period.last_3_months) - - def formula_2024_10(famille, period, parameters): - return ppa_base_formula(famille= famille, parameters= parameters, period= period, three_months_of_reference= last_3_months_offset_minus_1(period)) + return ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=period.last_3_months) class crds_ppa(Variable): diff --git a/openfisca_france/model/revenus/activite/salarie.py b/openfisca_france/model/revenus/activite/salarie.py index 16dbf7af3a..cc936216b6 100644 --- a/openfisca_france/model/revenus/activite/salarie.py +++ b/openfisca_france/model/revenus/activite/salarie.py @@ -1711,7 +1711,7 @@ class salaire_imposable_agents_assurance(Variable): class cer_ou_ppae(Variable): value_type = bool entity = Individu - label = "Avoir un CER (Contrat d’engagement réciproque) et/ou un PPAE (Projet personnalisé d’accès à l’emploi) en cours" + label = "Avoir un CER (Contrat d'engagement réciproque) et/ou un PPAE (Projet personnalisé d'accès à l'emploi) en cours" definition_period = MONTH set_input = set_input_dispatch_by_period @@ -1719,7 +1719,7 @@ class cer_ou_ppae(Variable): class formation(Variable): value_type = bool entity = Individu - label = "Etre en formation" + label = 'Etre en formation' definition_period = MONTH set_input = set_input_dispatch_by_period @@ -1727,7 +1727,7 @@ class formation(Variable): class duree_contrat_ou_formation(Variable): value_type = int entity = Individu - label = "Durée en mois du CDD ou de la formation" + label = 'Durée en mois du CDD ou de la formation' definition_period = MONTH set_input = set_input_dispatch_by_period diff --git a/tests/formulas/aah/aah.yaml b/tests/formulas/aah/aah.yaml index 80eefd2235..ff24c36fc9 100644 --- a/tests/formulas/aah/aah.yaml +++ b/tests/formulas/aah/aah.yaml @@ -134,8 +134,8 @@ 2015-10: 400 2015-09: 400 2015-08: 400 - activite: - 2018: actif + activite: + 2018: actif output: aah_base_ressources_conjugalisee: 2015-11: 80 @@ -171,9 +171,9 @@ 2018: inactif output: aah_base_ressources_conjugalisee: - 2015-11: 154 / 12 + 2015-11: 108 / 12 aah_base: - 2015-11: 795 + 2015-11: 799 - name: AAH demandeur sans ressource et conjoint salarié period: month:2015-04 @@ -186,13 +186,14 @@ age: 40 taux_incapacite: 0.9 activite: - 2018: inactif + 2015: inactif parent2: age: 40 salaire_imposable: 2013: 1128.70 * 12 + 2015: 1128.70 * 12 activite: - 2018: actif + 2015: actif output: aah_base_ressources_conjugalisee: 2015-11: @@ -844,6 +845,8 @@ 2023-05: 200 2023-04: 200 2023-03: 200 + activite: + 2023: actif albertjr: age: 10 pensions_alimentaires_percues: @@ -871,5 +874,5 @@ 2023-01: actif 2022-12: actif output: - aah_base_ressources: 696.41 + aah_base_ressources_conjugalisee: 696.41 aah: 260 diff --git a/tests/formulas/aah/aah_couple.yaml b/tests/formulas/aah/aah_couple.yaml index ec3998dd2f..36e4df4dd6 100644 --- a/tests/formulas/aah/aah_couple.yaml +++ b/tests/formulas/aah/aah_couple.yaml @@ -122,11 +122,11 @@ parent1: salaire_imposable: 2019: 12000 - activite: - 2021-06: 4 - 2021-05: 4 - 2021-04: 4 - 2021-03: 4 + activite: + 2021-06: 4 + 2021-05: 4 + 2021-04: 4 + 2021-03: 4 parent2: activite: 2021-06: 4 @@ -148,7 +148,7 @@ personne_de_reference: - parent2 output: - aah_base_ressources_conjugalisee: [413.42, 720] + aah_base_ressources_conjugalisee: [289.41, 720] - name: Couple de personnes en situation de handicap, déconjugalisation period: 2023-11 @@ -182,7 +182,8 @@ personne_de_reference: - parent2 output: - aah_base_ressources: [413.42, 720] + aah_base_ressources_deconjugalisee: [390.3, 440.3] + # L'aah base_ressource change avec le smic (et le montant d'AAH peut changer), l'output réel est donc encore inconnu (05/2023) : test utile uniquement pour le développement, en utilisant la dernière valeur du SMIC et d'AAH(qui risque de changer encore d'ici octobre) - name: Couple de personnes en situation de handicap, déconjugalisation period: 2023-11 diff --git a/tests/formulas/cheque_energie/montant.yaml b/tests/formulas/cheque_energie/montant.yaml index c836304bcf..21a7728293 100644 --- a/tests/formulas/cheque_energie/montant.yaml +++ b/tests/formulas/cheque_energie/montant.yaml @@ -145,8 +145,7 @@ rfr: 2016: 5599 output: - cheque_energie: - 2017: 0 + cheque_energie: 0 - name: Plusieurs foyers period: 2018 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_543686b46713806c4d57cea4.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_543686b46713806c4d57cea4.yaml index 5be331d77a..f669deb6ae 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_543686b46713806c4d57cea4.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_543686b46713806c4d57cea4.yaml @@ -16,6 +16,7 @@ input: handicap: 0 revenus_locatifs: 2012: 11760 + 2013-09: 980 2013-10: 980 2013-11: 980 2013-12: 980 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_54466887f2ef30d5549354ef.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_54466887f2ef30d5549354ef.yaml index b9ff318b5d..e4c30c84a7 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_54466887f2ef30d5549354ef.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_54466887f2ef30d5549354ef.yaml @@ -17,6 +17,7 @@ input: handicap: 0 salaire_de_base: 2012: 10307.69230769231 + 2013-09: 858.9743589743589 2013-10: 858.9743589743589 2013-11: 858.9743589743589 2013-12: 858.9743589743589 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_54466d04ce737fec5fd5fb40.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_54466d04ce737fec5fd5fb40.yaml index f7a7ae4f4a..5fa293aa08 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_54466d04ce737fec5fd5fb40.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_54466d04ce737fec5fd5fb40.yaml @@ -19,6 +19,7 @@ input: handicap: 0 salaire_de_base: 2012: 11538.461538461537 + 2013-09: 961.5384615384615 2013-10: 961.5384615384615 2013-11: 961.5384615384615 2013-12: 961.5384615384615 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_546cc5196c5820403d9b9c8d.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_546cc5196c5820403d9b9c8d.yaml index 7b5e29668f..d2e35535e0 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_546cc5196c5820403d9b9c8d.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_546cc5196c5820403d9b9c8d.yaml @@ -22,6 +22,7 @@ input: handicap: 0 salaire_de_base: 2012: 14923.076923076927 + 2013-10: 1243.5897435897436 2013-11: 1243.5897435897436 2013-12: 1243.5897435897436 2014-01: 1243.5897435897436 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_548ac00ffc1609f0180de108.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_548ac00ffc1609f0180de108.yaml index 32c95e4005..2840bc8772 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_548ac00ffc1609f0180de108.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_548ac00ffc1609f0180de108.yaml @@ -18,6 +18,7 @@ input: handicap: 0 revenus_stage_formation_pro: 2012: 1999.9800000000002 + 2013-11: 22.22 2013-12: 22.22 2014-01: 22.22 2014-02: 22.22 @@ -33,6 +34,7 @@ input: 2014-12: 650 salaire_de_base: 2012: 12820.499999999998 + 2013-11: 1424.4999999999998 2013-12: 1424.4999999999998 2014-01: 1424.4999999999998 2014-02: 1424.4999999999998 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_548ac530bf2c83e6182edb2d.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_548ac530bf2c83e6182edb2d.yaml index a38636ec17..71db356146 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_548ac530bf2c83e6182edb2d.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_548ac530bf2c83e6182edb2d.yaml @@ -14,6 +14,7 @@ input: handicap: 0 salaire_de_base: 2012: 14102.564102564105 + 2013-11: 1139.6011396011395 2013-12: 1139.6011396011395 2014-01: 1139.6011396011395 2014-02: 1139.6011396011395 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_548eda8bdf990f5b0286b9f0.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_548eda8bdf990f5b0286b9f0.yaml index 69900aadfd..31bc74a659 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_548eda8bdf990f5b0286b9f0.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_548eda8bdf990f5b0286b9f0.yaml @@ -20,6 +20,7 @@ input: date_naissance: '1969-10-26' chomage_brut: 2012: 12779.023861350901 + 2013-11: 1064.9186551125752 2013-12: 1064.9186551125752 2014-01: 1064.9186551125752 2014-02: 1064.9186551125752 @@ -35,6 +36,7 @@ input: 2014-12: 1064.9186551125752 chomage_net: 2012: 11580 + 2013-11: 965 2013-12: 965 2014-01: 965 2014-02: 965 @@ -64,6 +66,7 @@ input: date_naissance: '1969-10-26' chomage_brut: 2012: 9582.060810717607 + 2013-11: 1064.6734234130674 2013-12: 1064.6734234130674 2014-01: 1064.6734234130674 2014-02: 1064.6734234130674 @@ -78,6 +81,7 @@ input: 2014-11: 0 chomage_net: 2012: 8682.999999999998 + 2013-11: 964.7777777777778 2013-12: 964.7777777777778 2014-01: 964.7777777777778 2014-02: 964.7777777777778 @@ -95,6 +99,7 @@ input: handicap: 0 retraite_brute: 2012: 19438.44492440604 + 2013-11: 1619.8704103671705 2013-12: 1619.8704103671705 2014-01: 1619.8704103671705 2014-02: 1619.8704103671705 @@ -108,8 +113,9 @@ input: 2014-10: 1619.8704103671705 2014-11: 1619.8704103671705 2014-12: 1619.8704103671705 - retraite_imposable: + retraite_nette: 2012: 18000 + 2013-11: 1500 2013-12: 1500 2014-01: 1500 2014-02: 1500 @@ -312,4 +318,4 @@ input: personne_de_reference: 548ed9e5df990f5b0286b9e2 statut_occupation_logement: locataire_vide output: - ass: [0.0, 272.1] + ass: [0.0, 220] diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_549038ac8dac136002469383.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_549038ac8dac136002469383.yaml index 726cd4161e..ba9ebe89ba 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_549038ac8dac136002469383.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_549038ac8dac136002469383.yaml @@ -17,6 +17,7 @@ input: handicap: 0 salaire_de_base: 2012: 15384.615384615381 + 2013-11: 1282.051282051282 2013-12: 1282.051282051282 2014-01: 1282.051282051282 2014-02: 1282.051282051282 @@ -32,6 +33,7 @@ input: 2014-12: 1282.051282051282 salaire_imposable: 2012: 12438.34615384615 + 2013-11: 1036.5288461538462 2013-12: 1036.5288461538462 2014-01: 1036.5288461538462 2014-02: 1036.5288461538462 @@ -47,6 +49,7 @@ input: 2014-12: 1036.5288461538462 salaire_net: 2012: 12000 + 2013-11: 1000 2013-12: 1000 2014-01: 1000 2014-02: 1000 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_54903ed6df990f5b0286c429.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_54903ed6df990f5b0286c429.yaml index 61afe558cc..0705a562a5 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_54903ed6df990f5b0286c429.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_54903ed6df990f5b0286c429.yaml @@ -19,6 +19,7 @@ input: handicap: 0 salaire_de_base: 2012: 22564.102564102563 + 2013-11: 1908.8319088319088 2013-12: 1908.8319088319088 2014-01: 1908.8319088319088 2014-02: 1908.8319088319088 @@ -34,6 +35,7 @@ input: 2014-12: 1794.871794871795 salaire_imposable: 2012: 18242.907692307694 + 2013-11: 1543.2762820512821 2013-12: 1543.2762820512821 2014-01: 1543.2762820512821 2014-02: 1543.2762820512821 @@ -49,6 +51,7 @@ input: 2014-12: 1451.1403846153846 salaire_net: 2012: 17600 + 2013-11: 1488.888888888889 2013-12: 1488.888888888889 2014-01: 1488.888888888889 2014-02: 1488.888888888889 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_549069be8dac1360024697f6.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_549069be8dac1360024697f6.yaml index 098ed02fdd..684a8d2027 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_549069be8dac1360024697f6.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_549069be8dac1360024697f6.yaml @@ -19,6 +19,7 @@ input: handicap: 0 salaire_de_base: 2012: 26987.179487179492 + 2013-11: 2143.874643874644 2013-12: 2143.874643874644 2014-01: 2143.874643874644 2014-02: 2143.874643874644 @@ -27,13 +28,14 @@ input: 2014-05: 2143.874643874644 2014-06: 2143.874643874644 2014-07: 2143.874643874644 - 2014-08: 2143.874643874644 + 2014-08: 2564.102564102564 2014-09: 2564.102564102564 2014-10: 2564.102564102564 2014-11: 2564.102564102564 2014-12: 2564.102564102564 salaire_imposable: 2012: 21818.932211538464 + 2013-11: 1733.3065705128204 2013-12: 1733.3065705128204 2014-01: 1733.3065705128204 2014-02: 1733.3065705128204 @@ -49,6 +51,7 @@ input: 2014-12: 2073.0576923076924 salaire_net: 2012: 21050.000000000004 + 2013-11: 2000 2013-12: 1672.2222222222222 2014-01: 1672.2222222222222 2014-02: 1672.2222222222222 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_54915af640562f54026f069b.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_54915af640562f54026f069b.yaml index 54b620d772..f413907390 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_54915af640562f54026f069b.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_54915af640562f54026f069b.yaml @@ -22,6 +22,7 @@ input: handicap: 0 salaire_de_base: 2012: 29487.179487179492 + 2011-12: 2564.102564102564 2013-12: 2421.6524216524217 2014-01: 2421.6524216524217 2014-02: 2421.6524216524217 @@ -37,6 +38,7 @@ input: 2014-12: 2564.102564102564 salaire_imposable: 2012: 23840.16346153846 + 2013-11: 2073.0576923076924 2013-12: 1957.8878205128206 2014-01: 1957.8878205128206 2014-02: 1957.8878205128206 @@ -52,6 +54,7 @@ input: 2014-12: 2073.0576923076924 salaire_net: 2012: 23000.000000000004 + 2013-11: 2000 2013-12: 1888.888888888889 2014-01: 1888.888888888889 2014-02: 1888.888888888889 @@ -120,6 +123,7 @@ input: 2014-11: 0 af: 2012: 1560 + 2013-11: 130 2013-12: 130 2014-01: 130 2014-02: 130 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_5491891d8dac13600246a149.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_5491891d8dac13600246a149.yaml index 6abd900831..e6db78bd07 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_5491891d8dac13600246a149.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_5491891d8dac13600246a149.yaml @@ -18,6 +18,7 @@ input: handicap: 0 salaire_de_base: 2012: 12335.897435897436 + 2013-11: 897.4358974358975 2013-12: 1071.5099715099716 2014-01: 1071.5099715099716 2014-02: 1071.5099715099716 @@ -33,6 +34,7 @@ input: 2014-12: 897.4358974358975 salaire_imposable: 2012: 9973.480557692308 + 2013-11: 725.5701923076923 2013-12: 866.3077756410257 2014-01: 866.3077756410257 2014-02: 866.3077756410257 @@ -48,6 +50,7 @@ input: 2014-12: 725.5701923076923 salaire_net: 2012: 9621.999999999998 + 2013-11: 700 2013-12: 835.7777777777778 2014-01: 835.7777777777778 2014-02: 835.7777777777778 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_551d4d49d8e0018545eb071b.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_551d4d49d8e0018545eb071b.yaml index 3aeb494dbf..73e63e8570 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_551d4d49d8e0018545eb071b.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_551d4d49d8e0018545eb071b.yaml @@ -19,6 +19,7 @@ input: handicap: 0 salaire_de_base: '2013': 15569.230769230773 + 2014-03: 1297.4358974358975 2014-04: 1297.4358974358975 2014-05: 1297.4358974358975 2014-06: 1297.4358974358975 @@ -34,6 +35,7 @@ input: 2015-04: 1297.4358974358975 salaire_imposable: '2013': 12587.606307692311 + 2014-03: 1048.9671923076924 2014-04: 1048.9671923076924 2014-05: 1048.9671923076924 2014-06: 1048.9671923076924 @@ -49,6 +51,7 @@ input: 2015-04: 1048.9671923076924 salaire_net: '2013': 12144 + 2014-03: 1012 2014-04: 1012 2014-05: 1012 2014-06: 1012 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_55643f366aca6d3826e553a4.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_55643f366aca6d3826e553a4.yaml index 4cf30d8ef5..407eeb500c 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_55643f366aca6d3826e553a4.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_55643f366aca6d3826e553a4.yaml @@ -18,6 +18,7 @@ input: handicap: 0 salaire_de_base: 2013: 17179.487179487183 + 2014-04: 1025.6410256410256 2014-05: 1566.9515669515667 2014-06: 1566.9515669515667 2014-07: 1566.9515669515667 @@ -33,6 +34,7 @@ input: 2015-05: 1025.6410256410256 salaire_imposable: 2013: 13889.486538461539 + 2014-04: 829.223076923077 2014-05: 1266.8685897435896 2014-06: 1266.8685897435896 2014-07: 1266.8685897435896 @@ -48,6 +50,7 @@ input: 2015-05: 829.223076923077 salaire_net: 2013: 13400.000000000002 + 2014-04: 800 2014-05: 1222.2222222222222 2014-06: 1222.2222222222222 2014-07: 1222.2222222222222 @@ -249,6 +252,7 @@ input: 2015-04: 0 paje_clca: 2013: 2340 + 2014-04: 390 2014-05: 130 2014-06: 130 2014-07: 130 diff --git a/tests/mes-aides.gouv.fr/test_mes_aides_55915f4c9e2a9d0330e7a20f.yaml b/tests/mes-aides.gouv.fr/test_mes_aides_55915f4c9e2a9d0330e7a20f.yaml index a534963c0a..60b9638bb7 100644 --- a/tests/mes-aides.gouv.fr/test_mes_aides_55915f4c9e2a9d0330e7a20f.yaml +++ b/tests/mes-aides.gouv.fr/test_mes_aides_55915f4c9e2a9d0330e7a20f.yaml @@ -18,6 +18,7 @@ input: inapte_travail: 0 indemnites_journalieres_maladie: '2013': 5167.170000000001 + 2014-05: 680.58 2014-06: 283.59 2014-07: 283.59 2014-08: 283.59 @@ -34,6 +35,7 @@ input: handicap: 0 salaire_de_base: '2013': 8765.371794871795 + 2014-05: 0 2014-06: 973.9301994301994 2014-07: 973.9301994301994 2014-08: 973.9301994301994 @@ -48,6 +50,7 @@ input: 2015-05: 0 salaire_imposable: '2013': 7086.737355865384 + 2014-05: 0 2014-06: 787.4152617628205 2014-07: 787.4152617628205 2014-08: 787.4152617628205 @@ -62,6 +65,7 @@ input: 2015-05: 0 salaire_net: '2013': 6836.989999999999 + 2014-05: 0 2014-06: 759.6655555555556 2014-07: 759.6655555555556 2014-08: 759.6655555555556 @@ -128,6 +132,7 @@ input: 2015-05: 0 af: '2013': 3541 + 2014-05: 295.05 2014-06: 295.09444444444443 2014-07: 295.09444444444443 2014-08: 295.09444444444443 @@ -195,6 +200,7 @@ input: 2015-05: 0 asf: '2013': 844.2700000000001 + 2014-05: 0 2014-06: 93.80777777777777 2014-07: 93.80777777777777 2014-08: 93.80777777777777 @@ -248,6 +254,7 @@ input: 2015-05: 0 cf: '2013': 2222 + 2014-05: 185.2 2014-06: 185.15555555555557 2014-07: 185.15555555555557 2014-08: 185.15555555555557 diff --git a/tests/testdebug.py b/tests/testdebug.py deleted file mode 100644 index ecf912dc16..0000000000 --- a/tests/testdebug.py +++ /dev/null @@ -1,22 +0,0 @@ -import os -import pkg_resources - -from openfisca_core.tools.test_runner import run_tests -from openfisca_france import CountryTaxBenefitSystem - -tbs = CountryTaxBenefitSystem() - - -openfisca_france_dir = pkg_resources.get_distribution('OpenFisca-France').location -# yaml_tests_dir = [os.path.join(openfisca_france_dir, 'tests', 'formulas', 'cs', filename) for filename in -# [ -# 'css_abattement_aspa.yaml', -# 'css_abattement_aah.yaml', -# 'css_abattement_asi.yaml', -# 'css.yaml', -# ]] -openfisca_france_dir = './' -yaml_tests_dir = os.path.join(openfisca_france_dir, 'tests', 'formulas') - - -run_tests(tbs, yaml_tests_dir)