$(document).ready(function () { /** * Event Mail change */ /* $("#nom-responsable").bind("change", function(event) { if ($("#nom-responsable").val() == "") { $("#email-responsable").val(""); } else { var url = document.URL; var reg = new RegExp("(materiels).*$", "g"); var emailUrl = url.replace(reg, "Users/getLdapEmail/"); $.ajax({ url: emailUrl + $("#nom-responsable").val() }).done(function(data) { $("#email-responsable").val(data) }); } }); */ /** * Event calcul date fin de garantie */ /* On formatte COMME IL FAUT les dates des formulaires */ /* (20200410) EP deactivated, works but no more necessary ? $('.datepicker').each(function(){ this.value = this.value.replace(/\//g, "-"); this.value = twoToFour(this.value); }); */ /* Puis si nécessaire on update la date de fin de gurantie au chargement de la page */ if ($("#date-fin-garantie")[0].value != "") date_fin_garantie_update(); /* * Vérification date réception > date aquisition */ $("#date-acquisition").change( function (event) { check_date_acq_inf_date_rec(); } ); //$("#date-reception").change (function (event) { check_date_acq_inf_date_rec(); } ); /* $("#date-acquisition").blur( function (event) { check_date_acq_inf_date_rec(); } ); $("#date-reception").blur( function (event) { check_date_acq_inf_date_rec(); } ); */ /* Et enfin les events purs */ /* $("#date-reception").change( function(event) { if(!checkDate(this.value)) { //alert("Les dates doivent être de la forme dd-mm-YYYY"); alert("Les dates doivent être de la forme dd/mm/YYYY"); event.preventDefault(); } else { date_fin_garantie_update(); } } ); */ $("#date-reception").change( function(event) { if ( (this.value =='') || (!checkDate(this)) || (!check_date_acq_inf_date_rec()) ) { if (this.value =='') $(this).removeClass('error'); //$("#duree-garantie")[0].value = ""; $("#date-fin-garantie")[0].value = ""; return true; } date_fin_garantie_update(); }); $("#duree-garantie").change( function(event) { if (this.value =='') $("#date-fin-garantie")[0].value = ""; else { date_fin_garantie_update(); $("#date-fin-garantie").removeClass('error'); $("#date-reception").removeClass('error'); } //if ( this.val() != '' && checkDate(this.value) ) {date_fin_garantie_update();} }); //$("#duree-garantie").bind("change", function(event) { date_fin_garantie_update(); }); //$("#duree-garantie").change( function(event) { date_fin_garantie_update(); } ); //$("#unite-duree-garantie").bind("change", function(event) { date_fin_garantie_update(); }); $("#unite-duree-garantie").change( function(event) { date_fin_garantie_update(); }); $("#date-fin-garantie").change( function(event) { if (this.value =='') { // ne pas laisser supprimer la date garantie si elle peut etre calculée date_fin_garantie_update(); return; } if ( checkDate(this) ) check_date_rec_inf_date_gar(); // on a saisi une date manuellement, donc on supprime la durée de garantie choisie avant $("#duree-garantie")[0].value = ""; }); /** * On SUBMIT : * A LA VALIDATION (on submit) => on vérifie les dates qui restent encore invalides * pour éviter de soumettre des dates invalides * (malgré les alertes déjà données ci-dessus !!!) */ $(".form").submit( function(event) { /* // 1) On vérifie chaque date $('.datepicker').each( function() { if ( this.value!="" && !checkDate(this.value) ) { alert("Les dates doivent être de la forme JJ/MM/AAAA"); this.focus(); event.preventDefault(); return; } }); */ // 2) On applique les règles de gestion sur les dates if (!check_date_acq_inf_date_rec() || !check_date_rec_inf_date_gar()) event.preventDefault(); /* // On simule un changement de chaque date pour déclencher les vérifications de cohérence de dates $('.datepicker').each( function(){ if (this.id != "date-fin-garantie") { //console.log(this.id); $(this).change(); } }); */ //event.preventDefault(); }); // On SUBMIT /* s1 = $("#date-acquisition")[0].value; s2 = $("#date-reception")[0].value; s3 = $("#date-fin-garantie")[0].value; //if () // alert("Les dates doivent être de la forme dd-mm-YYYY"); // event.preventDefault(); //} $bool = true; // pour faire un "break" si bool = true $('.datepicker').each(function(){ if ($bool==true && this.value != "") { //console.log(this.value); if (!checkDate(this.value)) { $bool = false; alert("Les dates doivent être de la forme JJ/MM/AAAA"); event.preventDefault(); } } }); d1 = toDate($("#date-acquisition")[0].value); // Date de la commande d2 = toDate($("#date-reception")[0].value); // Date de réception d3 = toDate($("#date-fin-garantie")[0].value); // Date fin de garantie check_date_acq_inf_date_rec(); /S if($("#date-reception")[0].value != undefined){ if(d1 > d2) { alert("Les dates ne correspondent pas, la date de réception doit être supérieure à la date de commande."); event.preventDefault(); } } S/ check_date_rec_inf_date_gar(); /S if($("#date-reception")[0].value != undefined){ if(d2 > d3) { alert("Les dates ne correspondent pas, la date de fin de garantie doit être supérieure à la date de réception."); event.preventDefault(); } } S/ }); // On SUBMIT */ }); // $(document).ready /** * ************************ * FONCTIONS * ************************ */ // (EP 20200410) Vérification date cde <= date réception function check_date_acq_inf_date_rec() { return check_dates_d1_inf_d2("#date-acquisition", "#date-reception", "La date de réception doit être postérieure à la date d'achat"); } //(EP 20200410) Vérification date rec <= date garantie function check_date_rec_inf_date_gar() { return check_dates_d1_inf_d2("#date-reception", "#date-fin-garantie", "La date de fin de garantie doit être supérieure à la date de livraison"); } /** * Fonction qui passe l'année de deux à quatres chiffres */ function twoToFour(str) { // (20200410 version dd-mm-yy => remplacée par dd/mm/yy) //var sep = '-'; var sep = '/'; //if (str.match(/^(\d{1,2})-(\d{1,2})-(\d{2})$/)) { if (str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2})$/)) { tabStr = str.split(sep); tabStr[2] = "20"+tabStr[2]; str = tabStr[0]+sep+tabStr[1]+sep+tabStr[2]; } return str; } /** * Fonction de mise à jour de la date de fin de guarantie */ function date_fin_garantie_update() { //if ($("#date-reception").val() != "" && $("#duree-garantie").val() != "") { if ($("#date-reception").value != "" && $("#duree-garantie").value != "") { /* EP added this : $('.datepicker').each(function(){ this.value = this.value.replace(/\//g, "-"); this.value = twoToFour(this.value); }); */ /* $("#date-reception").each(function(){ this.value = twoToFour(this.value); }); */ var url = document.URL; var reg = new RegExp("(materiels).*$", "g"); var dateUrl = url.replace(reg, "Materiels/getDateGarantie/"); $.ajax({ url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val() }).done(function(data) { $("#date-fin-garantie").val(data.trim()) }); } } /** * Fonction qui transforme la chaine de format dd-mm-YYYY en date js pour pouvoir être comparée par la suite */ /* (EP 20200407 moved to webroot/js/script.js function toDate(str) { var DateString = str.split("-"); return new Date(parseInt(DateString[2]), parseInt(DateString[1]) + 1, parseInt(DateString[0]), 12, 00, 00); /S new Date(YYYY, mm+1, dd, 12, 00, 00) Le +1 du mois est nécessaire car les mois commencent à 0 en JS les 3 derniers chiffres ne sont pas nécessaires, mais si on les retire ça bug uniquement sous firefox (il est plus strict que chrome paar exemple) et la date devient du grand n'importe quoi S/ } */