utilisation de inline formset dans le form pour le financement
[auf_rh_dae.git] / project / media / js / dae-poste.js
CommitLineData
25410b22
OL
1/*******************************************************************************
2* POSTE
3*******************************************************************************/
4
5/* Construction dynamique des valeurs de point en fonction de l'implantation choisie */
6function charger_valeurs_point(implantation_id) {
7 var params = {'implantation_id' : implantation_id};
8 var chargement_vp = $.getJSON('/dae/liste_valeurs_point', params);
9 chargement_vp.success(function(data) {
10 var items = [];
11
12 var options = "";
13 $.each(data, function() {
14 options += '<option value="' + this.id + '">' + this.label + '</option>';
15 });
16
17 $("#id_valeur_point_min").html(options);
18 $("#id_valeur_point_max").html(options);
19 alert("Les valeurs de point on été ajustées en fonction de cette implantation.");
20 });
21}
22
23/* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
24est appelée À chaque modification du formulaire de classement. */
25function recalculer_ligne(element) {
26 var ligne = element.parents("tr");
27 var inputs = ligne.find("input, select");
28 var salaire_input;
29 var valeur_point_input;
30 inputs.each(function() {
31 var input = $(this);
32 if (input.attr('id').match('id_coefficient*')) {
33 coeff = clean_float(input.val())
34 }
35 if (input.attr('id').match('id_valeur_point*')) {
36 valeur_point_input = input;
37 }
38 if (input.attr('id').match('id_salaire*')) {
39 salaire_input = input;
40 salaire = clean_float(input.val())
41 }
42 if (input.attr('id').match('id_indemn*')) {
43 indemn = clean_float(input.val())
44 }
45 if (input.attr('id').match('id_autre*')) {
46 autre = clean_float(input.val())
47 }
48
49 });
50
51 /* on suggère un salaire de base en fonction du coefficient et de la valeur du point */
52 valeur_point_text = valeur_point_input.find(":selected").text();
53 if (valeur_point_text == "")
54 valeur_point = 0;
55 else
56 valeur_point = clean_float(valeur_point_text.split(" ")[0]);
57
58 salaire = clean_float(valeur_point * coeff);
59 salaire_input.val(salaire);
60
61 taux_euro = clean_float(ligne.find(".taux").html())
62 total = 0;
63 total = salaire + indemn + autre;
64 total_euro = total * taux_euro;
65
66 ligne.find(".total-devise").text(total.toFixed(2));
67 ligne.find(".total-euro").text(total_euro.toFixed(2));
68
69}
70
71/* recalcule tout le classement */
72function recalculer_tout() {
73 $("#classement tr *[name*=devise]").each(function() {
74 recalculer_ligne($(this));
75 });
76}
77
78$(document).ready(function() {
79
80 /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
81 sélectionnée.
82 Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette sélection */
83 var implantation_id = $("#id_implantation").val();
84 $("#id_implantation").change(function() {
85 var implantation_id = this.value;
86 charger_valeurs_point(implantation_id);
87 });
88
89
90 $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
91 var vp_input = $(this);
92 var ligne = vp_input.parents("tr").parent(); // en fait on travaille sur tout le tableau dans ce cas!
93
94 var chargement_devise = $.getJSON("/dae/devise", {'valeur_point': this.value});
95 chargement_devise.success(function(data) {
96 var selects = ligne.find("select");
97 selects.each(function() {
98 var s = $(this);
99 if (s.attr('id').match('id_devise*'))
100 s.val(data.devise)
101 ligne.find(".taux").text(data.taux_euro)
102 ligne.find(".devise_code").text(data.devise_code)
103 });
104
105 /* on synchronise les valeurs de points */
106 $('#id_valeur_point_min, #id_valeur_point_max').each(function() {
107 var vp = $(this);
108 if (vp.val() != vp_input.val()) {
109 vp.val(vp_input.val())
110 }
111 });
112
989ec341 113 recalculer_tout();
25410b22
OL
114 });
115 chargement_devise.error(function(data) {
116 alert(data.responseText);
117 });
118
119 });
120
121 $('#id_devise_min, #id_devise_max').change(function(e) {
122 var input = $(this);
123 var ligne = input.parents("tr");
124 var chargement_devise = $.getJSON("/dae/devise/code", {'devise': this.value});
125 chargement_devise.success(function(data) {
126 ligne.find(".taux").text(data.taux_euro)
127 ligne.find(".devise_code").text(data.devise_code)
128 recalculer_ligne(input);
129 });
130 chargement_devise.error(function(data) {
131 alert(data.responseText);
132 ligne.find(".taux").text(0)
133 ligne.find(".devise_code").text("???")
134 });
135
136 });
137
138 $('#id_classement_min, #id_classement_max').change(function(e) {
139 var classement = $(this);
140 var ligne = classement.parents("tr");
141 var chargement_coeff = $.getJSON("/dae/coefficient", {'classement': classement.val()});
142 chargement_coeff.success(function(data){
143 var inputs = ligne.find("input");
144 inputs.each(function() {
145 var input = $(this);
146 if (input.attr('id').match('id_coefficient*'))
147 input.val(data.coefficient);
148 });
149 recalculer_ligne(classement);
150 });
151 chargement_coeff.error(function(data){
152 });
153 });
154
155 /* refresh des totaux à chaque changement quelconque */
156 $('#classement input, #classement select').change(function() {
157 recalculer_ligne($(this));
158 });
159
160 /* au chargement, on calcule tout */
161 recalculer_tout();
162
163});