Skip to content
Snippets Groups Projects
Commit dc011e6e authored by clallemand's avatar clallemand
Browse files

Adapte set_dotations_enveloppes pour l'injection des valeurs en N

parent a5af3c08
Branches
Tags
1 merge request!16Corrections data 2024
......@@ -35,27 +35,26 @@ def set_simulation_inputs(simulation, data, period):
return simulation
def set_dotations_enveloppes_previous_year(simulation, data, current_year):
NOMBRE_TOTAL_COMMUNES_CURRENT_YEAR = len(data)
PREVIOUS_YEAR = current_year - 1
PARAMETERS_PREVIOUS_YEAR = simulation.tax_benefit_system.parameters(PREVIOUS_YEAR)
def set_dotations_enveloppes(simulation, data, year):
NOMBRE_TOTAL_COMMUNES = len(data)
PARAMETERS = simulation.tax_benefit_system.parameters(year)
# Fix bug NaN DSU
dsu_montant_enveloppe_metropole_previous_year = PARAMETERS_PREVIOUS_YEAR.dotation_solidarite_urbaine.montant.metropole
simulation.set_input('dsu_montant_total', PREVIOUS_YEAR, full(NOMBRE_TOTAL_COMMUNES_CURRENT_YEAR, dsu_montant_enveloppe_metropole_previous_year))
dsu_montant_enveloppe_metropole = PARAMETERS.dotation_solidarite_urbaine.montant.metropole
simulation.set_input('dsu_montant_total', year, full(NOMBRE_TOTAL_COMMUNES, dsu_montant_enveloppe_metropole))
# fin fix
# Fix montant DSR
dsr_cible_montant_enveloppe_metropole_previous_year = PARAMETERS_PREVIOUS_YEAR.dotation_solidarite_rurale.cible.montant # métropole
simulation.set_input('dsr_montant_total_fraction_cible', PREVIOUS_YEAR, full(NOMBRE_TOTAL_COMMUNES_CURRENT_YEAR, dsr_cible_montant_enveloppe_metropole_previous_year))
dsr_cible_montant_enveloppe_metropole = PARAMETERS.dotation_solidarite_rurale.cible.montant # métropole
simulation.set_input('dsr_montant_total_fraction_cible', year, full(NOMBRE_TOTAL_COMMUNES, dsr_cible_montant_enveloppe_metropole))
# (constat 2024 : avec ce seul set_input enveloppe DSR 83% des communes ont une DSR calculée > 0)
dsr_bourg_centre_montant_enveloppe_metropole_previous_year = PARAMETERS_PREVIOUS_YEAR.dotation_solidarite_rurale.bourg_centre.montant # métropole
simulation.set_input('dsr_montant_total_fraction_bourg_centre', PREVIOUS_YEAR, [dsr_bourg_centre_montant_enveloppe_metropole_previous_year]) # entité État
dsr_bourg_centre_montant_enveloppe_metropole = PARAMETERS.dotation_solidarite_rurale.bourg_centre.montant # métropole
simulation.set_input('dsr_montant_total_fraction_bourg_centre', year, [dsr_bourg_centre_montant_enveloppe_metropole]) # entité État
# (constat 2024 : à l'ajout de ce set_input sans effet sur taux global DSR > 0)
dsr_perequation_montant_enveloppe_metropole_previous_year = PARAMETERS_PREVIOUS_YEAR.dotation_solidarite_rurale.perequation.montant # métropole
simulation.set_input('dsr_montant_total_fraction_perequation', PREVIOUS_YEAR, full(NOMBRE_TOTAL_COMMUNES_CURRENT_YEAR, dsr_perequation_montant_enveloppe_metropole_previous_year))
dsr_perequation_montant_enveloppe_metropole = PARAMETERS.dotation_solidarite_rurale.perequation.montant # métropole
simulation.set_input('dsr_montant_total_fraction_perequation', year, full(NOMBRE_TOTAL_COMMUNES, dsr_perequation_montant_enveloppe_metropole))
# (constat 2024 : à l'ajout ce set_input 95% des communes ont une DSR calculée > 0, soit +12%)
# fin fix
......@@ -101,11 +100,7 @@ def set_simulation_previous_year_inputs(simulation, data_current_year, data_prev
# initialise les variables d'enveloppes N-1 grâce aux paramètres
# (pour que N puisse être calculé en fonction de l'augmentation d'enveloppe)
simulation = set_dotations_enveloppes_previous_year(simulation, data_current_year, period)
# initialise les variables d'enveloppe N pour la DSR fraction bourg-centre, car le calcul de la variable ne fonctionne qu'en mode PLF
dsr_centre_bourg_montant_enveloppe_metropole_year = simulation.tax_benefit_system.parameters(period).dotation_solidarite_rurale.bourg_centre.montant # métropole
simulation.set_input('dsr_montant_total_fraction_bourg_centre', period, [dsr_centre_bourg_montant_enveloppe_metropole_year])
simulation = set_dotations_enveloppes(simulation, data_current_year, period-1)
return simulation
......@@ -130,5 +125,7 @@ def create_simulation_with_data(model, period, data, data_previous_year=None):
logger.warning("Creating simulation without previous year data.")
else:
simulation = set_simulation_previous_year_inputs(simulation, data, data_previous_year, period)
# on initialise les variables d'enveloppe pour N aussi
simulation = set_dotations_enveloppes(simulation, data, period)
return simulation
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment