1fe671facb024bd40976bbcc840ffb873199cd76
[auf_rh_dae.git] / project / dae / templates / dae / poste.html
1 {% extends 'base.html' %}
2
3 {% block title %}RH - DAE{% endblock %}
4 {% block titre %}Ressources humaines{% endblock %}
5 {% block sous_titre %}
6 Demande d'autorisation d'embauche
7 {% endblock %}
8
9 {% block extrahead %}
10 <script src="{{ MEDIA_URL }}js/jquery-1.5.1.min.js"
11 type="text/javascript"></script>
12 <script src="{{ MEDIA_URL }}js/jquery-ui-1.8.11.custom.min.js"
13 type="text/javascript"></script>
14 <link href="{{ MEDIA_URL }}/css/redmond/jquery-ui-1.8.11.custom.css"
15 rel="stylesheet" />
16
17 <style>
18 h1.section {background-color: #D0E8F8; text-align: center; color: #5F5F5F; margin: 50px 0px 26px 0px; border-bottom: 3px solid #BBD8EC; padding: 4px;}
19 .row {padding: 10px 0px; clear: both; display:block;}
20 .row * {float: left; margin: 0px; padding: 0px; margin-right: 4px;}
21 .row li {list-style-type: none;}
22 .underline {text-decoration: underline;}
23 .clear {display: block; clear: both;}
24 .note {text-decoration: underline; font-style: italic; margin-left: 12px;}
25 .info {font-size:13px; font-style: italic;}
26 .noborder {border:none; margin:0; padding; 0}
27 tr.noborder td {border:none; padding-left: 0;}
28 </style>
29 {% endblock %}
30
31 {% block main %}
32 <h1>Demande d'autorisation de création de poste</h1>
33
34 <form action="" method="post">
35 <fieldset>
36 <h2>
37 {% if new %}
38 Nouveau poste
39 {% else %}
40 Poste existant : {{ poste.nom }} ({{ poste.implantation.nom }})
41 {% endif %}
42 </h2>
43 <table>
44 <tbody>
45 <tr>
46 <th>{{ form.poste.label_tag }} :<br />{{ form.poste.errors }}</th>
47 <td>{{ form.poste }}</td>
48 </tr>
49 <tr>
50 <th>{{ form.nom.label_tag }} :<br />{{ form.nom.errors }}</th>
51 <td>{{ form.nom }}</td>
52 </tr>
53 <tr>
54 <th>{{ form.type_poste.label_tag }} :<br />{{ form.type_poste.errors }}</th>
55 <td>{{ form.type_poste }}</td>
56 </tr>
57 <tr>
58 <th>{{ form.implantation.label_tag }} :<br />{{ form.implantation.errors }}</th>
59 <td>{{ form.implantation }}</td>
60 </tr>
61 <tr>
62 <th>{{ form.service.label_tag }} :<br />{{ form.service.errors }}</th>
63 <td>{{ form.service }}</td>
64 </tr>
65 <tr>
66 <th>{{ form.responsable.label_tag }} :<br />{{ form.responsable.errors }}</th>
67 <td>{{ form.responsable }}</td>
68 </tr>
69 </tbody>
70 </table>
71 </fieldset>
72
73 <fieldset>
74 <h2>Recrutement</h2>
75 <table>
76 <tbody>
77 <tr>
78 <th>{{ form.statut_residence.label_tag }} :<br />{{ form.statut_residence.errors }}</th>
79 <td>
80 <span class="row">
81 {{ form.statut_residence }}
82 {{ form.mise_a_disposition.label_tag }}
83 {{ form.mise_a_disposition.errors }}
84 {{ form.mise_a_disposition }}
85 </span>
86 </td>
87 </tr>
88 <tr>
89 <th>{{ form.appel.label_tag }} :<br />{{ form.appel.errors }}</th>
90 <td>
91 <span class="row">
92 {{ form.appel }}
93 </span>
94 </td>
95 </tr>
96 </tbody>
97 </table>
98 </fieldset>
99
100 <fieldset>
101 <h2>Durée prévue du poste </h2>
102 <span class="info">Indépendamment du titulaire du poste</span>
103 <table>
104 <tbody>
105 <tr>
106 <th rowspan="2">Durée :</th>
107 <td>du</td>
108 <td>
109 {{ form.date_debut }}<br />
110 <span class="info">({{form.date_debut.help_text }})</span><br />
111 {{ form.date_debut.errors }}
112 </td>
113 <td> au </td>
114 <td>
115 {{ form.date_fin }}<br />
116 <span class="info">({{form.date_fin.help_text }})</span><br />
117 {{ form.date_fin.errors }}
118 </td>
119 </tr>
120 <tr>
121 <td colspan="4" class="info">Pour une durée indéterminée, spécifier uniquement la date de début.</td>
122 </tr>
123 <tr>
124 <th>{{ form.regime_travail.label_tag }} :<br />{{ form.regime_travail.errors }}</th>
125 <td colspan="4">
126 {{ form.regime_travail }}
127 <span class="info">{{ form.regime_travail.help_text }}</span>
128 </td>
129 </tr>
130 <tr>
131 <th>
132 {{ form.regime_travail_nb_heure_semaine.label_tag }} :<br />
133 {{ form.regime_travail_nb_heure_semaine.errors }}
134 </th>
135 <td colspan="4">{{ form.regime_travail_nb_heure_semaine }}</td>
136 </tr>
137 </tbody>
138 </table>
139 </fieldset>
140
141 <fieldset>
142 <h2>Classement du poste</h2>
143 <table>
144 <tbody>
145 <tr>
146 <th></th>
147 <th>Échelon AUF</th>
148 <th>Coefficient</th>
149 <th>Valeur du point</th>
150 <th>Devise</th>
151 <th colspan="2">Salaire de base</th>
152 <th colspan="2">Indemnité, responsabilité (le cas échéant)</th>
153 <th colspan="2">Autres</th>
154 <th colspan="2">TOTAL</th>
155 <th colspan="2">Conversion EUR</th>
156 </tr>
157 <tr>
158 <th>Minimum</th>
159 <td>{{ form.classement_min }}</td>
160 <td>{{ form.coefficient_min }}</td>
161 <td>
162 {{ form.valeur_point_min }}
163 {{ form.valeur_point_min.errors }}
164 </td>
165 <td>
166 {{ form.devise_min }}
167 {{ form.devise_min.errors }}
168 </td>
169 <td>{{ form.salaire_min }}</td>
170 <td><span class="devise_min_code">EUR</span></td>
171 <td>{{ form.indemn_min }}</td>
172 <td><span class="devise_min_code">EUR</span></td>
173 <td>{{ form.autre_min }}</td>
174 <td><span class="devise_min_code">EUR</span></td>
175 <td id="total_min"></td>
176 <td><span class="devise_min_code">EUR</span></td>
177 <td id="total_min_eur"></td>
178 <td></td>
179 </tr>
180 <tr>
181 <th>Maximun</th>
182 <td>{{ form.classement_max }}</td>
183 <td>{{ form.coefficient_max }}</td>
184 <td>
185 {{ form.valeur_point_max }}
186 {{ form.valeur_point_max.errors }}
187 </td>
188 <td>
189 {{ form.devise_max }}
190 {{ form.devise_max.errors }}
191 </td>
192 <td>{{ form.salaire_max }}</td>
193 <td><span class="devise_max_code">EUR</span></td>
194 <td>{{ form.indemn_max }}</td>
195 <td><span class="devise_max_code">EUR</span></td>
196 <td>{{ form.autre_max }}</td>
197 <td><span class="devise_max_code">EUR</span></td>
198 <td id="total_max"></td>
199 <td><span class="devise_max_code">EUR</span></td>
200 <td id="total_max_eur">??</td>
201 <td></td>
202 </tr>
203 </tbody>
204 </table>
205
206 <p class="info">N.B Conversion en EUROS au taux de change budgétaire</p>
207 </fieldset>
208
209 {% if new %}
210 <fieldset>
211 <h2>Éléments de comparaison</h2>
212 <p class="info">Compléter uniquement lors de la création d'un poste</p>
213 <table>
214 <tbody>
215 <tr>
216 <th></th>
217 <th>Locale</th>
218 <th>Université</th>
219 <th>Fonction publique</th>
220 <th>ONG</th>
221 <th>Autre</th>
222 </tr>
223 <tr>
224 <th>Minimum</th>
225 <td>{{ form.comp_locale_min }}</td>
226 <td>{{ form.comp_universite_min }}</td>
227 <td>{{ form.comp_fonctionpub_min }}</td>
228 <td>{{ form.comp_ong_min }}</td>
229 <td>{{ form.comp_autre_min }}</td>
230 </tr>
231 <tr>
232 <th>Maximum</th>
233 <td>{{ form.comp_locale_max }}</td>
234 <td>{{ form.comp_universite_max }}</td>
235 <td>{{ form.comp_fonctionpub_max }}</td>
236 <td>{{ form.comp_ong_max }}</td>
237 <td>{{ form.comp_autre_max }}</td>
238 </tr>
239 </tbody>
240 </table>
241 <p class="info">N.B Conversion en EUROS au taux de change budgétaire</p>
242 </fieldset>
243 {% endif %}
244
245 {% comment %}
246 <h1 class="section clear">SECTION 2 - PERSONNEL ENGAGÉ</h1>
247 <div class="row"></div>
248
249 <h1 class="section">SECTION 3 - COÛT GLOBAL</h1>
250 <div class="row"></div>
251
252 <h1 class="section">SECTION 4 - JUSTIFICATION DE LA DEMANDE (OBLIGATOIRE)</h1>
253 <div class="row"></div>
254 {% endcomment %}
255 <input type="submit" name="save" value="Sauvegarder" />
256 </form>
257
258 <fieldset>
259 <h2>Financement</h2>
260
261 <table cellspacing="0" id="financing">
262 <tr>
263 <th>Type</th>
264 <th>Montant</th>
265 <th>Devise</th>
266 <th>Pourcentage</th>
267 <th>Commentaire</th>
268 <th></th>
269 </tr>
270 {% for fin in poste.financements.all %}
271 <tr>
272 <td>{{ fin.get_type_display }}</td>
273 <td>{{ fin.montant }}</td>
274 <td>
275 {% comment %}
276 {{ fin.devise }}
277 {% endcomment %}
278 </td>
279 <td>{{ fin.pourcentage }}</td>
280 <td>{{ fin.commentaire }}</td>
281 <td><a href="{% url financement poste_key fin.id %}">Modifier</a></td>
282 </tr>
283 {% empty %}
284 <tr>
285 <td colspan="5">
286 {% if new %}
287 Vous devez enregister ce nouveau poste avant de pouvoir spécifier
288 la ou les sources de financement.
289 {% else %}
290 Aucun financement au registre
291 {% endif %}
292 </td>
293 </tr>
294 {% endfor %}
295 </table>
296 {% if not new %}
297 <a href="{% url financement poste_key %}" class="new">
298 Ajouter une source de financement
299 </a>
300 {% endif %}
301
302 <div id="financing-form"></div>
303 </fieldset>
304
305 <script type="text/javascript">
306 $('#id_poste').change(function() {
307 window.location = '{% url poste %}/' + $(this).val();
308 });
309 $('#financing a, a.new').click(function() {
310 $('#financing-form').load($(this).attr('href') + '?ajax=1')
311 .dialog({
312 modal: true,
313 height: 500,
314 width: 550
315 });
316 return false;
317 });
318
319 /* CLASSEMENT MIN */
320 $(document).ready(function() {
321 valeur_min = '<input type="hidden" id="valeur_min" name="valeur_min" value="0" disabled="disabled">'
322 devise_min_code = '<input type="hidden" id="devise_min_code" name="devise_min_code" value="5" disabled="disabled">'
323 $('#id_valeur_point_min').after(valeur_min)
324 $('#id_devise_min').after(devise_min_code)
325 });
326 /* binds */
327 $('#id_coefficient_min').bind('coeff_min_modified', function(){
328 $('#id_salaire_min').trigger('update_salaire_min');
329 });
330 $('.devise_min_code').bind('update_devise_min_code', function(){
331 devise_code = $('#devise_min_code').val();
332 $('.devise_min_code').empty();
333 $('.devise_min_code').text(devise_code);
334 });
335 $('#id_salaire_min').bind('update_salaire_min', function(){
336 valeur = $('#valeur_min').val();
337 coeff = $('#id_coefficient_min').val();
338 salaire = coeff * valeur;
339 salaire = clean_float(salaire);
340 $(this).val(salaire);
341 $('#total_min').trigger('update_total_min');
342 });
343 $('#total_min').bind('update_total_min', function(){
344 total = 0;
345 salaire = $('#id_salaire_min').val();
346 indemn = $('#id_indemn_min').val();
347 autre = $('#id_autre_min').val();
348 salaire = clean_float(salaire);
349 indemn = clean_float(indemn);
350 autre = clean_float(autre);
351 total = salaire + indemn + autre;
352 $(this).empty();
353 $(this).text(total.toFixed(2));
354 });
355 /* change */
356 $('#id_coefficient_min').change(function(){
357 $(this).trigger('coeff_min_modified');
358 });
359 $('#id_classement_min').change(function() {
360 classement = $(this).val();
361 url = "{% url dae_coefficient %}";
362 $.post(url, {'classement':classement}, function(data){
363 $('#id_coefficient_min').val(data["coefficient"]);
364 $('#id_coefficient_min').trigger('coeff_min_modified');
365 }, 'json');
366 });
367 $('#id_valeur_point_min').change(function() {
368 url_valeur = "{% url dae_valeur %}";
369 url_devise = "{% url dae_devise %}";
370 $.post(url_valeur, {'valeur_point':$(this).val()}, function(data){
371 $('#valeur_min').val(data["valeur"]);
372 $('#id_salaire_min').trigger('update_salaire_min');
373 }, 'json');
374 $.post(url_devise, {'valeur_point':$(this).val()}, function(data){
375 $('#id_devise_min').val(data["devise"]);
376 $('#devise_min_code').val(data["devise_code"]);
377 $('.devise_min_code').trigger('update_devise_min_code');
378 }, 'json');
379 });
380 $('#id_devise_min').change(function(){
381 url_devise_code = "{% url dae_devise_code %}";
382 $.post(url_devise_code, {'devise':$(this).val()}, function(data){
383 $('#devise_min_code').val(data["devise_code"]);
384 $('.devise_min_code').trigger('update_devise_min_code');
385 }, 'json');
386 });
387 $('#id_salaire_min').change(function(){
388 $('#total_min').trigger('update_total_min');
389 });
390 $('#id_indemn_min').change(function(){
391 $('#total_min').trigger('update_total_min');
392 });
393 $('#id_autre_min').change(function(){
394 $('#total_min').trigger('update_total_min');
395 });
396
397 /* CLASSEMENT MAX */
398 $('#id_classement_max').change(function() {
399 url = "{% url dae_coefficient %}";
400 $.post(url, {'classement':$(this).val()}, function(data){
401 $('#id_coefficient_max').val(data["coefficient"]);
402 }, 'json');
403 });
404
405 /* helpers */
406 function clean_float(value){
407 if (value == undefined)
408 output = 0;
409 else
410 output = parseFloat(value);
411 output = Math.round(output*100)/100;
412 return output;
413 }
414
415 </script>
416 {% endblock %}