1 /*******************************************************************************
3 *******************************************************************************/
6 function elements_comparaison(devise_id
) {
7 var chargement_devise
= $
.getJSON("/dae/devise/code", {'devise': devise_id
});
8 chargement_devise
.success(function(data
) {
12 $
('#elements-comparaison input').each(function() {
14 var montant
= data
.taux_euro
* parseFloat(input
.val());
15 input
.parent().find(".devise_euro").html(clean_float(montant
) + " EUR");
16 input
.parent().find(".devise").html(data
.devise_code
);
19 chargement_devise
.error(function(data
) {
20 alert(data
.responseText
);
24 /* filter les postes en fonction de l'implantation choisie */
25 function charger_postes(implantation_id
) {
26 var selected
= $
("#id_poste :selected").val();
27 var params
= {'implantation_id' : implantation_id
};
28 var chargement_p
= $
.getJSON('/dae/liste_postes', params
);
29 chargement_p
.success(function(data
) {
33 $
.each(data
, function(index
) {
35 if (data
[index][0] == selected
)
36 select
= " selected=selected ";
37 options
+= '<option ' + select
+ ' value="' + data
[index][0] + '">' + data
[index][1] + '</option>';
40 $
("#id_poste").html(options
);
44 /* Construction dynamique des valeurs de point en fonction de l'implantation choisie */
45 function charger_valeurs_point(implantation_id
) {
46 var params
= {'implantation_id' : implantation_id
};
47 var chargement_vp
= $
.getJSON('/dae/liste_valeurs_point', params
);
48 chargement_vp
.success(function(data
) {
52 $
.each(data
, function() {
53 options
+= '<option value="' + this.id
+ '">' + this.label
+ '</option>';
56 $
("#id_valeur_point_min").html(options
);
57 $
("#id_valeur_point_max").html(options
);
58 alert("Les valeurs de point et les postes ont été ajustés en fonction de cette implantation.");
62 /* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
63 est appelée À chaque modification du formulaire de classement. */
64 function recalculer_ligne(element
) {
65 /* on laisse la possibilité de choisir le salaire manuellement,
66 la réinitialisation du salaire de base s'opère dès qu'on choisi
67 un nouveau classement. */
68 if (element
.attr('id').match('id_classement*'))
69 salaire_manuel
= false;
71 salaire_manuel
= true;
73 var ligne
= element
.parents("tr");
74 var inputs
= ligne
.find("input, select");
76 var valeur_point_input
;
77 inputs
.each(function() {
80 if (input
.attr('id').match('id_classement*')) {
81 classement_id
= input
.val();
83 if (input
.attr('id').match('id_valeur_point*')) {
84 valeur_point_input
= input
;
86 if (input
.attr('id').match('id_salaire*')) {
87 salaire_input
= input
;
88 salaire
= clean_float(input
.val())
90 if (input
.attr('id').match('id_indemn*')) {
91 indemn
= clean_float(input
.val())
93 if (input
.attr('id').match('id_autre*')) {
94 autre
= clean_float(input
.val())
99 var chargement_coeff
= $
.getJSON("/dae/coefficient", {'classement': classement_id
});
100 chargement_coeff
.success(function(data
){
101 coeff
= data
.coefficient
;
103 /* on suggère un salaire de base en fonction du coefficient et de la valeur du point */
104 valeur_point_text
= valeur_point_input
.find(":selected").text();
105 if (valeur_point_text
== "")
108 valeur_point
= clean_float(valeur_point_text
.split(" ")[0]);
110 if (salaire_manuel
== false) {
111 salaire
= clean_float(valeur_point
* coeff
);
112 salaire_input
.val(salaire
);
115 taux_euro
= parseFloat(ligne
.find(".taux").html())
117 total
= salaire
+ indemn
+ autre
;
118 total_euro
= total
* taux_euro
;
120 ligne
.find(".total-devise").text(clean_float(total
));
121 ligne
.find(".total-euro").text(clean_float(total_euro
));
126 /* recalcule tout le classement */
127 function recalculer_tout() {
128 $
("#classement tr *[name*=salaire]").each(function() {
129 recalculer_ligne($
(this));
133 $
(document
).ready(function() {
135 /* Lorsqu'on choisit un poste dans la liste on recharge la page avec le
136 poste chargé dans la view (grâce à son id dans l'URL).*/
137 $
('#id_poste').change(function() {
138 window
.location
= '/dae/poste/' + $
(this).val();
141 /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
143 Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette sélection */
144 var implantation_id
= $
("#id_implantation").val();
145 $
("#id_implantation").change(function() {
146 var implantation_id
= this.value
;
147 charger_postes(implantation_id
);
148 charger_valeurs_point(implantation_id
);
152 $
('#id_valeur_point_min, #id_valeur_point_max').change(function(e
) {
153 // pas de traitement si aucune valeur de point n'est choisie
154 if (this.value
== '') return;
156 var vp_input
= $
(this);
157 var ligne
= vp_input
.parents("tr").parent(); // en fait on travaille sur tout le tableau dans ce cas!
159 var chargement_devise
= $
.getJSON("/dae/devise", {'valeur_point': this.value
});
160 chargement_devise
.success(function(data
) {
161 var selects
= ligne
.find("select");
162 selects
.each(function() {
164 if (s
.attr('id').match('id_devise*'))
166 ligne
.find(".taux").text(data
.taux_euro
)
167 ligne
.find(".devise_code").text(data
.devise_code
)
170 /* on synchronise les valeurs de points */
171 $
('#id_valeur_point_min, #id_valeur_point_max').each(function() {
173 if (vp
.val() != vp_input
.val()) {
174 vp
.val(vp_input
.val())
180 chargement_devise
.error(function(data
) {
181 alert(data
.responseText
);
186 $
('#id_devise_min, #id_devise_max').change(function(e
) {
188 var ligne
= input
.parents("tr");
189 var chargement_devise
= $
.getJSON("/dae/devise/code", {'devise': this.value
});
190 chargement_devise
.success(function(data
) {
191 ligne
.find(".taux").text(data
.taux_euro
)
192 ligne
.find(".devise_code").text(data
.devise_code
)
193 recalculer_ligne(input
);
195 chargement_devise
.error(function(data
) {
196 alert(data
.responseText
);
197 ligne
.find(".taux").text(0)
198 ligne
.find(".devise_code").text("???")
203 $
('#id_classement_min, #id_classement_max, #classement input, #classement select').change(function(e
) {
204 recalculer_ligne($
(this));
207 /* au chargement, on calcule tout */
210 /* calcul de la différence en mois */
211 $
("#id_date_debut, #id_date_fin").focusout(function() {
216 /* on charge les postes reliés à cette implantation */
217 charger_postes($
("#id_implantation :selected").val());
219 $
('#id_devise_comparaison, #elements-comparaison input').change(function(e
) {
220 elements_comparaison($
('#id_devise_comparaison').val());
222 elements_comparaison($
('#id_devise_comparaison').val());