fix redirection dans la liste si on choisi nouveau poste, on ne fait rien
[auf_rh_dae.git] / project / media / js / dae-poste.js
index f1756ce..e471611 100644 (file)
@@ -62,10 +62,25 @@ function charger_valeurs_point(implantation_id) {
 /* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
 est appelée À chaque modification du formulaire de classement. */
 function recalculer_ligne(element) {
+    /* on laisse la possibilité de choisir le salaire manuellement,
+       la réinitialisation du salaire de base s'opère dès qu'on choisi
+       un nouveau classement. */
+    if (element.attr('id').match('id_classement*'))
+        salaire_manuel = false;
+    else
+        salaire_manuel = true;
+
     var ligne = element.parents("tr");
     var inputs = ligne.find("input, select");
     var salaire_input;
+    var salaire;
     var valeur_point_input;
+    var classement_id;
+    var indemn_expat;
+    var indemn_fct;
+    var charges_patronales;
+    var autre;
+
     inputs.each(function() {
         var input = $(this);
 
@@ -79,8 +94,14 @@ function recalculer_ligne(element) {
             salaire_input = input;
             salaire = clean_float(input.val())
         }
-        if (input.attr('id').match('id_indemn*')) {
-            indemn = clean_float(input.val())
+        if (input.attr('id').match('id_indemn_expat*')) {
+            indemn_expat = clean_float(input.val())
+        }
+        if (input.attr('id').match('id_indemn_fct*')) {
+            indemn_fct = clean_float(input.val())
+        }
+        if (input.attr('id').match('id_charges_patronales*')) {
+            charges_patronales = clean_float(input.val())
         }
         if (input.attr('id').match('id_autre*')) {
             autre = clean_float(input.val())
@@ -98,13 +119,14 @@ function recalculer_ligne(element) {
             valeur_point = 0;
         else
             valeur_point = clean_float(valeur_point_text.split(" ")[0]);
-
-        salaire = clean_float(valeur_point * coeff);
-        salaire_input.val(salaire);
-
+        
+        if (salaire_manuel == false) {
+            salaire = clean_float(valeur_point * coeff);
+            salaire_input.val(salaire);
+        }
         taux_euro = parseFloat(ligne.find(".taux").html())
         total = 0;
-        total = salaire + indemn + autre;
+        total = salaire + indemn_expat + indemn_fct + charges_patronales + autre;
         total_euro = total * taux_euro;
 
         ligne.find(".total-devise").text(clean_float(total));
@@ -115,17 +137,35 @@ function recalculer_ligne(element) {
 
 /* recalcule tout le classement */
 function recalculer_tout() {
-    $("#classement tr *[name*=devise]").each(function() {
+    $("#classement tr *[name*=salaire]").each(function() {
         recalculer_ligne($(this));
     });
 }
 
+function setup_taux_ligne(element) {
+  var input = element;
+  var ligne = input.parents("tr");
+  var chargement_devise = $.getJSON("/dae/devise/code", {'devise': input.val()});
+  chargement_devise.success(function(data) {
+      ligne.find(".taux").text(data.taux_euro)
+      ligne.find(".devise_code").text(data.devise_code)
+      recalculer_ligne(input);
+  });
+  chargement_devise.error(function(data) {
+      alert(data.responseText);
+      ligne.find(".taux").text(0)
+      ligne.find(".devise_code").text("???")
+  });
+}
+
 $(document).ready(function() {
 
     /* Lorsqu'on choisit un poste dans la liste on recharge la page avec le
     poste chargé dans la view (grâce à son id dans l'URL).*/
     $('#id_poste').change(function() {
-        window.location = '/dae/poste/' + $(this).val();
+        var id_poste = $(this).val();
+        if (id_poste)
+            window.location = '/dae/poste/' + id_poste;
     });
 
     /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
@@ -140,6 +180,9 @@ $(document).ready(function() {
 
 
     $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
+        // pas de traitement si aucune valeur de point n'est choisie
+        if (this.value == '') return;
+
         var vp_input = $(this);
         var ligne = vp_input.parents("tr").parent(); // en fait on travaille sur tout le tableau dans ce cas!
 
@@ -171,34 +214,19 @@ $(document).ready(function() {
     });
 
     $('#id_devise_min, #id_devise_max').change(function(e) {
-        var input = $(this);
-        var ligne = input.parents("tr");
-        var chargement_devise = $.getJSON("/dae/devise/code", {'devise': this.value});
-        chargement_devise.success(function(data) {
-            ligne.find(".taux").text(data.taux_euro)
-            ligne.find(".devise_code").text(data.devise_code)
-            recalculer_ligne(input);
-        });
-        chargement_devise.error(function(data) {
-            alert(data.responseText);
-            ligne.find(".taux").text(0)
-            ligne.find(".devise_code").text("???")
-        });
-
+        setup_taux_ligne($(this));
     });
 
-    $('#id_classement_min, #id_classement_max').change(function(e) {
-        var classement = $(this);
-        recalculer_ligne(classement);
-    });
-
-    /* refresh des totaux à chaque changement quelconque */
-    $('#classement input, #classement select').change(function() {
+    $('#id_classement_min, #id_classement_max, #classement input, #classement select').change(function(e) {
         recalculer_ligne($(this));
     });
-    
+
     /* au chargement, on calcule tout */
-    recalculer_tout();
+    $('#id_devise_min, #id_devise_max').each(function() {
+        setup_taux_ligne($(this));
+    });
+    // le setup de la devise par ligne est déjà suivi d'un recalcul de la ligne automatique
+    //recalculer_tout();
 
     /* calcul de la différence en mois */
     $("#id_date_debut, #id_date_fin").focusout(function() {
@@ -214,4 +242,32 @@ $(document).ready(function() {
     });
     elements_comparaison($('#id_devise_comparaison').val());
 
+    /* Traitement de la recherche AJAX pour les postes de comparaison */
+    $(".comparaison-interne .results_on_deck").bind('added', function() {
+        /* récupération du choix dans la liste */
+        var input_id = $(this).attr('id').replace('_on_deck', '');
+        var prefix_poste_connexe = $(this).attr('id').replace('recherche_on_deck', '');
+        var input = $('#'+input_id);
+        var poste_id = input.val();
+
+        /* interrogation par AJAX pour récupérer les données du poste */
+        var chargement_poste = $.getJSON("/dae/poste_resume/" + poste_id);
+        chargement_poste.success(function(data) {
+            $('#' + prefix_poste_connexe + 'implantation').val(data['implantation']);
+            $('#' + prefix_poste_connexe + 'nom').val(data['poste']);
+            $('#' + prefix_poste_connexe + 'montant').val(data['montant']);
+            $('#' + prefix_poste_connexe + 'devise').val(data['devise']);
+            $('#' + prefix_poste_connexe + 'montant_euros').val(data['montant_euros']);
+        });
+        chargement_poste.error(function(data) {
+            alert(data.responseText);
+        });
+        
+        /* on ne veut pas afficher la personne en-dessous */
+        $(this).find('div').remove();
+        input.val('');
+
+    });
+
+
 });