From 8dfb5282f468d6b1ca9d7659e11c859af0e63241 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Fri, 22 May 2026 18:07:46 +0200 Subject: [PATCH 1/4] Adjust for changed output layout (catala#1031) --- .../tests/tests_calculette_globale.catala_fr | 4 +- ...enefices_industriels_commerciaux.catala_fr | 219 +++---- .../tests/benefices_non_commerciaux.catala_fr | 203 +++---- .../tests/deficits_anterieurs.catala_fr | 8 +- impot_revenu/tests/prorata.catala_fr | 29 +- .../tests/traitements_salaires.catala_fr | 535 ++++++++---------- 6 files changed, 473 insertions(+), 525 deletions(-) diff --git a/aides_logement/tests/tests_calculette_globale.catala_fr b/aides_logement/tests/tests_calculette_globale.catala_fr index 471b837..ea9b75a 100644 --- a/aides_logement/tests/tests_calculette_globale.catala_fr +++ b/aides_logement/tests/tests_calculette_globale.catala_fr @@ -195,15 +195,15 @@ champ d'application Exemple2: ```catala-test-cli $ catala test-scope Exemple1 ┌─[RESULT]─ Exemple1 ─ -│ montant_versé = 246,23 € │ éligibilité = vrai +│ montant_versé = 246,23 € └─ ``` ```catala-test-cli $ catala test-scope Exemple2 ┌─[RESULT]─ Exemple2 ─ -│ montant_versé = 230,63 € │ éligibilité = vrai +│ montant_versé = 230,63 € └─ ``` diff --git a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr index 27b3f6d..f02a2d6 100644 --- a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr @@ -256,42 +256,35 @@ $ catala test-scope BénéficesIndustrielsCommerciaux1 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux1 ─ │ sortie = │ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_industriels_commerciaux: -│ [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { -│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: -│ 630,00 € -│ -- abattement_forfaitaire_micro_professionnel_marchandises: -│ 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: -│ 5 335,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: -│ 2 840,00 € -│ -- abattement_forfaitaire_micro_professionnel_services: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services: -│ 1 930,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: -│ 0,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- solde_net_professionnel: 50 000,00 € -│ -- solde_net_non_professionnel_hors_locations_meublées: -│ 15 333,00 € -│ -- solde_net_non_professionnel_locations_meublées: 530,00 € -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- prélèvement_libératoire_revenus_concession_brevets: 50,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: [[]; []] +│ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ +│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 630,00 € +│ -- abattement_forfaitaire_micro_professionnel_marchandises: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 5 335,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: 2 840,00 € +│ -- abattement_forfaitaire_micro_professionnel_services: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services: 1 930,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: 0,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- solde_net_professionnel: 50 000,00 € +│ -- solde_net_non_professionnel_hors_locations_meublées: 15 333,00 € +│ -- solde_net_non_professionnel_locations_meublées: 530,00 € +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- prélèvement_libératoire_revenus_concession_brevets: 50,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ []; +│ ] │ -- revenu_brut_global: 65 863,00 € -│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: -│ 0,00 € +│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € │ -- déficit_brut_global_non_professionnel_locations_meublées: 0,00 € │ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: [] -│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: -│ [] +│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: [] │ } └─ ``` @@ -508,63 +501,49 @@ $ catala test-scope BénéficesIndustrielsCommerciaux2 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux2 ─ │ sortie = │ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_industriels_commerciaux: -│ [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { -│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: -│ 735,00 € -│ -- abattement_forfaitaire_micro_professionnel_marchandises: -│ 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: -│ 21 300,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: -│ 2 485,00 € -│ -- abattement_forfaitaire_micro_professionnel_services: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services: -│ 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: -│ 12 500,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 3 200,00 € -│ -- déduction: 36 800,00 € -│ -- coefficient: 4 -│ -- catégorie: -│ MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales -│ } -│ ] -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel_hors_locations_meublées: -│ 8 700,00 € -│ -- solde_net_non_professionnel_locations_meublées: 12 780,00 € -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- prélèvement_libératoire_revenus_concession_brevets: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: -│ [ -│ []; -│ [ +│ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ +│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 735,00 € +│ -- abattement_forfaitaire_micro_professionnel_marchandises: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 21 300,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: 2 485,00 € +│ -- abattement_forfaitaire_micro_professionnel_services: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: 12 500,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [ │ Impot_revenu.RevenuQuotienté { │ -- valeur_nette: 3 200,00 € │ -- déduction: 36 800,00 € │ -- coefficient: 4 -│ -- catégorie: -│ MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales -│ } +│ -- catégorie: MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales +│ }; │ ] -│ ] +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel_hors_locations_meublées: 8 700,00 € +│ -- solde_net_non_professionnel_locations_meublées: 12 780,00 € +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- prélèvement_libératoire_revenus_concession_brevets: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 3 200,00 € +│ -- déduction: 36 800,00 € +│ -- coefficient: 4 +│ -- catégorie: MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales +│ }; +│ ]; +│ ] │ -- revenu_brut_global: 21 480,00 € -│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: -│ 0,00 € +│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € │ -- déficit_brut_global_non_professionnel_locations_meublées: 0,00 € │ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: [] -│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: -│ [] +│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: [] │ } └─ ``` @@ -857,61 +836,49 @@ $ catala test-scope BénéficesIndustrielsCommerciaux3 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux3 ─ │ sortie = │ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_industriels_commerciaux: -│ [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { -│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: -│ 279,00 € -│ -- abattement_forfaitaire_micro_professionnel_marchandises: -│ 5 571,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: -│ 31 090,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: -│ 943,00 € -│ -- abattement_forfaitaire_micro_professionnel_services: -│ 6 222,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services: -│ 4 944,00 € -│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: -│ 323,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 28 922,00 € -│ -- déduction: 28 921,00 € -│ -- coefficient: 4 -│ -- catégorie: MicroBénéficesIndustrielsCommerciauxServices -│ } -│ ] -│ -- solde_net_professionnel: 32 629,00 € -│ -- solde_net_non_professionnel_hors_locations_meublées: -│ 17 643,00 € -│ -- solde_net_non_professionnel_locations_meublées: 428,00 € -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- prélèvement_libératoire_revenus_concession_brevets: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: -│ [ -│ [ +│ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ +│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 279,00 € +│ -- abattement_forfaitaire_micro_professionnel_marchandises: 5 571,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 31 090,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_marchandises_locations_meublées: 943,00 € +│ -- abattement_forfaitaire_micro_professionnel_services: 6 222,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services: 4 944,00 € +│ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: 323,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [ │ Impot_revenu.RevenuQuotienté { │ -- valeur_nette: 28 922,00 € │ -- déduction: 28 921,00 € │ -- coefficient: 4 │ -- catégorie: MicroBénéficesIndustrielsCommerciauxServices -│ } -│ ]; [] -│ ] +│ }; +│ ] +│ -- solde_net_professionnel: 32 629,00 € +│ -- solde_net_non_professionnel_hors_locations_meublées: 17 643,00 € +│ -- solde_net_non_professionnel_locations_meublées: 428,00 € +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- prélèvement_libératoire_revenus_concession_brevets: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 28 922,00 € +│ -- déduction: 28 921,00 € +│ -- coefficient: 4 +│ -- catégorie: MicroBénéficesIndustrielsCommerciauxServices +│ }; +│ ]; +│ []; +│ ] │ -- revenu_brut_global: 50 700,00 € -│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: -│ 0,00 € +│ -- déficit_brut_global_non_professionnel_hors_locations_meublées: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € │ -- déficit_brut_global_non_professionnel_locations_meublées: 0,00 € │ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: [] -│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: -│ [] +│ -- déficits_réels_années_antérieures_non_professionnels_locations_meublées_mis_à_jour: [] │ } └─ ``` diff --git a/impot_revenu/tests/benefices_non_commerciaux.catala_fr b/impot_revenu/tests/benefices_non_commerciaux.catala_fr index b50dae6..e951a66 100644 --- a/impot_revenu/tests/benefices_non_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_non_commerciaux.catala_fr @@ -168,32 +168,34 @@ $ catala test-scope BénéficesNonCommerciaux1 ┌─[RESULT]─ BénéficesNonCommerciaux1 ─ │ sortie = │ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_non_commerciaux: -│ [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: -14 000,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 1 020,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: 1 980,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: [[]; []] +│ -- résultats_liquidation_bénéfices_non_commerciaux: [ +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: -14 000,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 1 020,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: 1 980,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ []; +│ ] │ -- revenu_brut_global: 0,00 € │ -- déficit_brut_global_non_professionnel: 12 020,00 € │ -- déficit_brut_global_professionnel: 0,00 € @@ -332,28 +334,31 @@ $ catala test-scope BénéficesNonCommerciaux2 ┌─[RESULT]─ BénéficesNonCommerciaux2 ─ │ sortie = │ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_non_commerciaux: -│ [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: 15 798,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: [[]] +│ -- résultats_liquidation_bénéfices_non_commerciaux: [ +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: 15 798,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ ] │ -- revenu_brut_global: 0,00 € │ -- déficit_brut_global_non_professionnel: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € -│ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: -│ [ -│ Oracles.DéficitAntérieur { -- année: 2 021 -- valeur: 6 202,00 € } -│ ] +│ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: [ +│ Oracles.DéficitAntérieur { +│ -- année: 2 021 +│ -- valeur: 6 202,00 € +│ }; +│ ] │ } └─ ``` @@ -600,43 +605,46 @@ $ catala test-scope BénéficesNonCommerciaux3 ┌─[RESULT]─ BénéficesNonCommerciaux3 ─ │ sortie = │ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_non_commerciaux: -│ [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: 18 540,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: 10 000,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 340,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: 360,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: [[]; []; []] +│ -- résultats_liquidation_bénéfices_non_commerciaux: [ +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: 18 540,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: 10 000,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 340,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 0,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: 360,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ []; +│ []; +│ ] │ -- revenu_brut_global: 2 900,00 € │ -- déficit_brut_global_non_professionnel: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € @@ -770,21 +778,22 @@ $ catala test-scope BénéficesNonCommerciaux4 ┌─[RESULT]─ BénéficesNonCommerciaux4 ─ │ sortie = │ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { -│ -- résultats_liquidation_bénéfices_non_commerciaux: -│ [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { -│ -- abattement_forfaitaire_micro_professionnel: 0,00 € -│ -- abattement_forfaitaire_micro_non_professionnel: 4 216,00 € -│ -- revenus_quotientés_professionnels: [] -│ -- revenus_quotientés_non_professionnels: [] -│ -- prélèvement_libératoire_auto_entreprise: 0,00 € -│ -- prélèvement_libératoire_plus_values_long_terme: 176,00 € -│ -- solde_net_professionnel: 0,00 € -│ -- solde_net_non_professionnel: -16 129,00 € -│ -- impôt_taux_forfaitaire: 0,00 € -│ } -│ ] -│ -- revenus_non_professionnels_quotientés_imputés: [[]] +│ -- résultats_liquidation_bénéfices_non_commerciaux: [ +│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ -- abattement_forfaitaire_micro_professionnel: 0,00 € +│ -- abattement_forfaitaire_micro_non_professionnel: 4 216,00 € +│ -- revenus_quotientés_professionnels: [] +│ -- revenus_quotientés_non_professionnels: [] +│ -- prélèvement_libératoire_auto_entreprise: 0,00 € +│ -- prélèvement_libératoire_plus_values_long_terme: 176,00 € +│ -- solde_net_professionnel: 0,00 € +│ -- solde_net_non_professionnel: -16 129,00 € +│ -- impôt_taux_forfaitaire: 0,00 € +│ }; +│ ] +│ -- revenus_non_professionnels_quotientés_imputés: [ +│ []; +│ ] │ -- revenu_brut_global: 0,00 € │ -- déficit_brut_global_non_professionnel: 16 129,00 € │ -- déficit_brut_global_professionnel: 0,00 € diff --git a/impot_revenu/tests/deficits_anterieurs.catala_fr b/impot_revenu/tests/deficits_anterieurs.catala_fr index d661734..c79b870 100644 --- a/impot_revenu/tests/deficits_anterieurs.catala_fr +++ b/impot_revenu/tests/deficits_anterieurs.catala_fr @@ -32,8 +32,12 @@ $ catala test-scope DéficitsAntérieurs1 --disable-warnings │ sortie = │ Impot_revenu.ImputationAuxDéficitsLesPlusAnciens { │ -- revenu_imputé: 0,00 € -│ -- déficits_antérieurs_restants: -│ [Oracles.DéficitAntérieur { -- année: 2 020 -- valeur: 100,00 € }] +│ -- déficits_antérieurs_restants: [ +│ Oracles.DéficitAntérieur { +│ -- année: 2 020 +│ -- valeur: 100,00 € +│ }; +│ ] │ } └─ ``` diff --git a/impot_revenu/tests/prorata.catala_fr b/impot_revenu/tests/prorata.catala_fr index 71f111c..00d8e76 100644 --- a/impot_revenu/tests/prorata.catala_fr +++ b/impot_revenu/tests/prorata.catala_fr @@ -31,7 +31,12 @@ $ catala test-scope ProRata1 --disable-warnings ┌─[RESULT]─ ProRata1 ─ │ sortie = │ ProRataArrondiEuro { -│ -- valeurs_proratisées: [10,00 €; 20,00 €; 30,00 €; 40,00 €] +│ -- valeurs_proratisées: [ +│ 10,00 €; +│ 20,00 €; +│ 30,00 €; +│ 40,00 €; +│ ] │ } └─ ``` @@ -55,7 +60,12 @@ $ catala test-scope ProRata2 --disable-warnings ┌─[RESULT]─ ProRata2 ─ │ sortie = │ ProRataArrondiEuro { -│ -- valeurs_proratisées: [2,00 €; 3,00 €; 4,00 €; 6,00 €] +│ -- valeurs_proratisées: [ +│ 2,00 €; +│ 3,00 €; +│ 4,00 €; +│ 6,00 €; +│ ] │ } └─ ``` @@ -79,11 +89,16 @@ $ catala test-scope ProRata3 --disable-warnings ┌─[RESULT]─ ProRata3 ─ │ sortie = │ ProRataArrondiEuro { -│ -- valeurs_proratisées: -│ [ -│ 11,00 €; 65,00 €; 10,00 €; 219,00 €; 20,00 €; 106,00 €; -│ 30,00 €; 106,00 € -│ ] +│ -- valeurs_proratisées: [ +│ 11,00 €; +│ 65,00 €; +│ 10,00 €; +│ 219,00 €; +│ 20,00 €; +│ 106,00 €; +│ 30,00 €; +│ 106,00 €; +│ ] │ } └─ ``` diff --git a/impot_revenu/tests/traitements_salaires.catala_fr b/impot_revenu/tests/traitements_salaires.catala_fr index 1adde45..f2da3e9 100644 --- a/impot_revenu/tests/traitements_salaires.catala_fr +++ b/impot_revenu/tests/traitements_salaires.catala_fr @@ -107,8 +107,7 @@ $ catala test-scope TraitementsSalaires1 --disable-warnings │ -- déduction_frais_professionnels_traitements_salaires: 1 000,00 € │ -- exonérations_81_quater: 0,00 € │ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 10 000,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 10 000,00 € │ -- revenu_brut_déclarant_hors_quotient: 9 000,00 € │ -- revenus_quotientés: [] │ } @@ -221,8 +220,7 @@ $ catala test-scope TraitementsSalaires2 --disable-warnings │ -- déduction_frais_professionnels_traitements_salaires: 2 000,00 € │ -- exonérations_81_quater: 0,00 € │ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 10 000,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 10 000,00 € │ -- revenu_brut_déclarant_hors_quotient: 8 000,00 € │ -- revenus_quotientés: [] │ } @@ -529,29 +527,26 @@ $ catala test-scope TraitementsSalaires4 --disable-warnings ┌─[RESULT]─ TraitementsSalaires4 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 1 914,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 50 086,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 2 209,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 57 791,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 1 914,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 50 086,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 2 209,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 57 791,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 0,00 € │ -- revenu_brut_global: 107 877,00 € │ -- déficit_brut_global: 0,00 € @@ -699,39 +694,35 @@ $ catala test-scope TraitementsSalaires5 --disable-warnings ┌─[RESULT]─ TraitementsSalaires5 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 3 958,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 68 042,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 165,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 135,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 6 750,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 0,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 3 958,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 68 042,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 165,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 135,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 6 750,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 0,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 0,00 € │ -- revenu_brut_global: 68 177,00 € │ -- déficit_brut_global: 0,00 € @@ -911,41 +902,35 @@ $ catala test-scope TraitementsSalaires6 --disable-warnings ┌─[RESULT]─ TraitementsSalaires6 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 4 800,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 48 000,00 € -│ -- revenu_brut_déclarant_hors_quotient: 43 200,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 4 123,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 41 377,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 472,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 3 000,00 € -│ -- revenu_brut_déclarant_hors_quotient: 2 528,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 4 800,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 48 000,00 € +│ -- revenu_brut_déclarant_hors_quotient: 43 200,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 4 123,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 41 377,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 472,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 3 000,00 € +│ -- revenu_brut_déclarant_hors_quotient: 2 528,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 0,00 € │ -- revenu_brut_global: 87 105,00 € │ -- déficit_brut_global: 0,00 € @@ -1376,49 +1361,42 @@ $ catala test-scope TraitementsSalaires7 --disable-warnings ┌─[RESULT]─ TraitementsSalaires7 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 2 203,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 48 650,00 € -│ -- revenu_brut_déclarant_hors_quotient: 46 447,00 € -│ -- revenus_quotientés: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 238 681,00 € -│ -- déduction: 11 319,00 € -│ -- coefficient: 5 -│ -- catégorie: TraitementsSalaires -│ } -│ ] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 895,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 8 950,00 € -│ -- revenu_brut_déclarant_hors_quotient: 8 055,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 150,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 0,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 2 203,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 48 650,00 € +│ -- revenu_brut_déclarant_hors_quotient: 46 447,00 € +│ -- revenus_quotientés: [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 238 681,00 € +│ -- déduction: 11 319,00 € +│ -- coefficient: 5 +│ -- catégorie: TraitementsSalaires +│ }; +│ ] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 895,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 8 950,00 € +│ -- revenu_brut_déclarant_hors_quotient: 8 055,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 150,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 0,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 30 000,00 € │ -- revenu_brut_global: 84 502,00 € │ -- déficit_brut_global: 0,00 € @@ -1692,49 +1670,42 @@ $ catala test-scope TraitementsSalaires8 --disable-warnings ┌─[RESULT]─ TraitementsSalaires8 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 986,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 72 360,00 € -│ -- revenu_brut_déclarant_hors_quotient: 71 374,00 € -│ -- revenus_quotientés: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 907 464,00 € -│ -- déduction: 12 536,00 € -│ -- coefficient: 6 -│ -- catégorie: TraitementsSalaires -│ } -│ ] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 5 000,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 46 544,00 € -│ -- revenu_brut_déclarant_hors_quotient: 41 544,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 694,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 6 242,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 986,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 72 360,00 € +│ -- revenu_brut_déclarant_hors_quotient: 71 374,00 € +│ -- revenus_quotientés: [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 907 464,00 € +│ -- déduction: 12 536,00 € +│ -- coefficient: 6 +│ -- catégorie: TraitementsSalaires +│ }; +│ ] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 5 000,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 46 544,00 € +│ -- revenu_brut_déclarant_hors_quotient: 41 544,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 694,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 6 242,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 0,00 € │ -- revenu_brut_global: 119 160,00 € │ -- déficit_brut_global: 0,00 € @@ -1807,27 +1778,24 @@ $ catala test-scope TraitementsSalaires9 --disable-warnings ┌─[RESULT]─ TraitementsSalaires9 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 94,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 350,00 € -│ -- revenu_brut_déclarant_hors_quotient: 256,00 € -│ -- revenus_quotientés: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 486 572,00 € -│ -- déduction: 13 428,00 € -│ -- coefficient: 6 -│ -- catégorie: TraitementsSalaires -│ } -│ ] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 94,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 350,00 € +│ -- revenu_brut_déclarant_hors_quotient: 256,00 € +│ -- revenus_quotientés: [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 486 572,00 € +│ -- déduction: 13 428,00 € +│ -- coefficient: 6 +│ -- catégorie: TraitementsSalaires +│ }; +│ ] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 0,00 € │ -- revenu_brut_global: 256,00 € │ -- déficit_brut_global: 0,00 € @@ -2148,31 +2116,26 @@ $ catala test-scope TraitementsSalaires10 --disable-warnings ┌─[RESULT]─ TraitementsSalaires10 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 4 000,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 40 000,00 € -│ -- revenu_brut_déclarant_hors_quotient: 36 000,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 2 000,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 20 000,00 € -│ -- revenu_brut_déclarant_hors_quotient: 18 000,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 4 000,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 40 000,00 € +│ -- revenu_brut_déclarant_hors_quotient: 36 000,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 2 000,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 20 000,00 € +│ -- revenu_brut_déclarant_hors_quotient: 18 000,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 10 500,00 € │ -- revenu_brut_global: 64 500,00 € │ -- déficit_brut_global: 0,00 € @@ -2814,70 +2777,60 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings ┌─[RESULT]─ TraitementsSalaires11 ─ │ sortie = │ Impot_revenu.TraitementsSalairesFoyerFiscal { -│ -- déclarations_avec_résultats_traitements_salaires: -│ [ -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 13 133,00 € -│ -- exonérations_81_quater: 7 500,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 139 045,00 € -│ -- revenu_brut_déclarant_hors_quotient: 125 912,00 € -│ -- revenus_quotientés: -│ [ -│ Impot_revenu.RevenuQuotienté { -│ -- valeur_nette: 3 734,00 € -│ -- déduction: 389,00 € -│ -- coefficient: 5 -│ -- catégorie: TraitementsSalaires -│ } -│ ] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 1 000,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 10 000,00 € -│ -- revenu_brut_déclarant_hors_quotient: 9 000,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 350,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 0,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 0,00 € -│ -- revenu_brut_déclarant_hors_quotient: 0,00 € -│ -- revenus_quotientés: [] -│ }; -│ Impot_revenu.TraitementsSalairesDéclarant { -│ -- abattement_pensions_retraites_rentes: 0,00 € -│ -- déduction_frais_professionnels_traitements_salaires: -│ 850,00 € -│ -- exonérations_81_quater: 0,00 € -│ -- prélèvement_libératoire: 0,00 € -│ -- traitements_salaires_avec_déduction_frais_professionnels: -│ 500,00 € -│ -- revenu_brut_déclarant_hors_quotient: -350,00 € -│ -- revenus_quotientés: [] -│ } -│ ] +│ -- déclarations_avec_résultats_traitements_salaires: [ +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 13 133,00 € +│ -- exonérations_81_quater: 7 500,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 139 045,00 € +│ -- revenu_brut_déclarant_hors_quotient: 125 912,00 € +│ -- revenus_quotientés: [ +│ Impot_revenu.RevenuQuotienté { +│ -- valeur_nette: 3 734,00 € +│ -- déduction: 389,00 € +│ -- coefficient: 5 +│ -- catégorie: TraitementsSalaires +│ }; +│ ] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 1 000,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 10 000,00 € +│ -- revenu_brut_déclarant_hors_quotient: 9 000,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 350,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 0,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 0,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 € +│ -- revenu_brut_déclarant_hors_quotient: 0,00 € +│ -- revenus_quotientés: [] +│ }; +│ Impot_revenu.TraitementsSalairesDéclarant { +│ -- abattement_pensions_retraites_rentes: 0,00 € +│ -- déduction_frais_professionnels_traitements_salaires: 850,00 € +│ -- exonérations_81_quater: 0,00 € +│ -- prélèvement_libératoire: 0,00 € +│ -- traitements_salaires_avec_déduction_frais_professionnels: 500,00 € +│ -- revenu_brut_déclarant_hors_quotient: -350,00 € +│ -- revenus_quotientés: [] +│ }; +│ ] │ -- rentes_viagères_titre_onéreux: 2 050,00 € │ -- revenu_brut_global: 140 612,00 € │ -- déficit_brut_global: 0,00 € From 5c6ce941dd721cb513dd64a51cfeeb8e0825e92b Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 1 Jun 2026 15:42:00 +0200 Subject: [PATCH 2/4] Fix remaining deprecation warning --- us_tax_code/section_121.catala_en | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/us_tax_code/section_121.catala_en b/us_tax_code/section_121.catala_en index 714d2d8..e4ae372 100644 --- a/us_tax_code/section_121.catala_en +++ b/us_tax_code/section_121.catala_en @@ -177,7 +177,7 @@ scope Section121SinglePerson: # - either the 5 years mark is inside the period and we only # cound the half after 5 years definition aggregate_periods_from_last_five_years of periods equals - sum duration of ( + Duration.sum of ( map each period among periods to if date_of_sale_or_exchange <= period.begin + 5 year then period.end - period.begin From b96c58dba1b105aa301757cdf456953111f166c2 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 1 Jun 2026 15:42:48 +0200 Subject: [PATCH 3/4] Update tests outputs for #1031 --- ...enefices_industriels_commerciaux.catala_fr | 20 ++--- .../tests/benefices_non_commerciaux.catala_fr | 24 +++--- .../tests/deficits_anterieurs.catala_fr | 4 +- impot_revenu/tests/nombre_de_parts.catala_fr | 24 +++--- .../tests/traitements_salaires.catala_fr | 83 +++++++++---------- 5 files changed, 76 insertions(+), 79 deletions(-) diff --git a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr index f02a2d6..cac7682 100644 --- a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr @@ -255,9 +255,9 @@ des différents membres du foyer fiscal soit : $ catala test-scope BénéficesIndustrielsCommerciaux1 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux1 ─ │ sortie = -│ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { +│ BénéficesIndustrielsCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ BénéficesIndustrielsCommerciauxDéclarant { │ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 630,00 € │ -- abattement_forfaitaire_micro_professionnel_marchandises: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 5 335,00 € @@ -500,9 +500,9 @@ seul revenu net global « ordinaire » imposable : DS1 + DS3\_”. $ catala test-scope BénéficesIndustrielsCommerciaux2 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux2 ─ │ sortie = -│ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { +│ BénéficesIndustrielsCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ BénéficesIndustrielsCommerciauxDéclarant { │ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 735,00 € │ -- abattement_forfaitaire_micro_professionnel_marchandises: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 21 300,00 € @@ -512,7 +512,7 @@ $ catala test-scope BénéficesIndustrielsCommerciaux2 │ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: 12 500,00 € │ -- revenus_quotientés_professionnels: [] │ -- revenus_quotientés_non_professionnels: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 3 200,00 € │ -- déduction: 36 800,00 € │ -- coefficient: 4 @@ -530,7 +530,7 @@ $ catala test-scope BénéficesIndustrielsCommerciaux2 │ -- revenus_non_professionnels_quotientés_imputés: [ │ []; │ [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 3 200,00 € │ -- déduction: 36 800,00 € │ -- coefficient: 4 @@ -835,9 +835,9 @@ seul revenu net global « ordinaire » imposable : DS1 + DS3\_”. $ catala test-scope BénéficesIndustrielsCommerciaux3 ┌─[RESULT]─ BénéficesIndustrielsCommerciaux3 ─ │ sortie = -│ Impot_revenu.BénéficesIndustrielsCommerciauxFoyerFiscal { +│ BénéficesIndustrielsCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_industriels_commerciaux: [ -│ Impot_revenu.BénéficesIndustrielsCommerciauxDéclarant { +│ BénéficesIndustrielsCommerciauxDéclarant { │ -- abattement_spécial_micro_location_meublées_rurales_spéciales: 279,00 € │ -- abattement_forfaitaire_micro_professionnel_marchandises: 5 571,00 € │ -- abattement_forfaitaire_micro_non_professionnel_marchandises: 31 090,00 € @@ -847,7 +847,7 @@ $ catala test-scope BénéficesIndustrielsCommerciaux3 │ -- abattement_forfaitaire_micro_non_professionnel_services_locations_meublées: 323,00 € │ -- revenus_quotientés_professionnels: [] │ -- revenus_quotientés_non_professionnels: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 28 922,00 € │ -- déduction: 28 921,00 € │ -- coefficient: 4 @@ -864,7 +864,7 @@ $ catala test-scope BénéficesIndustrielsCommerciaux3 │ ] │ -- revenus_non_professionnels_quotientés_imputés: [ │ [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 28 922,00 € │ -- déduction: 28 921,00 € │ -- coefficient: 4 diff --git a/impot_revenu/tests/benefices_non_commerciaux.catala_fr b/impot_revenu/tests/benefices_non_commerciaux.catala_fr index e951a66..43ca247 100644 --- a/impot_revenu/tests/benefices_non_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_non_commerciaux.catala_fr @@ -167,9 +167,9 @@ champ d'application BénéficesNonCommerciaux1: $ catala test-scope BénéficesNonCommerciaux1 ┌─[RESULT]─ BénéficesNonCommerciaux1 ─ │ sortie = -│ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { +│ BénéficesNonCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_non_commerciaux: [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € │ -- revenus_quotientés_professionnels: [] @@ -180,7 +180,7 @@ $ catala test-scope BénéficesNonCommerciaux1 │ -- solde_net_non_professionnel: -14 000,00 € │ -- impôt_taux_forfaitaire: 0,00 € │ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 1 020,00 € │ -- revenus_quotientés_professionnels: [] @@ -333,9 +333,9 @@ champ d'application BénéficesNonCommerciaux2: $ catala test-scope BénéficesNonCommerciaux2 ┌─[RESULT]─ BénéficesNonCommerciaux2 ─ │ sortie = -│ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { +│ BénéficesNonCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_non_commerciaux: [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € │ -- revenus_quotientés_professionnels: [] @@ -354,7 +354,7 @@ $ catala test-scope BénéficesNonCommerciaux2 │ -- déficit_brut_global_non_professionnel: 0,00 € │ -- déficit_brut_global_professionnel: 0,00 € │ -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: [ -│ Oracles.DéficitAntérieur { +│ DéficitAntérieur { │ -- année: 2 021 │ -- valeur: 6 202,00 € │ }; @@ -604,9 +604,9 @@ champ d'application BénéficesNonCommerciaux3: $ catala test-scope BénéficesNonCommerciaux3 ┌─[RESULT]─ BénéficesNonCommerciaux3 ─ │ sortie = -│ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { +│ BénéficesNonCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_non_commerciaux: [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € │ -- revenus_quotientés_professionnels: [] @@ -617,7 +617,7 @@ $ catala test-scope BénéficesNonCommerciaux3 │ -- solde_net_non_professionnel: 18 540,00 € │ -- impôt_taux_forfaitaire: 0,00 € │ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 0,00 € │ -- revenus_quotientés_professionnels: [] @@ -628,7 +628,7 @@ $ catala test-scope BénéficesNonCommerciaux3 │ -- solde_net_non_professionnel: 10 000,00 € │ -- impôt_taux_forfaitaire: 0,00 € │ }; -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 340,00 € │ -- revenus_quotientés_professionnels: [] @@ -777,9 +777,9 @@ Soit : 1 374 * 12.8% = 176 $ catala test-scope BénéficesNonCommerciaux4 ┌─[RESULT]─ BénéficesNonCommerciaux4 ─ │ sortie = -│ Impot_revenu.BénéficesNonCommerciauxFoyerFiscal { +│ BénéficesNonCommerciauxFoyerFiscal { │ -- résultats_liquidation_bénéfices_non_commerciaux: [ -│ Impot_revenu.BénéficesNonCommerciauxDéclarant { +│ BénéficesNonCommerciauxDéclarant { │ -- abattement_forfaitaire_micro_professionnel: 0,00 € │ -- abattement_forfaitaire_micro_non_professionnel: 4 216,00 € │ -- revenus_quotientés_professionnels: [] diff --git a/impot_revenu/tests/deficits_anterieurs.catala_fr b/impot_revenu/tests/deficits_anterieurs.catala_fr index c79b870..91168ff 100644 --- a/impot_revenu/tests/deficits_anterieurs.catala_fr +++ b/impot_revenu/tests/deficits_anterieurs.catala_fr @@ -30,10 +30,10 @@ champ d'application DéficitsAntérieurs1: $ catala test-scope DéficitsAntérieurs1 --disable-warnings ┌─[RESULT]─ DéficitsAntérieurs1 ─ │ sortie = -│ Impot_revenu.ImputationAuxDéficitsLesPlusAnciens { +│ ImputationAuxDéficitsLesPlusAnciens { │ -- revenu_imputé: 0,00 € │ -- déficits_antérieurs_restants: [ -│ Oracles.DéficitAntérieur { +│ DéficitAntérieur { │ -- année: 2 020 │ -- valeur: 100,00 € │ }; diff --git a/impot_revenu/tests/nombre_de_parts.catala_fr b/impot_revenu/tests/nombre_de_parts.catala_fr index 4970ab6..ac0b19b 100644 --- a/impot_revenu/tests/nombre_de_parts.catala_fr +++ b/impot_revenu/tests/nombre_de_parts.catala_fr @@ -132,11 +132,10 @@ Le test ci-dessus doit donner le résultat suivant à l'exécution. ```catala-test-cli $ catala test-scope NombreDeParts1 --disable-warnings ┌─[RESULT]─ NombreDeParts1 ─ -│ sortie = -│ Impot_revenu.NombreDeParts { -│ -- nombre_de_parts: 3,0 -│ -- abattement: 0,00 € -│ } +│ sortie = NombreDeParts { +│ -- nombre_de_parts: 3,0 +│ -- abattement: 0,00 € +│ } └─ ``` @@ -292,11 +291,10 @@ Le test ci-dessus doit donner le résultat suivant à l'exécution. ```catala-test-cli $ catala test-scope NombreDeParts2 --disable-warnings ┌─[RESULT]─ NombreDeParts2 ─ -│ sortie = -│ Impot_revenu.NombreDeParts { -│ -- nombre_de_parts: 4,5 -│ -- abattement: 0,00 € -│ } +│ sortie = NombreDeParts { +│ -- nombre_de_parts: 4,5 +│ -- abattement: 0,00 € +│ } └─ ``` @@ -538,7 +536,7 @@ Le nombre de parts du foyer est donc de 4,5 parts. $ catala test-scope NombreDeParts3 --disable-warnings ┌─[RESULT]─ NombreDeParts3 ─ │ sortie = -│ Impot_revenu.NombreDeParts { +│ NombreDeParts { │ -- nombre_de_parts: 4,0 │ -- abattement: 9 552,00 € │ } @@ -690,7 +688,7 @@ Soit une majoration de 0.25 par pour l'enfant à charge. $ catala test-scope NombreDeParts4 --disable-warnings ┌─[RESULT]─ NombreDeParts4 ─ │ sortie = -│ Impot_revenu.NombreDeParts { +│ NombreDeParts { │ -- nombre_de_parts: 2,25 │ -- abattement: 0,00 € │ } @@ -865,7 +863,7 @@ prévoit une majoration supplémentaire d'un quart de part. $ catala test-scope NombreDeParts5 --disable-warnings ┌─[RESULT]─ NombreDeParts5 ─ │ sortie = -│ Impot_revenu.NombreDeParts { +│ NombreDeParts { │ -- nombre_de_parts: 3,75 │ -- abattement: 0,00 € │ } diff --git a/impot_revenu/tests/traitements_salaires.catala_fr b/impot_revenu/tests/traitements_salaires.catala_fr index f2da3e9..b8f03d5 100644 --- a/impot_revenu/tests/traitements_salaires.catala_fr +++ b/impot_revenu/tests/traitements_salaires.catala_fr @@ -102,7 +102,7 @@ Le test ci-dessus doit donner le résultat suivant à l'exécution. $ catala test-scope TraitementsSalaires1 --disable-warnings ┌─[RESULT]─ TraitementsSalaires1 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 1 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -215,7 +215,7 @@ Le test ci-dessus doit donner le résultat suivant à l'exécution. $ catala test-scope TraitementsSalaires2 --disable-warnings ┌─[RESULT]─ TraitementsSalaires2 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 2 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -420,13 +420,12 @@ champ d'application TraitementsSalaires3: ```catala-test-cli $ catala test-scope TraitementsSalaires3 --disable-warnings ┌─[RESULT]─ TraitementsSalaires3 ─ -│ parts = -│ Impot_revenu.NombreDeParts { -│ -- nombre_de_parts: 1,0 -│ -- abattement: 0,00 € -│ } +│ parts = NombreDeParts { +│ -- nombre_de_parts: 1,0 +│ -- abattement: 0,00 € +│ } │ traitements_salaires = -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 2 000,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -526,9 +525,9 @@ champ d'application TraitementsSalaires4: $ catala test-scope TraitementsSalaires4 --disable-warnings ┌─[RESULT]─ TraitementsSalaires4 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 1 914,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -537,7 +536,7 @@ $ catala test-scope TraitementsSalaires4 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 50 086,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 2 209,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -693,9 +692,9 @@ champ d'application TraitementsSalaires5: $ catala test-scope TraitementsSalaires5 --disable-warnings ┌─[RESULT]─ TraitementsSalaires5 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 3 958,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -704,7 +703,7 @@ $ catala test-scope TraitementsSalaires5 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 68 042,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 165,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -713,7 +712,7 @@ $ catala test-scope TraitementsSalaires5 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 135,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -901,9 +900,9 @@ champ d'application TraitementsSalaires6: $ catala test-scope TraitementsSalaires6 --disable-warnings ┌─[RESULT]─ TraitementsSalaires6 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 4 800,00 € │ -- exonérations_81_quater: 0,00 € @@ -912,7 +911,7 @@ $ catala test-scope TraitementsSalaires6 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 43 200,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 4 123,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -921,7 +920,7 @@ $ catala test-scope TraitementsSalaires6 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 41 377,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 472,00 € │ -- exonérations_81_quater: 0,00 € @@ -1360,9 +1359,9 @@ champ d'application TraitementsSalaires7: $ catala test-scope TraitementsSalaires7 --disable-warnings ┌─[RESULT]─ TraitementsSalaires7 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 2 203,00 € │ -- exonérations_81_quater: 0,00 € @@ -1370,7 +1369,7 @@ $ catala test-scope TraitementsSalaires7 --disable-warnings │ -- traitements_salaires_avec_déduction_frais_professionnels: 48 650,00 € │ -- revenu_brut_déclarant_hors_quotient: 46 447,00 € │ -- revenus_quotientés: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 238 681,00 € │ -- déduction: 11 319,00 € │ -- coefficient: 5 @@ -1378,7 +1377,7 @@ $ catala test-scope TraitementsSalaires7 --disable-warnings │ }; │ ] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 895,00 € │ -- exonérations_81_quater: 0,00 € @@ -1387,7 +1386,7 @@ $ catala test-scope TraitementsSalaires7 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 8 055,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 150,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -1669,9 +1668,9 @@ champ d'application TraitementsSalaires8: $ catala test-scope TraitementsSalaires8 --disable-warnings ┌─[RESULT]─ TraitementsSalaires8 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 986,00 € │ -- exonérations_81_quater: 0,00 € @@ -1679,7 +1678,7 @@ $ catala test-scope TraitementsSalaires8 --disable-warnings │ -- traitements_salaires_avec_déduction_frais_professionnels: 72 360,00 € │ -- revenu_brut_déclarant_hors_quotient: 71 374,00 € │ -- revenus_quotientés: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 907 464,00 € │ -- déduction: 12 536,00 € │ -- coefficient: 6 @@ -1687,7 +1686,7 @@ $ catala test-scope TraitementsSalaires8 --disable-warnings │ }; │ ] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 5 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -1696,7 +1695,7 @@ $ catala test-scope TraitementsSalaires8 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 41 544,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 694,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -1777,9 +1776,9 @@ ce cas de test si (issue #56). $ catala test-scope TraitementsSalaires9 --disable-warnings ┌─[RESULT]─ TraitementsSalaires9 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 94,00 € │ -- exonérations_81_quater: 0,00 € @@ -1787,7 +1786,7 @@ $ catala test-scope TraitementsSalaires9 --disable-warnings │ -- traitements_salaires_avec_déduction_frais_professionnels: 350,00 € │ -- revenu_brut_déclarant_hors_quotient: 256,00 € │ -- revenus_quotientés: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 486 572,00 € │ -- déduction: 13 428,00 € │ -- coefficient: 6 @@ -2115,9 +2114,9 @@ champ d'application TraitementsSalaires10: $ catala test-scope TraitementsSalaires10 --disable-warnings ┌─[RESULT]─ TraitementsSalaires10 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 4 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -2126,7 +2125,7 @@ $ catala test-scope TraitementsSalaires10 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 36 000,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 2 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -2776,9 +2775,9 @@ champ d'application TraitementsSalaires11: $ catala test-scope TraitementsSalaires11 --disable-warnings ┌─[RESULT]─ TraitementsSalaires11 ─ │ sortie = -│ Impot_revenu.TraitementsSalairesFoyerFiscal { +│ TraitementsSalairesFoyerFiscal { │ -- déclarations_avec_résultats_traitements_salaires: [ -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 13 133,00 € │ -- exonérations_81_quater: 7 500,00 € @@ -2786,7 +2785,7 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings │ -- traitements_salaires_avec_déduction_frais_professionnels: 139 045,00 € │ -- revenu_brut_déclarant_hors_quotient: 125 912,00 € │ -- revenus_quotientés: [ -│ Impot_revenu.RevenuQuotienté { +│ RevenuQuotienté { │ -- valeur_nette: 3 734,00 € │ -- déduction: 389,00 € │ -- coefficient: 5 @@ -2794,7 +2793,7 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings │ }; │ ] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 1 000,00 € │ -- exonérations_81_quater: 0,00 € @@ -2803,7 +2802,7 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 9 000,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 350,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -2812,7 +2811,7 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 0,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 0,00 € │ -- exonérations_81_quater: 0,00 € @@ -2821,7 +2820,7 @@ $ catala test-scope TraitementsSalaires11 --disable-warnings │ -- revenu_brut_déclarant_hors_quotient: 0,00 € │ -- revenus_quotientés: [] │ }; -│ Impot_revenu.TraitementsSalairesDéclarant { +│ TraitementsSalairesDéclarant { │ -- abattement_pensions_retraites_rentes: 0,00 € │ -- déduction_frais_professionnels_traitements_salaires: 850,00 € │ -- exonérations_81_quater: 0,00 € From a41f705fe0ca3e22921d02808231b9f3cf111d83 Mon Sep 17 00:00:00 2001 From: Vincent Botbol Date: Tue, 2 Jun 2026 10:59:32 +0200 Subject: [PATCH 4/4] Format with latest catala-format --- Makefile | 9 ++ aides_logement/arrete_2019-09-27.catala_fr | 4 +- .../code_construction_reglementaire.catala_fr | 86 ++++++++++--------- .../tests/tests_calculette_globale.catala_fr | 6 +- .../tests/tests_eligibilite_apl.catala_fr | 8 +- allocations_familiales/epilogue.catala_fr | 2 +- .../securite_sociale_R.catala_fr | 21 ++--- .../tests_allocations_familiales.catala_fr | 16 ++-- .../fiche_technique_BCAE7_2025.catala_fr | 42 ++++++--- asp/bcae7/prologue.catala_fr | 3 +- asp/bcae7/tests/tests_bcae7.catala_fr | 44 +++++----- droit_successions/droit_successions.catala_fr | 13 +-- impot_revenu/cgi_revenus.catala_fr | 50 ++++++----- ...3\250le_convention_fiscale_ocde.catala_fr" | 49 +++++------ ...enefices_industriels_commerciaux.catala_fr | 4 +- .../tests/benefices_non_commerciaux.catala_fr | 4 +- .../tests/deficits_anterieurs.catala_fr | 2 +- .../tests/traitements_salaires.catala_fr | 13 +-- "impot_revenu/v\303\251rifications.catala_fr" | 2 +- us_tax_code/section_121.catala_en | 23 ++--- 20 files changed, 220 insertions(+), 181 deletions(-) diff --git a/Makefile b/Makefile index 665cf03..c07c40d 100644 --- a/Makefile +++ b/Makefile @@ -177,6 +177,15 @@ CATALA_SRC=$(shell find . -path ./_build -prune -o -type f -name '*.catala_*' -p check-format: $(addsuffix .format,$(CATALA_SRC)) +%.catala_pl.fix-format: %.catala_pl + @catala-format -i $< +%.catala_en.fix-format: %.catala_en + @catala-format -i $< +%.catala_fr.fix-format: %.catala_fr + @catala-format -i $< + +fix-format: $(addsuffix .fix-format,$(CATALA_SRC)) + .FORCE: .PHONY: all pass_all_tests reset_all_tests check-format diff --git a/aides_logement/arrete_2019-09-27.catala_fr b/aides_logement/arrete_2019-09-27.catala_fr index 22f52a6..3a3cfb9 100644 --- a/aides_logement/arrete_2019-09-27.catala_fr +++ b/aides_logement/arrete_2019-09-27.catala_fr @@ -3706,7 +3706,7 @@ sous condition date_courante > |2019-10-01|: -- haut: LimiteTranche.Infini -- bas: 6 331,29€ -- taux: 48% - } + }; ] ``` @@ -3754,7 +3754,7 @@ sous condition date_courante > |2019-10-01|: -- haut: LimiteTranche.Infini -- bas: 4095,05€ -- taux: 32,80% - } + }; ] ``` diff --git a/aides_logement/code_construction_reglementaire.catala_fr b/aides_logement/code_construction_reglementaire.catala_fr index 8181106..f343e99 100644 --- a/aides_logement/code_construction_reglementaire.catala_fr +++ b/aides_logement/code_construction_reglementaire.catala_fr @@ -4201,26 +4201,27 @@ champ d'application CalculÉquivalenceLoyerMinimale: ( ( ( - Décimal.somme de ( - transforme chaque tranche parmi tranches_revenus_d832_26_multipliées en - ( - si ressources_ménage_arrondies <= tranche.bas alors 0,0 - sinon - selon tranche.haut sous forme - -- LimiteTrancheDécimal.Revenu contenu tranche_haut : - ( - si ressources_ménage_arrondies >= tranche_haut alors - (tranche_haut - tranche.bas) - * tranche.taux - sinon - (ressources_ménage_arrondies - tranche.bas) - * tranche.taux - ) - -- LimiteTrancheDécimal.Infini : - (ressources_ménage_arrondies - tranche.bas) - * tranche.taux - ) - ) + Décimal.somme de + ( + transforme chaque tranche parmi tranches_revenus_d832_26_multipliées en + ( + si ressources_ménage_arrondies <= tranche.bas alors 0,0 + sinon + selon tranche.haut sous forme + -- LimiteTrancheDécimal.Revenu contenu tranche_haut : + ( + si ressources_ménage_arrondies >= tranche_haut alors + (tranche_haut - tranche.bas) + * tranche.taux + sinon + (ressources_ménage_arrondies - tranche.bas) + * tranche.taux + ) + -- LimiteTrancheDécimal.Infini : + (ressources_ménage_arrondies - tranche.bas) + * tranche.taux + ) + ) ) + décimal de montant_forfaitaire_d832_26 * n_nombre_parts_d832_25 @@ -4251,28 +4252,29 @@ champ d'application CalculÉquivalenceLoyerMinimale: ( ( ( - Décimal.somme de ( - transforme chaque tranche parmi tranches_revenus_d832_26_multipliées en - ( - si ressources_ménage_arrondies <= tranche.bas alors 0,0 - sinon - ( - selon tranche.haut sous forme - -- LimiteTrancheDécimal.Revenu contenu tranche_haut : - ( - si ressources_ménage_arrondies >= tranche_haut alors - (tranche_haut - tranche.bas) - * tranche.taux - sinon - (ressources_ménage_arrondies - tranche.bas) - * tranche.taux - ) - -- LimiteTrancheDécimal.Infini : - (ressources_ménage_arrondies - tranche.bas) - * tranche.taux - ) - ) - ) + Décimal.somme de + ( + transforme chaque tranche parmi tranches_revenus_d832_26_multipliées en + ( + si ressources_ménage_arrondies <= tranche.bas alors 0,0 + sinon + ( + selon tranche.haut sous forme + -- LimiteTrancheDécimal.Revenu contenu tranche_haut : + ( + si ressources_ménage_arrondies >= tranche_haut alors + (tranche_haut - tranche.bas) + * tranche.taux + sinon + (ressources_ménage_arrondies - tranche.bas) + * tranche.taux + ) + -- LimiteTrancheDécimal.Infini : + (ressources_ménage_arrondies - tranche.bas) + * tranche.taux + ) + ) + ) ) + décimal de montant_forfaitaire_d832_26 ) diff --git a/aides_logement/tests/tests_calculette_globale.catala_fr b/aides_logement/tests/tests_calculette_globale.catala_fr index ea9b75a..d2b5775 100644 --- a/aides_logement/tests/tests_calculette_globale.catala_fr +++ b/aides_logement/tests/tests_calculette_globale.catala_fr @@ -22,7 +22,7 @@ champ d'application Exemple1: [ AL.PrestationReçue.AllocationSoutienEnfantHandicapé; AL.PrestationReçue.ComplémentFamilial; - AL.PrestationReçue.AllocationsFamiliales + AL.PrestationReçue.AllocationsFamiliales; ] -- situation_familiale: Mariés contenu |2010-11-26| -- personnes_à_charge: @@ -62,7 +62,7 @@ champ d'application Exemple1: -- obligation_scolaire: Pendant -- situation_garde_alternée: PasDeGardeAlternée } - ) + ); ] -- logement: AL.Logement { @@ -150,7 +150,7 @@ champ d'application Exemple2: -- obligation_scolaire: Pendant -- situation_garde_alternée: PasDeGardeAlternée } - ) + ); ] -- logement: AL.Logement { diff --git a/aides_logement/tests/tests_eligibilite_apl.catala_fr b/aides_logement/tests/tests_eligibilite_apl.catala_fr index efac13c..4dfbe6f 100644 --- a/aides_logement/tests/tests_eligibilite_apl.catala_fr +++ b/aides_logement/tests/tests_eligibilite_apl.catala_fr @@ -21,7 +21,7 @@ champ d'application Exemple1: [ AL.PrestationReçue.AllocationSoutienEnfantHandicapé; AL.PrestationReçue.ComplémentFamilial; - AL.PrestationReçue.AllocationsFamiliales + AL.PrestationReçue.AllocationsFamiliales; ] -- situation_familiale: Mariés contenu |2010-11-26| -- personnes_à_charge: @@ -61,7 +61,7 @@ champ d'application Exemple1: -- obligation_scolaire: Pendant -- situation_garde_alternée: PasDeGardeAlternée } - ) + ); ] -- logement: AL.Logement { @@ -146,7 +146,7 @@ champ d'application Exemple2: -- obligation_scolaire: Pendant -- situation_garde_alternée: PasDeGardeAlternée } - ) + ); ] -- logement: AL.Logement { @@ -220,7 +220,7 @@ champ d'application Exemple3: -- obligation_scolaire: Pendant -- situation_garde_alternée: PasDeGardeAlternée } - ) + ); ] -- logement: AL.Logement { diff --git a/allocations_familiales/epilogue.catala_fr b/allocations_familiales/epilogue.catala_fr index 53410b2..0c22919 100644 --- a/allocations_familiales/epilogue.catala_fr +++ b/allocations_familiales/epilogue.catala_fr @@ -11,7 +11,7 @@ la fonction du bloc de code ci-dessous. champ d'application EnfantLePlusÂgé: définition le_plus_âgé égal à contenu de potentiel_plus_âgé parmi enfants - tel que potentiel_plus_âgé.date_de_naissance est minimum + tel que potentiel_plus_âgé.date_de_naissance est minimum ou si liste vide alors Enfant { -- identifiant: -1 -- obligation_scolaire: Pendant diff --git a/allocations_familiales/securite_sociale_R.catala_fr b/allocations_familiales/securite_sociale_R.catala_fr index 527cff1..d82761f 100644 --- a/allocations_familiales/securite_sociale_R.catala_fr +++ b/allocations_familiales/securite_sociale_R.catala_fr @@ -139,16 +139,17 @@ du nombre d'enfants à charge dans les conditions suivantes : ```catala champ d'application AllocationsFamiliales: définition nombre_moyen_enfants égal à - Décimal.somme de ( - transforme chaque enfant parmi enfants_à_charge_droit_ouvert_prestation_familiale en - selon (prise_en_compte de enfant) sous forme - -- Complète : 1,0 - -- Partagée : 0,5 - # Pas directement dans cet article de loi, mais concerne le - # cas où l'enfant est pris en charge par les services sociaux et - # la part de l'allocation va également au service social - -- Zéro : 0,0 - ) + Décimal.somme de + ( + transforme chaque enfant parmi enfants_à_charge_droit_ouvert_prestation_familiale en + selon (prise_en_compte de enfant) sous forme + -- Complète : 1,0 + -- Partagée : 0,5 + # Pas directement dans cet article de loi, mais concerne le + # cas où l'enfant est pris en charge par les services sociaux et + # la part de l'allocation va également au service social + -- Zéro : 0,0 + ) ``` Le nombre total d'enfants, pour chaque foyer, est obtenu en faisant la somme du diff --git a/allocations_familiales/tests/tests_allocations_familiales.catala_fr b/allocations_familiales/tests/tests_allocations_familiales.catala_fr index 39a09dc..b5d469c 100644 --- a/allocations_familiales/tests/tests_allocations_familiales.catala_fr +++ b/allocations_familiales/tests/tests_allocations_familiales.catala_fr @@ -147,7 +147,7 @@ champ d'application Test6: -- d_prise_en_charge: EffectiveEtPermanente -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 78 830 € définition f.i_date_courante égal à |2020-05-01| @@ -191,7 +191,7 @@ champ d'application Test8: -- d_prise_en_charge: EffectiveEtPermanente -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 69945 € définition f.i_date_courante égal à |2021-01-01| @@ -221,7 +221,7 @@ champ d'application Test9: -- d_prise_en_charge: ServicesSociauxAllocationVerséeAuxServicesSociaux -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 75786 € définition f.i_date_courante égal à |2020-05-01| @@ -251,7 +251,7 @@ champ d'application Test10: -- d_prise_en_charge: GardeAlternéePartageAllocations -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 30000 € définition f.i_date_courante égal à |2020-04-20| @@ -289,7 +289,7 @@ champ d'application Test11: -- d_prise_en_charge: EffectiveEtPermanente -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 30000 € définition f.i_date_courante égal à |2021-12-31| @@ -335,7 +335,7 @@ champ d'application Test12: -- d_prise_en_charge: EffectiveEtPermanente -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 20000 € définition f.i_date_courante égal à |2019-08-26| @@ -358,7 +358,7 @@ champ d'application Test13: -- d_prise_en_charge: EffectiveEtPermanente -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 65000 € définition f.i_date_courante égal à |2019-08-26| @@ -388,7 +388,7 @@ champ d'application Test14: -- d_prise_en_charge: GardeAlternéeAllocataireUnique -- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai -- d_bénéficie_titre_personnel_aide_personnelle_logement: faux - } + }; ] définition f.i_ressources_ménage égal à 64033 € définition f.i_date_courante égal à |2022-05-01| diff --git a/asp/bcae7/fiche_technique_BCAE7_2025.catala_fr b/asp/bcae7/fiche_technique_BCAE7_2025.catala_fr index 47c968d..9174359 100644 --- a/asp/bcae7/fiche_technique_BCAE7_2025.catala_fr +++ b/asp/bcae7/fiche_technique_BCAE7_2025.catala_fr @@ -69,7 +69,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: ```catala champ d'application ConditionnalitéBCAE7Pour2025: définition surface_terres_arables_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en parcelle.surface_hectares règle exempté_respect @@ -86,7 +87,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: règle exempté_respect sous condition soit surface_herbes_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en # TODO: Quelle date de réference utiliser pour déterminer ce critère ? ( selon (culture_date de parcelle.cultures, |2025-01-01|) sous forme @@ -117,7 +119,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: règle exempté_respect sous condition soit surface_herbes_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en # TODO: Quelle date de réference utiliser pour déterminer ce critère ? ( selon (culture_date de parcelle.cultures, |2025-01-01|) sous forme @@ -466,7 +469,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: } définition surface_terres_arables_cultivées_hectares égal à - Décimal.somme de transforme chaque parcelle + Décimal.somme de + transforme chaque parcelle parmi terres_arables_cultivées en parcelle.surface_hectares @@ -827,7 +831,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: rotation_satisfaite dans soit surface_culture_principale égal à - Décimal.somme de transforme chaque parcelle + Décimal.somme de + transforme chaque parcelle parmi terres_arables_cultivées en soit culture_courante égal à # TODO: quelle date prendre en compte ici ? @@ -955,7 +960,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: # et les deux cultures principales ne couvrant pas, ensemble, plus de 95 % # des terres arables. # TODO comment implémenter plusieurs cultures principales ? - Décimal.somme de transforme chaque parcelle + Décimal.somme de + transforme chaque parcelle parmi terres_arables_cultivées en soit culture_courante égal à # TODO: quelle date prendre en compte ici ? @@ -1862,7 +1868,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: état prairie_temporaires_jachères égal à soit surface_prairies_temporaires_jachères égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -1897,7 +1904,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: état légumineuses égal à soit surfaces_légumineuses_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -1951,7 +1959,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: ```catala champ d'application ConditionnalitéBCAE7Pour2025: définition surfaces_céréales_hiver_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -1988,7 +1997,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: champ d'application ConditionnalitéBCAE7Pour2025: définition surfaces_céréales_printemps_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -2026,7 +2036,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: ```catala champ d'application ConditionnalitéBCAE7Pour2025: définition surfaces_plantes_sarclées_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -2056,7 +2067,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: ```catala champ d'application ConditionnalitéBCAE7Pour2025: définition surfaces_oléagineux_hiver_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -2087,7 +2099,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: ```catala champ d'application ConditionnalitéBCAE7Pour2025: définition surfaces_oléagineux_printemps_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) @@ -2180,7 +2193,8 @@ champ d'application ConditionnalitéBCAE7Pour2025: état autres_cultures égal à soit surface_autres_cultures_hectares égal à - Décimal.somme de transforme chaque parcelle parmi terres_arables en + Décimal.somme de + transforme chaque parcelle parmi terres_arables en soit culture égal à # TODO: quelle date prendre en compte ici ? culture_date de (parcelle.cultures, |2025-07-01|) diff --git a/asp/bcae7/prologue.catala_fr b/asp/bcae7/prologue.catala_fr index 83c1684..cd7eaba 100644 --- a/asp/bcae7/prologue.catala_fr +++ b/asp/bcae7/prologue.catala_fr @@ -28,7 +28,8 @@ déclaration surface_parcelles_hectares contenu décimal dépend de parcelles contenu liste de ParcelleTerreArable égal à - Décimal.somme de transforme chaque parcelle parmi parcelles en + Décimal.somme de + transforme chaque parcelle parmi parcelles en parcelle.surface_hectares déclaration culture_date diff --git a/asp/bcae7/tests/tests_bcae7.catala_fr b/asp/bcae7/tests/tests_bcae7.catala_fr index 3ba85e7..ac887e7 100644 --- a/asp/bcae7/tests/tests_bcae7.catala_fr +++ b/asp/bcae7/tests/tests_bcae7.catala_fr @@ -36,7 +36,7 @@ champ d'application Exemple1: -- fin: |2025-12-31| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -61,7 +61,7 @@ champ d'application Exemple1: -- fin: |2025-10-31| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -86,7 +86,7 @@ champ d'application Exemple1: -- fin: |2025-06-30| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -111,9 +111,9 @@ champ d'application Exemple1: -- fin: |2025-09-30| } -- qualification: Principale - } + }; ] - } + }; ] -- agriculture_biologique: Conventionnelle } @@ -144,7 +144,7 @@ champ d'application Exemple2: -- fin: |2025-12-31| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -169,7 +169,7 @@ champ d'application Exemple2: -- fin: |2025-10-31| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -194,7 +194,7 @@ champ d'application Exemple2: -- fin: |2025-06-30| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -219,7 +219,7 @@ champ d'application Exemple2: -- fin: |2025-09-30| } -- qualification: Principale - } + }; ] }; BCAE7.ParcelleTerreArable { @@ -253,9 +253,9 @@ champ d'application Exemple2: -- fin: |2026-02-28| } -- qualification: Secondaire - } + }; ] - } + }; ] -- agriculture_biologique: Conventionnelle } @@ -329,9 +329,9 @@ champ d'application Exemple3: -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] - } + }; ] -- agriculture_biologique: Conventionnelle } @@ -404,9 +404,9 @@ champ d'application Exemple4: -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] - } + }; ] -- agriculture_biologique: Conventionnelle } @@ -499,7 +499,7 @@ déclaration exemple_5_parcelle_maïs_grain contenu BCAE7.ParcelleTerreArable -- fin: |2025-11-15| } -- qualification: Secondaire - } + }; ] } @@ -545,7 +545,7 @@ déclaration exemple_5_parcelle_monoculture_maïs contenu BCAE7.ParcelleTerreAra -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] } @@ -591,7 +591,7 @@ déclaration exemple_5_parcelle_colza_blé contenu BCAE7.ParcelleTerreArable -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] } @@ -637,7 +637,7 @@ déclaration exemple_5_parcelle_blé_tournesol contenu BCAE7.ParcelleTerreArable -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] } @@ -683,7 +683,7 @@ déclaration exemple_5_parcelle_tournesol_rotation contenu BCAE7.ParcelleTerreAr -- fin: |2025-08-15| } -- qualification: Principale - } + }; ] } @@ -702,7 +702,7 @@ champ d'application Exemple5: exemple_5_parcelle_colza_blé; exemple_5_parcelle_maïs_grain; exemple_5_parcelle_monoculture_maïs; - exemple_5_parcelle_tournesol_rotation + exemple_5_parcelle_tournesol_rotation; ] -- agriculture_biologique: Conventionnelle } @@ -722,7 +722,7 @@ champ d'application Exemple5bis: exemple_5_parcelle_blé_tournesol; exemple_5_parcelle_colza_blé; exemple_5_parcelle_maïs_grain; - exemple_5_parcelle_tournesol_rotation + exemple_5_parcelle_tournesol_rotation; ] -- agriculture_biologique: Conventionnelle } diff --git a/droit_successions/droit_successions.catala_fr b/droit_successions/droit_successions.catala_fr index 979f208..f782d4f 100644 --- a/droit_successions/droit_successions.catala_fr +++ b/droit_successions/droit_successions.catala_fr @@ -139,12 +139,13 @@ disponible. champ d'application RéserveHéréditaire: définition patrimoine_assiette_réserve_héréditaire égal à patrimoine_total - - Argent.somme de ( - transforme chaque bien parmi biens_usufruit_rente_viagère en - si bien.prise_en_compte_pour_réserve_héréditaire alors - 0 € - sinon bien.valeur - ) + - Argent.somme de + ( + transforme chaque bien parmi biens_usufruit_rente_viagère en + si bien.prise_en_compte_pour_réserve_héréditaire alors + 0 € + sinon bien.valeur + ) définition montant_réserve_héréditaire égal à patrimoine_assiette_réserve_héréditaire * quotité_réserve_héréditaire diff --git a/impot_revenu/cgi_revenus.catala_fr b/impot_revenu/cgi_revenus.catala_fr index a3b2a97..bd5b119 100644 --- a/impot_revenu/cgi_revenus.catala_fr +++ b/impot_revenu/cgi_revenus.catala_fr @@ -965,7 +965,8 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant: revenu_exceptionnel_ou_différé.valeur ) + ( - Argent.somme de transforme chaque revenu_exceptionnel_ou_différé + Argent.somme de + transforme chaque revenu_exceptionnel_ou_différé parmi revenus_exceptionnels_non_professionnels_locations_meublées_rurales_spéciales en revenu_exceptionnel_ou_différé.valeur ) @@ -1060,7 +1061,8 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant: ) + revenus.non_professionnels.généraux.revenus_imposables_micro_services + ( - Argent.somme de transforme chaque revenu_exceptionnel_ou_différé + Argent.somme de + transforme chaque revenu_exceptionnel_ou_différé parmi revenus_exceptionnels_non_professionnels_abattement_micro_services en revenu_exceptionnel_ou_différé.valeur ) @@ -1134,7 +1136,8 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant: égal à revenus.non_professionnels.locations_meublées_micro_classées_rurales_spéciales + revenus.non_professionnels.locations_meublées_micro_cotisations_classées_rurales_spéciales - + Argent.somme de transforme chaque revenu_exceptionnel_ou_différé + + Argent.somme de + transforme chaque revenu_exceptionnel_ou_différé parmi revenus_exceptionnels_non_professionnels_locations_meublées_rurales_spéciales en revenu_exceptionnel_ou_différé.valeur @@ -1380,7 +1383,7 @@ champ d'application TraitementsSalairesDéclarant: PensionRetraiteRente { -- valeur_initiale: revenus.pensions_alimentaires_perçues -- type_pension: PensionAlimentairePercue - } + }; ] # Ici on conserve une collection plutôt de calculer la somme, car les différents # types d'entrées vont nécessiter des calculs d'abattements différents par la @@ -2393,7 +2396,8 @@ champ d'application TraitementsSalairesDéclarant: # en compte des frais réels pour prendre en compte la dernière étape # de calcul où l'on applique les frais réels. déduction_frais_professionnels_totale - - Argent.somme de transforme chaque r_quotienté parmi revenus_quotientés en + - Argent.somme de + transforme chaque r_quotienté parmi revenus_quotientés en ( selon r_quotienté.catégorie sous forme -- TraitementsSalaires : r_quotienté.déduction @@ -2995,7 +2999,8 @@ champ d'application BénéficesNonCommerciauxDéclarant: revenus.professionnels.généraux.revenus_imposables_micro + (Argent.somme de transforme chaque revenu parmi revenus_exceptionnels_professionnels_abattement_micro en revenu.valeur) + revenus.non_professionnels.généraux.revenus_imposables_micro - + Argent.somme de transforme chaque revenu + + Argent.somme de + transforme chaque revenu parmi revenus_exceptionnels_non_professionnels_abattement_micro en revenu.valeur @@ -3401,7 +3406,8 @@ champ d'application ImputationDéficitSurRevenusQuotientés: transforme chaque revenus_quotientés_catégoriels_déclarant parmi revenus_quotientés_catégoriels en ( - Argent.somme de transforme chaque revenu_quotienté_catégoriel + Argent.somme de + transforme chaque revenu_quotienté_catégoriel parmi revenus_quotientés_catégoriels_déclarant en revenu_quotienté_catégoriel.valeur_nette ) @@ -4166,19 +4172,21 @@ champ d'application TraitementsSalairesDéclarant: définition abattement_pensions_retraites_rentes_total_non_plafonné égal à - Argent.somme de ( - transforme chaque p parmi pensions_retraites_rentes_79 en - si abattement_selon_158_5_a de p.type_pension alors - calcul_abattement_pensions_retraites_rentes de p.valeur_initiale - sinon 0 € - ) - + Argent.somme de ( - transforme chaque r_quotienté parmi revenus.revenus_exceptionnels_ou_différés en - selon r_quotienté.catégorie sous forme - -- CatégorieRevenuExceptionnelOuDifféré.PensionsRetraitesRentes : - calcul_abattement_pensions_retraites_rentes de r_quotienté.valeur - -- n'importe quel : 0 € + Argent.somme de + ( + transforme chaque p parmi pensions_retraites_rentes_79 en + si abattement_selon_158_5_a de p.type_pension alors + calcul_abattement_pensions_retraites_rentes de p.valeur_initiale + sinon 0 € ) + + Argent.somme de + ( + transforme chaque r_quotienté parmi revenus.revenus_exceptionnels_ou_différés en + selon r_quotienté.catégorie sous forme + -- CatégorieRevenuExceptionnelOuDifféré.PensionsRetraitesRentes : + calcul_abattement_pensions_retraites_rentes de r_quotienté.valeur + -- n'importe quel : 0 € + ) # Comment coder la cumulativité du plafond d'abbattement au global sur toutes # les pensions et retraites du foyer fiscal ? On pourrait sommer les @@ -4505,7 +4513,7 @@ champ d'application TraitementsSalairesFoyerFiscal: RenteViagèreOnéreux { -- valeur: revenus.rentes_percues_70plus_ans -- catégorie: RenteViagèreOnéreuxPlus70Ans - } + }; ] en rente_viagère.valeur - calcul_déduction_rente_viagères_titre_onéreux de rente_viagère @@ -5978,7 +5986,7 @@ champ d'application TraitementsSalairesDéclarant: PensionRetraiteRente { -- valeur_initiale: revenus.autre_pensions_imposables_source_étrangère -- type_pension: TypePensionRetraiteRente.PensionsRetraitesRentes - } + }; ] ``` diff --git "a/impot_revenu/mod\303\250le_convention_fiscale_ocde.catala_fr" "b/impot_revenu/mod\303\250le_convention_fiscale_ocde.catala_fr" index 2672cc8..872c1cd 100644 --- "a/impot_revenu/mod\303\250le_convention_fiscale_ocde.catala_fr" +++ "b/impot_revenu/mod\303\250le_convention_fiscale_ocde.catala_fr" @@ -76,7 +76,7 @@ champ d'application TraitementsSalairesDéclarant: PensionRetraiteRente { -- valeur_initiale: revenus.pensions_étrangères_impôts_imputé -- type_pension: TypePensionRetraiteRente.PensionsRetraitesRentes - } + }; ] champ d'application TraitementsSalairesFoyerFiscal: @@ -84,29 +84,30 @@ champ d'application TraitementsSalairesFoyerFiscal: état étrangères_imputables égal à rentes_viagères_titre_onéreux - + Argent.somme de ( - transforme chaque rente_viagère - parmi [ - RenteViagèreOnéreux { - -- valeur: revenus.rentes_étrangères_imputables_percues_49moins_ans - -- catégorie: RenteViagèreOnéreuxMoins49Ans - }; - RenteViagèreOnéreux { - -- valeur: revenus.rentes_étrangères_imputables_percues_50_59ans - -- catégorie: RenteViagèreOnéreuxEntre50Et59Ans - }; - RenteViagèreOnéreux { - -- valeur: revenus.rentes_étrangères_imputables_percues_60_69ans - -- catégorie: RenteViagèreOnéreuxEntre60Et69Ans - }; - RenteViagèreOnéreux { - -- valeur: revenus.rentes_étrangères_imputables_percues_70plus_ans - -- catégorie: RenteViagèreOnéreuxPlus70Ans - } - ] en - rente_viagère.valeur - - calcul_déduction_rente_viagères_titre_onéreux de rente_viagère - ) + + Argent.somme de + ( + transforme chaque rente_viagère + parmi [ + RenteViagèreOnéreux { + -- valeur: revenus.rentes_étrangères_imputables_percues_49moins_ans + -- catégorie: RenteViagèreOnéreuxMoins49Ans + }; + RenteViagèreOnéreux { + -- valeur: revenus.rentes_étrangères_imputables_percues_50_59ans + -- catégorie: RenteViagèreOnéreuxEntre50Et59Ans + }; + RenteViagèreOnéreux { + -- valeur: revenus.rentes_étrangères_imputables_percues_60_69ans + -- catégorie: RenteViagèreOnéreuxEntre60Et69Ans + }; + RenteViagèreOnéreux { + -- valeur: revenus.rentes_étrangères_imputables_percues_70plus_ans + -- catégorie: RenteViagèreOnéreuxPlus70Ans + }; + ] en + rente_viagère.valeur + - calcul_déduction_rente_viagères_titre_onéreux de rente_viagère + ) # Voir article 193 du CGI pour la justification du fait que les crédits # d'impôts sont calculés sur la base du revenu brut global ; il faut donc diff --git a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr index cac7682..3347e11 100644 --- a/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_industriels_commerciaux.catala_fr @@ -320,7 +320,7 @@ champ d'application BénéficesIndustrielsCommerciaux2: -- régime: Article163_0_A -- échéance: RevenuExceptionnel -- catégorie: MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales - } + }; ] } ).sortie @@ -602,7 +602,7 @@ champ d'application BénéficesIndustrielsCommerciaux3: -- régime: Article163_0_A -- échéance: RevenuExceptionnel -- catégorie: MicroBénéficesIndustrielsCommerciauxServices - } + }; ] } ).sortie diff --git a/impot_revenu/tests/benefices_non_commerciaux.catala_fr b/impot_revenu/tests/benefices_non_commerciaux.catala_fr index 43ca247..1a5613b 100644 --- a/impot_revenu/tests/benefices_non_commerciaux.catala_fr +++ b/impot_revenu/tests/benefices_non_commerciaux.catala_fr @@ -322,7 +322,7 @@ champ d'application BénéficesNonCommerciaux2: Oracles.DéficitAntérieur { -- année: 2021 -- valeur: 15 000 € - } + }; ] -- revenus: [ déclarant1.sortie ] -- année_revenus: 2022 @@ -593,7 +593,7 @@ champ d'application BénéficesNonCommerciaux3: Oracles.DéficitAntérieur { -- année: 2021 -- valeur: 25 000 € - } + }; ] -- revenus: [ déclarant1.sortie; déclarant2.sortie; déclarant3.sortie ] -- année_revenus: 2022 diff --git a/impot_revenu/tests/deficits_anterieurs.catala_fr b/impot_revenu/tests/deficits_anterieurs.catala_fr index 91168ff..0a6d37a 100644 --- a/impot_revenu/tests/deficits_anterieurs.catala_fr +++ b/impot_revenu/tests/deficits_anterieurs.catala_fr @@ -21,7 +21,7 @@ champ d'application DéficitsAntérieurs1: Oracles.DéficitAntérieur { -- année: 2019 -- valeur: 600 € - } + }; ] } ``` diff --git a/impot_revenu/tests/traitements_salaires.catala_fr b/impot_revenu/tests/traitements_salaires.catala_fr index b8f03d5..044f60e 100644 --- a/impot_revenu/tests/traitements_salaires.catala_fr +++ b/impot_revenu/tests/traitements_salaires.catala_fr @@ -514,7 +514,8 @@ champ d'application TraitementsSalaires4: # Le total des abattements doit être le plafond assertion ( - Argent.somme de transforme chaque résultats + Argent.somme de + transforme chaque résultats parmi sortie.déclarations_avec_résultats_traitements_salaires en résultats.abattement_pensions_retraites_rentes ) @@ -1339,7 +1340,7 @@ champ d'application TraitementsSalaires7: -- régime: Article163_0_A -- échéance: RevenuDifféréÉchéanceNormale contenu 2018 -- catégorie: TraitementsSalaires - } + }; ] définition déclarant2.autres_revenus_imposables_chômage_préretraite égal à 8950 € @@ -1647,7 +1648,7 @@ champ d'application TraitementsSalaires8: -- régime: Article163_0_A -- échéance: RevenuDifféréÉchéanceNormale contenu 2017 -- catégorie: TraitementsSalaires - } + }; ] définition déclarant2.traitements_salaires égal à 46 544 € définition déclarant2.frais_réels égal à IR.FraisRéels.Oui contenu 5 000 € @@ -1754,7 +1755,7 @@ champ d'application TraitementsSalaires9: -- régime: Article163_0_A -- échéance: RevenuDifféréÉchéanceNormale contenu 2017 -- catégorie: TraitementsSalaires - } + }; ] définition sortie égal à @@ -2734,7 +2735,7 @@ champ d'application TraitementsSalaires11: -- régime: Article163_0_A -- échéance: RevenuDifféréÉchéanceNormale contenu 2018 -- catégorie: TraitementsSalaires - } + }; ] définition déclarant1.gains_de_levee_doptions égal à 2 345 € définition déclarant2.autres_revenus_imposables_chômage_préretraite égal à @@ -2764,7 +2765,7 @@ champ d'application TraitementsSalaires11: [ déclarant3.sortie; déclarant4.sortie; - déclarant5.sortie + déclarant5.sortie; ] -- année_revenus: 2022 -- revenus: foyer.sortie diff --git "a/impot_revenu/v\303\251rifications.catala_fr" "b/impot_revenu/v\303\251rifications.catala_fr" index fa2ed70..6ca4500 100644 --- "a/impot_revenu/v\303\251rifications.catala_fr" +++ "b/impot_revenu/v\303\251rifications.catala_fr" @@ -30,7 +30,7 @@ champ d'application NombreDeParts: foyer_fiscal.célibataire; foyer_fiscal.pacsées; foyer_fiscal.divorcée_séparées; - foyer_fiscal.veuve + foyer_fiscal.veuve; ] tel que case = vrai ) diff --git a/us_tax_code/section_121.catala_en b/us_tax_code/section_121.catala_en index e4ae372..6f66401 100644 --- a/us_tax_code/section_121.catala_en +++ b/us_tax_code/section_121.catala_en @@ -177,17 +177,18 @@ scope Section121SinglePerson: # - either the 5 years mark is inside the period and we only # cound the half after 5 years definition aggregate_periods_from_last_five_years of periods equals - Duration.sum of ( - map each period among periods to - if date_of_sale_or_exchange <= period.begin + 5 year then - period.end - period.begin - else - ( - if date_of_sale_or_exchange >= period.end + 5 year then - 0 day - else ((period.end + 5 year) - date_of_sale_or_exchange) - ) - ) + Duration.sum of + ( + map each period among periods to + if date_of_sale_or_exchange <= period.begin + 5 year then + period.end - period.begin + else + ( + if date_of_sale_or_exchange >= period.end + 5 year then + 0 day + else ((period.end + 5 year) - date_of_sale_or_exchange) + ) + ) # Regulation 1.121-1(c)(1): 2 years = 730 days # Regulation 1.121-1(c)(1): the periods of ownage and usage