Skip to content
This repository was archived by the owner on Mar 27, 2019. It is now read-only.

Commit 09f86da

Browse files
committed
Merge pull request #206 from sgmap/salaire-net
Add input salaire net - use new openfisca URL @ beta.gouv.fr
2 parents bd4809d + a3b54b5 commit 09f86da

File tree

5 files changed

+60
-26
lines changed

5 files changed

+60
-26
lines changed

assets/embauche.html

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div class="SGMAPembauche" lang="fr">
22
<section id="input">
3-
<form action="https://openfisca-embauche.sgmap.fr/api/2/formula/accident_du_travail+famille+fnal+versement_transport+agff_salarie+agirc_salarie+agirc_gmp_salarie+apec_salarie+arrco_salarie+chomage_salarie+cotisation_exceptionnelle_temporaire_salarie+vieillesse_plafonnee_salarie+vieillesse_deplafonnee_salarie+mmid_salarie+csg_deductible_salaire+csg_imposable_salaire+crds_salaire+salaire_net_a_payer+salaire_super_brut+ags+agff_employeur+apec_employeur+arrco_employeur+chomage_employeur+cotisation_exceptionnelle_temporaire_employeur+vieillesse_deplafonnee_employeur+vieillesse_plafonnee_employeur+mmid_employeur+contribution_supplementaire_apprentissage+contribution_solidarite_autonomie+formation_professionnelle+participation_effort_construction+taxe_apprentissage+agirc_employeur+agirc_gmp_employeur+allegement_fillon+allegement_cotisation_allocations_familiales+exoneration_cotisations_employeur_apprenti+exoneration_cotisations_employeur_stagiaire+exoneration_cotisations_employeur_jei+credit_impot_competitivite_emploi+financement_organisations_syndicales+prevoyance_obligatoire_cadre+cout_du_travail+aide_premier_salarie+aide_embauche_pme+smic_proratise" method="GET">
3+
<form action="https://embauche.beta.gouv.fr/openfisca/api/2/formula/accident_du_travail+famille+fnal+versement_transport+agff_salarie+agirc_salarie+agirc_gmp_salarie+apec_salarie+arrco_salarie+chomage_salarie+cotisation_exceptionnelle_temporaire_salarie+vieillesse_plafonnee_salarie+vieillesse_deplafonnee_salarie+mmid_salarie+csg_deductible_salaire+csg_imposable_salaire+crds_salaire+salaire_super_brut+ags+agff_employeur+apec_employeur+arrco_employeur+chomage_employeur+cotisation_exceptionnelle_temporaire_employeur+vieillesse_deplafonnee_employeur+vieillesse_plafonnee_employeur+mmid_employeur+contribution_supplementaire_apprentissage+contribution_solidarite_autonomie+formation_professionnelle+participation_effort_construction+taxe_apprentissage+agirc_employeur+agirc_gmp_employeur+allegement_fillon+allegement_cotisation_allocations_familiales+exoneration_cotisations_employeur_apprenti+exoneration_cotisations_employeur_stagiaire+exoneration_cotisations_employeur_jei+credit_impot_competitivite_emploi+financement_organisations_syndicales+prevoyance_obligatoire_cadre+cout_du_travail+aide_premier_salarie+aide_embauche_pme+smic_proratise" method="GET">
44
<div>
55
<select data-sets=".employer_type@textContent">
66
<option value="entreprise" selected>Mon entreprise</option>
@@ -30,9 +30,14 @@
3030
&nbsp;€
3131
</label>
3232
<span class="input-help">Rémunération totale<br>
33-
<em>(min. <span data-source="smic_proratise" data-round>1467</span>)</em>, dont primes.</span>
33+
<em>(min. <span data-source="smic_proratise" data-round>1467</span>)</em>, dont primes.
34+
</span>
35+
<select id="select-salaire-entree" data-sets="#salaire@name">
36+
<option value="salaire_de_base" selected>brut</option>
37+
<option value="salaire_net_a_payer">net</option>
38+
</select>
3439
&nbsp;
35-
<span>brut par mois</span>
40+
<span>par mois</span>
3641
</fieldset>
3742
<br>
3843
<label>à temps
@@ -104,7 +109,11 @@
104109
</p>
105110
<p>
106111
Mon <span data-source="employee">salarié·e</span>
107-
touchera <span data-source="salaire_net_a_payer" data-round title="Salaire net"></span>&nbsp;€
112+
touchera
113+
<span id="salaire-calcule" data-source="salaire_net_a_payer" data-add-source-to-action data-round title="Salaire net">
114+
115+
</span>&nbsp;€
116+
&nbsp;<span id="type-salaire-calcule">net</span>
108117
par <span data-source="period">mois</span>.
109118
</p>
110119
</section>
@@ -199,8 +208,8 @@
199208
<td><span data-source="financement_organisations_syndicales"></span>&nbsp;€</td>
200209
</tr>
201210
<tr>
202-
<th>Prévoyance obligatoire cadre</th>
203-
<td><span data-source="prevoyance_obligatoire_cadre"></span>&nbsp;€</td>
211+
<th>Prévoyance obligatoire cadre</th>
212+
<td><span data-source="prevoyance_obligatoire_cadre"></span>&nbsp;€</td>
204213
</tr>
205214
<tr>
206215
<th>Versement transport</th>

dist/cout-embauche-widget.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/index.js

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ let buffer
1010
function bindToForm(form) {
1111
form.addEventListener('change', UI.reflectParameterChange)
1212

13-
const handleBasicFormChanges = debounce(openFiscaRequestBuilder(form), 300)
13+
const handleBasicFormChanges = debounce(openFiscaRequestBuilder(form), 500)
1414

15+
// Trigger the first request
1516
handleBasicFormChanges()
1617

1718
const handleFormChanges = event => {
18-
switch (event.target.name) {
19-
case 'code_postal_entreprise':
20-
handleCodePostalInput(event.target.value, handleBasicFormChanges)
21-
break
22-
case 'contrat_de_travail':
23-
handleTempsPartielSelect(event.target.value, handleBasicFormChanges)
24-
break
25-
default: handleBasicFormChanges()
26-
}
19+
const {name, id} = event.target
20+
if (name === 'code_postal_entreprise')
21+
return handleCodePostalInput(event.target.value, handleBasicFormChanges)
22+
if (name === 'contrat_de_travail')
23+
return handleTempsPartielSelect(event.target.value, handleBasicFormChanges)
24+
if (id === 'select-salaire-entree')
25+
return handleSalaireSelect(event.target.value, handleBasicFormChanges)
26+
return handleBasicFormChanges()
2727
}
2828

2929
form.addEventListener('change', handleFormChanges)
@@ -94,6 +94,21 @@ function handleTempsPartielSelect(contrat, next) {
9494
next()
9595
}
9696

97+
function handleSalaireSelect(selectedSalaire, next) {
98+
const outputSalaireValue = document.querySelector('#salaire-calcule'),
99+
outputSalaireType = document.querySelector('#type-salaire-calcule'),
100+
correspondence = {
101+
'salaire_de_base': [ 'salaire_net_a_payer', 'net' ],
102+
'salaire_net_a_payer': [ 'salaire_de_base', 'brut' ],
103+
},
104+
[ source, type ] = correspondence[selectedSalaire]
105+
106+
outputSalaireValue.dataset.source = source
107+
outputSalaireType.textContent = type
108+
109+
next()
110+
}
111+
97112
bindToForm(UI.getForm());
98113

99114
[ ...document.querySelectorAll('.SGMAPembauche .js-only') ]

js/openfisca.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,25 @@ const serializeObject = source =>
2121
*/
2222
function request(input, baseUrl, callback) {
2323

24-
const url = baseUrl + '?' + serializeObject(input)
24+
const url = baseUrl + '?' + serializeObject(input),
25+
headers = input['salaire_net_a_payer'] ? {
26+
'x-OpenFisca-Extensions': 'de_net_a_brut',
27+
} : {}
2528

2629
if (!callback)
2730
return url
2831

29-
fetch(url)
30-
.then( response => {
32+
fetch(url, {headers})
33+
.then(response => {
3134
if (!response.ok) {
3235
const error = new Error(response.statusText)
3336
error.response = response
3437
throw error
3538
}
3639
return response.json()
3740
})
38-
.then( json => callback(false, json.values, json))
39-
.catch( error => {
40-
callback(error)
41-
})
41+
.then(json => callback(false, json.values, json))
42+
.catch(callback)
4243
}
4344

4445
/** API function

js/ui.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@ import transForms from './transForms.js'
22

33
const getForm = () => document.querySelector('.SGMAPembauche form')
44

5-
const getOutputVariables = () => getForm().action
5+
function getOutputVariables() {
6+
const baseUrl = getForm().action,
7+
// some of the output variables are chosen dynamically
8+
sourcesToAdd =
9+
[ ...document.querySelectorAll('[data-add-source-to-action]') ]
10+
.map(element => element.dataset.source)
11+
.join('+')
12+
13+
return `${baseUrl}+${sourcesToAdd}`
14+
}
615

716
function collectInput(form) {
817
const input = collectFormFields(form)

0 commit comments

Comments
 (0)