Commit 332936a2 authored by David Foucher's avatar David Foucher

Merge branch 'BFC-remu-maj' into 'master'

Bfc remu maj

See merge request !12
parents 85691f3c 73b9503c
Pipeline #2142 passed with stage
in 1 minute and 20 seconds
......@@ -31,6 +31,23 @@ async def simulate(data, financements):
if key.startswith("financement"):
del data[key]
async def simulate_remuneration(data, remunerations):
# Prepare context
flatten(data)
context = Context(data.copy())
routine.extrapolate_context(context)
routine.preprocess(context)
for remuneration in remunerations:
copy = context.copy()
routine.check_remuneration(context, remuneration)
data.update(copy.cleaned_data)
# FIXME (limits of the single-store-all context object)
# Clean keys not meant to be exposed
for key in list(data.keys()):
if key.startswith("remuneration"):
del data[key]
def get_financements(tags=None):
financements = [config.Financement(f) for f in config.FINANCEMENTS]
......
......@@ -5,7 +5,13 @@ from roll.extensions import cors
import ujson as json
from . import VERSION, get_financements, get_remunerations, simulate
from . import (
VERSION,
get_financements,
get_remunerations,
simulate,
simulate_remuneration,
)
from . import routine
from .config import FINANCEMENTS, GLOSSARY, IDCC, NAF, RAW_RULES, SCHEMA
from .context import Context
......@@ -65,8 +71,8 @@ async def simulate_(request, response):
body = {"financements": financements}
if request.query.bool("context", False):
body["context"] = {
k: v for k, v in context.items()
if k in SCHEMA and "label" in SCHEMA[k]}
k: v for k, v in context.items() if k in SCHEMA and "label" in SCHEMA[k]
}
if request.query.bool("scenario", False):
body["scenario"] = make_scenario(context, financements)
response.json = body
......@@ -77,24 +83,10 @@ async def simulate_(request, response):
# TODO : add pointer error for bad region number + test
@app.route("/remuneration", methods=["POST"])
async def remuneration_(request, response):
data = request.json
context = request.json
remunerations = get_remunerations(tags=request.query.list("tags", []))
try:
flatten(data)
context = Context(data.copy())
routine.extrapolate_context(context)
routine.preprocess(context)
for remuneration in remunerations:
copy = context.copy()
routine.check_remuneration(context, remuneration)
data.update(copy.cleaned_data)
# FIXME (limits of the single-store-all context object)
# Clean keys not meant to be exposed
for key in list(data.keys()):
if key.startswith("remuneration"):
del data[key]
await simulate_remuneration(context, remunerations)
except DataError as err:
error = {err.key: err.error}
log_simulate(context, errors=error)
......
......@@ -288,7 +288,7 @@ Scénario: Cas parent isolé
Quand je sélectionne le financement «Action collective financée par la Région»
Alors la rémunération applicable vaut 863.0
Et le montant de l'aide au transport vaut «98,79€ par mois (sous condition)»
Et le montant de l'aide au logement vaut «101,84€ par mois (sous condition)»
Et le montant de l'aide à l'hébergement vaut «101,84€ par mois (sous condition)»
Scénario: Cas non salarié ayant travaillé
......@@ -341,7 +341,7 @@ Scénario: Cas travailleur handicapé
Et c'est un travailleur handicapé
Quand je demande un calcul de financement
Quand je sélectionne le financement «Action collective financée par la Région»
Alors la rémunération applicable vaut 910.02
Alors la rémunération applicable vaut 1001.02
Scénario: Cas travailleur handicapé rémunération > 910
Soit un bénéficiaire et une formation
......@@ -370,7 +370,7 @@ Scénario: Cas travailleur handicapé rémunération
Et c'est un travailleur handicapé
Quand je demande un calcul de financement
Quand je sélectionne le financement «Action collective financée par la Région»
Alors la rémunération applicable vaut 910.02
Alors la rémunération applicable vaut 1001.02
Scénario: Cas ESSFIMO
Soit un bénéficiaire et une formation
......
Fonctionnalité: Rémunérations et aides en Bourgogne-Franche-Comté
Scénario: Rému et aides moins de 18 ans
Soit un bénéficiaire et une formation
Et c'est un demandeur d'emploi
Et l'âge du bénéficiaire vaut 16
Et les codes financeur de la formation valent [«Conseil régional»]
Et la région de la formation vaut «Bourgogne-Franche-Comté»
Quand je demande un calcul de rémunération
Alors la rémunération applicable vaut 455.01
Et une aide à l'hébergement est éligible
Et une aide au transport est éligible
Scénario: Rému et aides plus de 18 ans
Soit un bénéficiaire et une formation
Et c'est un demandeur d'emploi
Et l'âge du bénéficiaire vaut 36
Et les codes financeur de la formation valent [«Conseil régional»]
Et la région de la formation vaut «Bourgogne-Franche-Comté»
Quand je demande un calcul de rémunération