remun clean
[auf_rh_dae.git] / project / media / js / dae-embauche.js
1 /*******************************************************************************
2 * EMBAUCHE
3 *******************************************************************************/
4 function proposition_comparaison(devise_id) {
5 var chargement_devise = $.getJSON("/dae/devise/code", {'devise': devise_id});
6 chargement_devise.success(function(data) {
7 var salaire = $("#id_salaire").val();
8 var montant = parseFloat(data.taux_euro) * parseFloat(salaire);
9 $("#salaire-propose-euros").html(clean_float(montant));
10 });
11 chargement_devise.error(function(data) {
12 alert(data.responseText);
13 });
14 }
15
16 function activateDossierDropDowns() {
17 $('#id_classement, #id_devise').change(loadSalaire);
18 }
19
20 function loadSalaire() {
21 var implantation = $('#implantation').val();
22 var devise = $('#implantation').val();
23 var classement = $('#id_classement').val();
24 if (implantation && devise && classement) {
25 $.getJSON('/dae/salaire/' + implantation + '/' + devise + '/' + classement,
26 function(data) {
27 $('#id_salaire').val(clean_float(data.salaire_devise));
28 $('#id_salaire').trigger('change');
29 });
30 }
31 }
32
33 function round2(n) {
34 return Math.round(n * 100) / 100;
35 }
36
37 function remun_line(input) {
38 var idParts = input.attr('id').split('-');
39 var prefix = idParts[0] + "-" + idParts[1];
40 var field = idParts[2];
41
42 var montant_mensuel = $('#' + prefix + '-montant_mensuel');
43 var montant_annuel = $('#' + prefix + '-montant');
44 var montant_mensuel_euros = $('#' + prefix + '-montant_mensuel_euros');
45 var montant_annuel_euros = $('#' + prefix + '-montant_annuel_euros');
46
47 /* auto calcul a besoin d'un type (autrement ca devient un champs requis)*/
48 if ($('#' + prefix + '-type').val() == '') {
49 montant_mensuel.val('');
50 montant_annuel.val('');
51 montant_mensuel_euros.val('');
52 montant_annuel_euros.val('');
53 return;
54 }
55
56 if (input.attr('id') == montant_mensuel.attr('id') && montant_mensuel.val() != 0) {
57 value = (montant_mensuel.val() * 12);
58 }
59 else {
60 value = (montant_annuel.val());
61 }
62
63 montant_mensuel.val(value / 12);
64 montant_annuel.val(value);
65
66 var devise = $('#' + prefix + '-devise').val();
67 var taux = parseFloat(DEVISES[devise]);
68 if (isNaN(taux)) taux = 0;
69 montant_mensuel_euros.text(value / 12 * taux)
70 montant_annuel_euros.text(value * taux)
71
72 }
73
74 function remun_totaux() {
75 $('#global-cost input[type="text"]').each(function() {
76 remun_line($(this));
77 });
78
79 var total_cout = 0;
80 $("tr.cout td.cumulable").each(function() {
81 total_cout += clean_float($(this).html());
82 });
83 $("#sous-total-cout").html(total_cout);
84
85 var total_aide = 0;
86 $("tr.aide td.cumulable").each(function() {
87 total_aide += clean_float($(this).html());
88 });
89 $("#sous-total-aide").html(total_aide);
90
91 var total = total_cout + total_aide;
92 $("#remun-total").html(total);
93
94 }
95
96
97 activateDossierDropDowns();
98
99 /* Ajout des datespickers sur les inputs loadés via AJAX.
100 On s'assure qu'on est pas dans le cas initial où ils sont déjà ajoutés.
101 (La façon dont c'est fait requiert que les inputs soient uniquement dans la partie AJAX).*/
102 function datepicker() {
103 var date_pickers = $(".datetimeshortcuts");
104 if (date_pickers.length == 0)
105 DateTimeShortcuts.init();
106 }
107
108 function activateEmployeDropDown() {
109 $('#id_employe').change(loadEmploye);
110 }
111
112 function loadEmploye() {
113 var employeUrl = '/dae/employe/' + $(this).val();
114 $('#form-employe').html('<tr><td>Chargement...</td></tr>')
115 .load(employeUrl, activateEmployeDropDown);
116 var dossierUrl = '/dae/dossier/' + $('#poste').val() +
117 '/' + $(this).val();
118 $('#form-dossier').html('<tr><td>Chargement...</td></tr>')
119 .load(dossierUrl, function() {
120 datepicker();
121 activateDossierDropDowns();
122 $("#id_contrat_date_debut, #id_contrat_date_fin").focusout(function() {contrat_mois();});
123 });
124 }
125
126 $(document).ready(function() {
127
128 /* Lorsqu'on choisit un poste dans la liste on recharge la page avec le
129 poste chargé dans la view (grâce à son id dans l'URL).*/
130 $('#id_poste').change(function() {
131 window.location = '/dae/embauche/' + $(this).val();
132 });
133
134 /* on lance le JS au chargement de la page, la toute première fois,
135 puis on cable le change au select pour le rechargement. */
136 //loadEmploye();
137 activateEmployeDropDown();
138
139 /* calcul de la différence en mois */
140 $("#id_contrat_date_debut, #id_contrat_date_fin").focusout(function() {
141 contrat_mois();
142 });
143 contrat_mois();
144
145 /* totaux remu */
146 $('#global-cost input, #global-cost select').change(function() {
147 remun_line($(this));
148 remun_totaux();
149 });
150
151 /* Ajouter une ligne aux couts globals */
152 /*$('#type-remun').change(function() {
153 var dossier_id = $('#dossier').attr('dossier');
154 if ($(this).val() != '') {
155 $('#global-cost').html('<tr><td>Chargement...</td></tr>')
156 .load('/dae/add-remun/' +
157 dossier_id + '/' +
158 $(this).val(), function() {
159 $('#type-remun').val('');
160 });
161 }
162 });
163 */
164 remun_totaux();
165
166 /* Traitement de la recherche AJAX pour les dossiers de comparaison */
167 $(".results_on_deck").bind('added', function() {
168
169 /* récupération du choix dans la liste */
170 var input_id = $(this).attr('id').replace('_on_deck', '');
171 var prefix_dossier_connexe = $(this).attr('id').replace('recherche_on_deck', '');
172 var input = $('#'+input_id);
173 var dossier_id = input.val();
174
175 /* interrogation par AJAX pour récupérer les données du dossier */
176 var chargement_dossier = $.getJSON("/dae/dossier_resume/" + dossier_id);
177 chargement_dossier.success(function(data) {
178 $('#' + prefix_dossier_connexe + 'implantation').val(data['implantation']);
179 $('#' + prefix_dossier_connexe + 'poste').val(data['poste']);
180 $('#' + prefix_dossier_connexe + 'personne').val(data['personne']);
181 $('#' + prefix_dossier_connexe + 'montant').val(data['montant']);
182 $('#' + prefix_dossier_connexe + 'devise').val(data['devise']);
183 $('#' + prefix_dossier_connexe + 'montant_euros').val(data['montant_euros']);
184 });
185 chargement_dossier.error(function(data) {
186 alert(data.responseText);
187 });
188
189 /* on ne veut pas afficher la personne en-dessous */
190 $(this).find('div').remove();
191 input.val('');
192
193 });
194
195 });