def test_corrections(): years = [2006, 2007, 2008, 2009] df = get_denombrements_fiscaux_data_frame(years=years) index_by_variable_name = create_index_by_variable_name(formula_by_variable_name, level_2_formula_by_variable_name) test_by_variable = dict( # Correction of f5io in 2008 in Agrégats IPP benefices_agricoles_forfait_imposables=[ {"year": 2006, "target": 896512850}, {"year": 2008, "target": 883970587}, ], benefices_agricoles_reels_imposables=[ {"year": 2006, "target": 5150417953}, {"year": 2008, "target": 6515953706}, ], benefices_agricoles_reels_sans_cga_imposables=[{"year": 2006, "target": 165830038}], benefices_agricoles_reels_deficits=[{"year": 2006, "target": 519217942}], benefices_agricoles_reels_sans_cga_deficits=[{"year": 2006, "target": 208934263}], deficits_industriels_commerciaux_professionnels=[{"year": 2006, "target": 1427052021}], deficits_industriels_commerciaux_non_professionnels=[{"year": 2006, "target": 301194784}], plus_values_mobilieres_stock_options=[{"year": 2008, "target": 228873359}], ) def assert_value_construction(variable_name, test): year = test["year"] target = test["target"] value = get_or_construct_value(df, variable_name, index_by_variable_name, years=years)[0].loc[year] assert all(value == target), "{} for {}: got {} instead of {}".format(variable_name, year, value.values, target) for variable_name, tests in test_by_variable.iteritems(): for test in tests: yield assert_value_construction, variable_name, test
def test_run_through(): years = [2006, 2007, 2008, 2009] df = get_denombrements_fiscaux_data_frame(years=years) index_by_variable_name = create_index_by_variable_name( formula_by_variable_name, level_2_formula_by_variable_name) variable_name = 'interets_imposes_au_prelevement_liberatoire' get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = 'dividendes_imposes_au_prelevement_liberatoire' get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = 'revenus_imposes_au_prelevement_liberatoire' get_or_construct_value(df, variable_name, index_by_variable_name, years=years, fill_value=0) variable_name = 'assurances_vie_imposees_au_prelevement_liberatoire' get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = 'f2da' get_or_construct_value(df, variable_name, index_by_variable_name, years=years)
def test_run_through(): years = [2006, 2007, 2008, 2009] df = get_denombrements_fiscaux_data_frame(years=years) index_by_variable_name = create_index_by_variable_name(formula_by_variable_name, level_2_formula_by_variable_name) variable_name = "interets_imposes_au_prelevement_liberatoire" get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = "dividendes_imposes_au_prelevement_liberatoire" get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = "revenus_imposes_au_prelevement_liberatoire" get_or_construct_value(df, variable_name, index_by_variable_name, years=years, fill_value=0) variable_name = "assurances_vie_imposees_au_prelevement_liberatoire" get_or_construct_value(df, variable_name, index_by_variable_name, years=years) variable_name = "f2da" get_or_construct_value(df, variable_name, index_by_variable_name, years=years)
def build_irpp_tables(years = None, fill_value = numpy.NaN): assert years is not None assert isinstance(years, list) raw_data = get_denombrements_fiscaux_data_frame(years = years, fill_value = 0) aggregates = build_aggregates( raw_data, formula_by_variable_name, level_2_formula_by_variable_name = level_2_formula_by_variable_name, years = years, fill_value = fill_value, ) data_frame_by_irpp_table_name = collections.OrderedDict([ # 1. Tableau IRPP1: Les revenus figurant dans les déclarations de revenus ('irpp_1', aggregates[[ 'salaires', 'salaires_imposables', 'heures_supplementaires', # TODO # 'revenus_d_activite_non_salariee' # 'ba', # 'bic', # 'bnc', # 'revenus_activite_non_salariee_exoneres', 'revenus_de_remplacement', 'pensions_de_retraite', 'allocations_chomage', 'revenus_fonciers', 'revenus_fonciers_regime_normal', 'revenus_fonciers_micro_foncier', 'revenus_financiers', 'frais_reels', 'pensions_alimentaires_percues', ]]), # 2. Tableau IRPP2: Détails des revenus financiers (intérêts, dividendes, plus-values) figurant dans les # déclations de revenus (imposition au barème, imposition au prélèvement forfaitaire libératoire (PL) et # plus-values) ('irpp_2', aggregates[[ 'revenus_imposes_au_bareme', 'dividendes_imposes_au_bareme', 'interet_imposes_au_bareme', 'assurances_vie_imposees_au_bareme', 'revenus_imposes_au_prelevement_liberatoire', 'dividendes_imposes_au_prelevement_liberatoire', 'interets_imposes_au_prelevement_liberatoire', 'assurances_vie_imposees_au_prelevement_liberatoire', 'plus_values', 'revenus_financiers', 'revenus_financiers_hors_plus_values' ]]), # 3. Tableau IRPP3: Plus-values mobilières et professionnelles ('irpp_3', aggregates[[ 'plus_values', 'plus_values_mobilieres', 'plus_values_mobilieres_regime_normal', 'plus_values_mobilieres_stock_options', 'plus_values_mobilieres_retraite_dirigeant', 'plus_values_professionnelles', 'plus_values_professionnelles_regime_normal', 'plus_values_professionnelles_retraite_dirigeant', ]]), ('irpp_4', aggregates[[ 'revenus_d_activite_non_salariee', 'benefices_agricoles', 'benefices_agricoles_bruts', 'deficits_agricoles', 'benefices_industriels_commerciaux', 'benefices_industriels_commerciaux_bruts', 'deficits_industriels_commerciaux', # 'bnc', # 'revenus_activite_non_salariee_exoneres', ]]), # ('irpp_5_a', aggregates[[ # 'benefices_agricoles', # 'benefices_agricoles_forfait_exoneres', # 'benefices_agricoles_forfait_imposables', # 'benefices_agricoles_reels_exoneres', # 'benefices_agricoles_reels_imposables', # 'benefices_agricoles_reels_deficits', # 'benefices_agricoles_reels_sans_cga_exoneres', # 'benefices_agricoles_reels_sans_cga_imposables', # 'benefices_agricoles_reels_sans_cga_deficits', # ]]) ]) return data_frame_by_irpp_table_name
def test_corrections(): years = [2006, 2007, 2008, 2009] df = get_denombrements_fiscaux_data_frame(years=years) index_by_variable_name = create_index_by_variable_name( formula_by_variable_name, level_2_formula_by_variable_name) test_by_variable = dict( # Correction of f5io in 2008 in Agrégats IPP benefices_agricoles_forfait_imposables=[ { 'year': 2006, 'target': 896512850 }, { 'year': 2008, 'target': 883970587 }, ], benefices_agricoles_reels_imposables=[ { 'year': 2006, 'target': 5150417953 }, { 'year': 2008, 'target': 6515953706 }, ], benefices_agricoles_reels_sans_cga_imposables=[ { 'year': 2006, 'target': 165830038 }, ], benefices_agricoles_reels_deficits=[ { 'year': 2006, 'target': 519217942 }, ], benefices_agricoles_reels_sans_cga_deficits=[ { 'year': 2006, 'target': 208934263 }, ], deficits_industriels_commerciaux_professionnels=[ { 'year': 2006, 'target': 1427052021 }, ], deficits_industriels_commerciaux_non_professionnels=[ { 'year': 2006, 'target': 301194784 }, ], plus_values_mobilieres_stock_options=[{ 'year': 2008, 'target': 228873359 }], ) def assert_value_construction(variable_name, test): year = test['year'] target = test['target'] value = get_or_construct_value(df, variable_name, index_by_variable_name, years=years)[0].loc[year] assert all(value == target), "{} for {}: got {} instead of {}".format( variable_name, year, value.values, target) for variable_name, tests in test_by_variable.iteritems(): for test in tests: yield assert_value_construction, variable_name, test
def build_irpp_tables(years = None, fill_value = numpy.NaN): assert years is not None assert isinstance(years, list) raw_data = get_denombrements_fiscaux_data_frame(years = years, fill_value = 0) aggregates = build_aggregates( raw_data, formula_by_variable_name, level_2_formula_by_variable_name = level_2_formula_by_variable_name, years = years, fill_value = fill_value, ) data_frame_by_irpp_table_name = collections.OrderedDict([ # 1. Tableau IRPP1: Les revenus figurant dans les déclarations de revenus ('irpp_1', aggregates[[ 'salaires', # TODO # 'revenus_d_activite_non_salariee' # 'ba', # 'bic', # 'bnc', # 'revenus_activite_non_salariee_exoneres', 'revenus_de_remplacement', 'pensions_de_retraite', 'allocations_chomage', 'revenus_fonciers', 'revenus_fonciers_regime_normal', 'revenus_fonciers_micro_foncier', 'revenus_financiers' ]]), # 2. Tableau IRPP2: Détails des revenus financiers (intérêts, dividendes, plus-values) figurant dans les # déclations de revenus (imposition au barème, imposition au prélèvement forfaitaire libératoire (PL) et # plus-values) ('irpp_2', aggregates[[ 'revenus_imposes_au_bareme', 'dividendes_imposes_au_bareme', 'interet_imposes_au_bareme', 'assurances_vie_imposees_au_bareme', 'revenus_imposes_au_prelevement_liberatoire', 'dividendes_imposes_au_prelevement_liberatoire', 'interets_imposes_au_prelevement_liberatoire', 'assurances_vie_imposees_au_prelevement_liberatoire', 'plus_values', 'revenus_financiers', 'revenus_financiers_hors_plus_values' ]]), # 3. Tableau IRPP3: Plus-values mobilières et professionnelles ('irpp_3', aggregates[[ 'plus_values', 'plus_values_mobilieres', 'plus_values_mobilieres_regime_normal', 'plus_values_mobilieres_stock_options', 'plus_values_mobilieres_retraite_dirigeant', 'plus_values_professionnelles', 'plus_values_professionnelles_regime_normal', 'plus_values_professionnelles_retraite_dirigeant', ]]), ('irpp_4', aggregates[[ 'revenus_d_activite_non_salariee', 'benefices_agricoles', 'benefices_agricoles_bruts', 'deficits_agricoles', 'benefices_industriels_commerciaux', 'benefices_industriels_commerciaux_bruts', 'deficits_industriels_commerciaux', # 'bnc', # 'revenus_activite_non_salariee_exoneres', ]]), # ('irpp_5_a', aggregates[[ # 'benefices_agricoles', # 'benefices_agricoles_forfait_exoneres', # 'benefices_agricoles_forfait_imposables', # 'benefices_agricoles_reels_exoneres', # 'benefices_agricoles_reels_imposables', # 'benefices_agricoles_reels_deficits', # 'benefices_agricoles_reels_sans_cga_exoneres', # 'benefices_agricoles_reels_sans_cga_imposables', # 'benefices_agricoles_reels_sans_cga_deficits', # ]]) ]) return data_frame_by_irpp_table_name