//Fonction jquery pour la modification des pièces $(document).ready(function($){ var langue = $("#langUser").val(); var verifEtat = true; //Début Dialog //Dialog Français $("#dialogFR").dialog({ autoOpen: false, position: {my: "center middle", at:"center middle", of: $("#AJAXRDV") }, width: 650, modal: true, buttons:{ Continue: function(){ var $raison = $("#raisons").val(); if ($raison == "Autres") { $raison = $("#autresTxt").val(); } reason = $raison.trim(); $("#dialogFR").dialog("close"); paramForm = document.getElementById("add_rdv"); if (verifReason()) javaSaveAppointments(paramForm, reason); }, Cancel: function(){ $("#dialogFR").dialog("close"); } } }); //Dialog Anglais $("#dialogEN").dialog({ autoOpen: false, position: {my: "center middle", at:"center middle", of: window }, width: 610, modal: true, buttons:{ Continue: function(){ var $raison = $("#raisonsEN").val(); if ($raison == "Others") { $raison = $("#autresTxtEN").val(); } reason = $raison.trim(); $("#dialogEN").dialog("close"); paramForm = document.getElementById("add_rdv"); if (verifReason()) javaSaveAppointments(paramForm, reason); //functionSaveAppointBD(); }, Cancel: function(){ $("#dialogEN").dialog("close"); } } }); $(".ui-dialog-titlebar").hide(); $("#raisons").change(function() { var $this = $(this); if ($this.val() == "Others") { $("#autresTxt").show(); } else $("#autresTxt").hide(); }); $("#raisonsEN").change(function() { var $this = $(this); if ($this.val() == "Others") { $("#autresTxtEN").show(); } else $("#autresTxtEN").hide(); }); //Verif Raisons function verifReason() { verifEtat = true; if (reason === null || reason === '') { verifEtat = false; if (langue == 'fr') { alert('La raison de l\'échéance du rendez-vous ne peut être vide.'); } else { alert('The reason of the appointment\'s expiration cannot be empty.'); } } else if (reason.length > 100) { verifEtat = false; if (langue == 'fr') { alert('La raison de l\'échéance du rendez-vous ne doit pas faire plus de 100 caractères.'); } else { alert('The reason of the appointment\'s expiration must be max. 100 characters long.'); } } return verifEtat; } $("#RepairCodeCom").change(function(){ var code = $(this).val(); if (code == 7 || code == 8) { $("#trComCode").show(); } else { $("#trComCode").hide(); $("#inputNomComCode").val(""); } }); $("div#AJAXPART").on("click", ".submit_update_part", function(){ var loop = $(this).attr('ref'); javaCheckPART(this.form, loop); }); $("div#AJAXPART").on("mouseover", ".submit_update_part", function(){ var reference = $(this).attr('ref2'); $("#"+reference).css("background","#939090"); }); $("div#AJAXPART").on("mouseout", ".submit_update_part", function(){ var reference = $(this).attr('ref2'); $("#"+reference).css("background","#E0E0E0"); }); $("#cmdSaveContrat").click(function(e){ if ($("#projetAcomba").val() == "") { e.preventDefault(); alert("Le champ 'Projet Acomba' de la section 'Contrat' doit être rempli."); } }); }); function checkPiecesNbr(form, max, maxid, message) { count = 0; if (max > 0) { for (x = 0; x <= maxid; x++) { if (form['piece_'+x] != undefined) { field = form['piece_'+x]; if (field.checked) { count +=1; if (count > max) { alert(message+' max='+max); return false; } } } } } return true; } function javaUpdDeadline(form) { document.getElementById("info_ech_site").innerHTML = ""; document.getElementById("info_ech_repair_date").innerHTML = ""; appel = form.appel.value; msg = form.message.value; dateCreation = form.dateCreation.value; echRdDate = form.realDateRd.value; echRdHour = form.realHourRd.value; dayRd = form.rd_day.value; monthRd = form.rd_month.value; yearRd = form.rd_year.value; hourRd = form.rd_HOUR.value; minuteRd = form.rd_MINS.value; // Réinitialise les deux champs qui affichent la date pour afficher les valeurs sans recharger la page. //Date original de rendez-vous et date modifiée dateRdOriginal = echRdDate+" "+echRdHour; dateRdModif = yearRd+"-"+monthRd+"-"+dayRd+" "+hourRd+":"+minuteRd; if (msg == "") { alert('The communication message cannot be empty.'); return; } //Affectation des variables selon la date sélectionnée if (form.radioEch[0].checked) { echOnRepDate = form.realDateOnS.value; echOnRepHour = form.realHourOnS.value; dayOnRep = form.onS_day.value; monthOnRep = form.onS_month.value; yearOnRep = form.onS_year.value; hourOnRep = form.onS_HOUR.value; minuteOnRep = form.onS_MINS.value; typeDate = "OnSite"; } else { echOnRepDate = form.realDateRep.value; echOnRepHour = form.realHourRep.value; dayOnRep = form.rep_day.value; monthOnRep = form.rep_month.value; yearOnRep = form.rep_year.value; hourOnRep = form.rep_HOUR.value; minuteOnRep = form.rep_MINS.value; typeDate = "Rep"; } //Date sur site ou réparé original et date sur site ou réparé modifiée dateOsRepOriginal = echOnRepDate+" "+echOnRepHour; dateOsRepModif = yearOnRep+"-"+monthOnRep+"-"+dayOnRep+" "+hourOnRep+":"+minuteOnRep; var updString = ""; //Gestion des modifications selon les changements apportés ou non //SI la date de rendez-vous mofifiée n'est pas la même que l'original // la date de rendez-vous sera modifiée // SI la date sur site ou réparé modifiée n'est pas la même que l'original // la date sur site ou réparé sera modifiée //SINON // SI la date sur site ou réparé modifiée n'est pas la même que l'original // la date sur site ou réparé sera modifiée if (dateRdModif != dateRdOriginal) { updString = 'ajax/ajax_UpdAppDeadline.php?id='+appel+'&dateRdOriginal='+dateRdOriginal+'&monthRd='+monthRd+'&yearRd='+yearRd+'&dayRd='+dayRd+'&hourRd='+hourRd+'&minuteRd='+minuteRd+'&nbEnreg=10&typeDate=&message='+msg; codeRefresh = "10"; if (dateOsRepModif != dateOsRepOriginal) { updString = 'ajax/ajax_UpdAppDeadline.php?id='+appel+'&dateRdOriginal='+dateRdOriginal+'&monthRd='+monthRd+'&yearRd='+yearRd+'&dayRd='+dayRd+'&hourRd='+hourRd+'&minuteRd='+minuteRd+'&dateOsRepOriginal='+dateOsRepOriginal+'&monthOnRep='+monthOnRep+'&yearOnRep='+yearOnRep+'&dayOnRep='+dayOnRep+'&hourOnRep='+hourOnRep+'&minuteOnRep='+minuteOnRep+'&nbEnreg=11&typeDate='+typeDate+'&message='+msg; codeRefresh = "11"; } } else { if (dateOsRepModif != dateOsRepOriginal) { updString = 'ajax/ajax_UpdAppDeadline.php?id='+appel+'&dateOsRepOriginal='+dateOsRepOriginal+'&monthOnRep='+monthOnRep+'&yearOnRep='+yearOnRep+'&dayOnRep='+dayOnRep+'&hourOnRep='+hourOnRep+'&minuteOnRep='+minuteOnRep+'&nbEnreg=01&typeDate='+typeDate+'&message='+msg; codeRefresh = "01"; } } //Validation de la date, ne peut être inférieur à celle d'ouverture dateRd = yearRd+"-"+monthRd+"-"+dayRd; dateOnRep = yearOnRep+"-"+monthOnRep+"-"+dayOnRep; alert("DateRd="+dateRd+" Date Création="+dateCreation); if ((dateRd < dateCreation) || (dateOnRep < dateCreation)) { alert('The deadline date cannot be inferior to the creation date of the call.'); return; } else if(updString != "") { result = func_CallPHP(updString); alert('Deadline updated.'); form.message.value = ""; //Mise à jour des champs hidden relatifs aux dates if (codeRefresh.substr(0,1) == "1") { form.realDateRd.value = yearRd+"-"+monthRd+"-"+dayRd; form.realHourRd.value = hourRd+":"+minuteRd; if (codeRefresh.substr(1,2) == "1") { if (typeDate == "OnSite") { form.realDateOnS.value = yearOnRep+"-"+monthOnRep+"-"+dayOnRep; form.realHourOnS.value = hourOnRep+":"+minuteOnRep; form.realDateRep.value = "null"; form.realHourRep.value = "null"; document.getElementById("info_ech_site").innerHTML = yearOnRep + "-" + monthOnRep + "-" + dayOnRep + " " + hourOnRep + ":" + minuteOnRep + ":00"; } else if (typeDate == "Rep") { form.realDateRep.value = yearOnRep+"-"+monthOnRep+"-"+dayOnRep; form.realHourRep.value = hourOnRep+":"+minuteOnRep; form.realDateOnS.value = "null"; form.realDateOnS.value = "null"; document.getElementById("info_ech_repair_date").innerHTML = yearOnRep + "-" + monthOnRep + "-" + dayOnRep + " " + hourOnRep + ":" + minuteOnRep + ":00"; } } } else { if (typeDate == "OnSite") { form.realDateOnS.value = yearOnRep+"-"+monthOnRep+"-"+dayOnRep; form.realHourOnS.value = hourOnRep+":"+minuteOnRep; form.realDateRep.value = "null"; form.realHourRep.value = "null"; document.getElementById("info_ech_site").innerHTML = yearOnRep + "-" + monthOnRep + "-" + dayOnRep + " " + hourOnRep + ":" + minuteOnRep + ":00"; } else if (typeDate == "Rep") { form.realDateRep.value = yearOnRep+"-"+monthOnRep+"-"+dayOnRep; form.realHourRep.value = hourOnRep+":"+minuteOnRep; form.realDateOnS.value = "null"; form.realDateOnS.value = "null"; document.getElementById("info_ech_repair_date").innerHTML = yearOnRep + "-" + monthOnRep + "-" + dayOnRep + " " + hourOnRep + ":" + minuteOnRep + ":00"; } } } } function javaUpdDeadlineStatus(form) { appel = form.appel.value; msg = form.txtStatut.value; statut = form.deadlineStatus.value; raison = form.deadlineReason.value; isCappel = form.isCappel.value; if ((msg == "" || raison == "") && statut != "ATTEINT") { alert('The reason and the explanation can\'t be empty if the status is not achieved.'); //msg.focus(); //return; } else { msg = msg.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); statut = statut.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); raison = raison.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); updString = 'ajax/ajax_UpdAppDeadlineStatus.php?id='+appel+'&msg='+msg+'&statut='+statut+'&raison='+raison+'&isCappel='+isCappel; func_CallPHP(updString); alert('Deadline status updated.'); } } function checkdate (month, day, year) { var myDate = new Date(); myDate.setFullYear( year, (month - 1), day ); return month >= 1 && month <= 12 && year >= 1 && year <= 32767 && ((myDate.getMonth()+1) == month && day<32); } function IsNumeric(sText) { var ValidChars = "0123456789"; var IsNumber = true; var Char; for (i=0; i < sText.length && IsNumber==true; i++) { Char = sText.charAt(i); if (ValidChars.indexOf(Char) == -1) IsNumber = false; } return IsNumber; } function IsNumericWithDecimals(sText) { var ValidChars = "0123456789."; var IsNumber=true; var Char; for (i = 0; i < sText.length && IsNumber == true; i++) { Char = sText.charAt(i); if (ValidChars.indexOf(Char) == -1) { IsNumber = false; } } return IsNumber; } function searchValidation(form) { if (form.name == "frmappel") { if (form.searchValue.value == "") { alert('The search field cannot be blank.'); return false; } } if (form.name == "frmpiece") { if (form.searchPart.value == "") { alert('The search field cannot be blank.'); return false; } } return true; } function chkTracking(form) { var pin_no = form.pin_no.value; if (pin_no.startsWith("1Z") || pin_no.startsWith("1z")) { window.open('modules/ups/SoapTrackClient.php?pin_no='+form.pin_no.value, 'popup', 'height=600,width=600,resizable=yes,scrollbars=yes, titlebar=no, menubar=no, location=no'); } else { window.open('modules/puro/trackingDetails.php?pin_no='+form.pin_no.value, 'popup', 'height=600,width=600,resizable=yes,scrollbars=yes, titlebar=no, menubar=no, location=no'); } form.target = 'popup'; } function javaAutoAddHour(start, end, hour) { if (start.selectedIndex == 23) end.selectedIndex = 23; else end.selectedIndex = start.selectedIndex+hour; } function javaAutoAddMinute(hstart, hend, start, end, minute) { if (minute != 0) { if (start.selectedIndex+minute >= 60) { if (hstart.selectedIndex == 23) end.selectedIndex = start.selectedIndex; else { javaAutoAddHour(hstart, hend, 1); end.selectedIndex = (start.selectedIndex+minute) - 60; } } else { hend.selectedIndex = hstart.selectedIndex; end.selectedIndex = start.selectedIndex+minute; } } } function trim(aString) { var regExpBeginning = /^\s+/; var regExpEnd = /\s+$/; return aString.replace(regExpBeginning, "").replace(regExpEnd, ""); } function javaRefreshShowCall(appel) { appDiv = document.getElementById('AJAXINFO'); appDiv.innerHTML=func_CallPHP('ajax/ajax_RefreshShowCall.php?id='+appel); } function javaCheckRDV(form) { var dateRdv = form.dateRdv.value; var hourBeginRdv = form.hourBeginRdv.value; var hourEndRdv = form.hourEndRdv.value; var doreturn = true; var appel = form.APPEL.value; var result2 = false; var jassign = form.ASSIGNERV.value; result = dateRdv; if (result == false) { alert('This appointment date is not valid. Please change your selection.'); doreturn = false; } else if ((hourBeginRdv == hourEndRdv)) { alert('The end hour cannot be the same as the starting hour.'); doreturn = false; } else if (hourBeginRdv > hourEndRdv) { alert('The end hour cannot be the same as the starting hour.'); doreturn = false; } //Rajouter une vérification si le technicien à un rendez-vous qui chevaucherait celui-ci $.ajax({ url : 'ajax/ajax_CheckRDV.php', type : 'POST', data : {assigne: jassign, dateRdv: dateRdv, hourBeginRdv: hourBeginRdv, hourEndRdv: hourEndRdv}, dataType : 'text', asynch: false, success : function(conflit){ if (conflit == "true") { if (confirm("This appointment is getting conflicted with another for this tech. Continue anyway?") == false) { doreturn = false; return false; } } if (doreturn == true) { // ON N'UPDATE PLUS LES RDV DEPUIS 2018-08-20 javaSaveAppointments(form); } return false; } }); } function javaCheckDeplacement(obj) { var objx = document.getElementById("DEP2"); if (obj.value == "MORE") { if (objx.disabled==false) { objx.disabled=true; objx.style.visibility='hidden'; objx.value=""; } else { objx.disabled=false; objx.style.visibility=''; objx.focus(); } } else { objx.disabled=true; objx.value=""; objx.style.visibility='hidden'; } } function GetXmlHttpObject() { var objXMLHttp = null; if (window.XMLHttpRequest) objXMLHttp=new XMLHttpRequest(); else if (window.ActiveXObject) objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); return objXMLHttp; } //Fonction qui effectue un appel d'une page PHP en POST //Paramètres: //php = nom de la page PHP à exécuter //params = liste des paramètres à passer à la page PHP EX: id=12345&technicien=abc //messageokfr = message francais si exécution OK //messageoken = message anglais si exécution OK function func_CallPHP_POST(php, params, messageokfr, messageoken) { var req = GetXmlHttpObject(); req.open('POST', php, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); //Call a function when the state changes. req.onreadystatechange = function(){ if (req.readyState == 4) { if (req.status == 200) { alertMessage(req.responseText,messageokfr,messageoken); } else { alert("Error: returned status code " + req.status + " " + req.statusText); } } } req.send(params); } //Fonction qui effectue un appel d'une page PHP en POST et qui effectue un refresh des informations de l'appel //Paramètres: //php = nom de la page PHP à exécuter //params = liste des paramètres à passer à la page PHP EX: id=12345&technicien=abc //messageokfr = message francais si exécution OK //messageoken = message anglais si exécution OK //appel = no de l'appel pour lequel il faut faire le refresh function func_CallPHP_POST_with_Call_Refresh(php, params, messageokfr, messageoken, appel) { var req = GetXmlHttpObject(); req.open('POST', php, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); //Call a function when the state changes. req.onreadystatechange = function(){ if (req.readyState == 4) { if (req.status == 200) { alertMessage(req.responseText,messageokfr,messageoken); javaRefreshShowCall(appel); } else { alert("Error: returned status code " + req.status + " " + req.statusText); } } } req.send(params); } //Fonction qui effectue un appel d'une page PHP en POST et qui effectue un reset du formulaire de saisie des travaux //Paramètres: //php = nom de la page PHP à exécuter //params = liste des paramètres à passer à la page PHP EX: id=12345&technicien=abc //messageokfr = message francais si exécution OK //messageoken = message anglais si exécution OK function func_CallPHP_POST_travaux(php, params, messageokfr, messageoken, form) { var req = GetXmlHttpObject(); req.open('POST', php, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); //Call a function when the state changes. req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { alertMessage(req.responseText,messageokfr,messageoken); if (trim(req.responseText) == "OK") { resetWorkForm(form); } } else { alert("Error: returned status code " + req.status + " " + req.statusText); } } } req.send(params); } function alertMessage(result, messageokfr, messageoken) { if (messageokfr.length > 0) { if (trim(result) == "OK") { alert(messageoken); } else { alert(result); } } } function func_CallPHP(php) { var req = GetXmlHttpObject(); req.open('GET', php, false); req.send(null); return req.responseText; } function javaGetFullname(form) { assign = form.ASSIGNE.value; tech = form.TECH; tech.value = func_CallPHP('ajax/ajax_GetFullname.php?id='+assign); } function javaCreateWaybill(form) { ship = form.shipping; waybill = form.waybill; appel = form.id.value; if (trim(waybill.value) == "") { newwaybill = func_CallPHP('ajax/ajax_GenerateWaybill.php?id='+appel); waybill.value = newwaybill; newwaybillurl = func_CallPHP('ajax/ajax_GetWaybill.php?waybill='+waybill); newwindow = window.open(newwaybillurl,'Waybill',''); if (window.focus) { newwindow.focus(); } return false; } else { alert('The waybill must be empty to generate a return waybill.'); waybill.focus(); } } function javaSendMessage(form) { if($(".visible_Cust option:selected").val() == '') { $(".visible_Cust option:selected").focus(); alert('Selectionnez une visibilite // Choose a visibility'); } else { var status = $(".comm_status option:selected").val(); var doreturn = javaCheckPartChange(status); if (doreturn != true) { return; } appel = form.appel; assign = form.ASSIGNE; tech = form.TECH; statut = form.STATUS; statut_plus = form.STATUS_PLUS; visibility = form.VISIBLE_CUSTOMER; msg = form.message; //*** SECTION POUR LES APPELS UNISYS SEULEMENT *** if (form['RepairCodeCom'] != undefined) { code = form.RepairCodeCom; code = code.options[code.selectedIndex].value; //Code Unisys probablement if (code == 7 || code == 8) { if ($("#inputNomComCode").val() == "") { alert("You must enter a contact name."); $("#inputNomComCode").focus(); return false; } } } else code = ''; if (msg.value == "") { alert("The communication message cannot be empty."); msg.focus(); return; } //Validation si le Statut_plus est selectionnez ClientStatut = false; $.each($("#STATUS_PLUS.comm_status_plus").find('option'), function(key, value) { if ($(value).hasClass($("#STATUS.comm_status").val())) { ClientStatut = true; } }); if (statut_plus.value == "" && ClientStatut) { alert("The Client Status must be selected"); msg.focus(); return; } $.ajax({ type: "POST", url: "ajax/SendMessage.php?id=" + appel.value + "&STATUS=" + encodeURI(statut.value) + "&STATUS_PLUS=" + encodeURI(statut_plus.value) + "&TECH=" + tech.value + "&CODE=" + code + "&VISIBLECUSTOMER=" + visibility.value + "&CONTACTNAME=" + $('#inputNomComCode').val(), contentType: 'application/json', dataType: "text", data: JSON.stringify(msg.value), success: function (result){ if (result == "OK") { alert("The communication has been sent succesfully."); $('#messageTxt').val(""); } else { alert("An error has been detected. Please notify the system administrators.: [AJAX ERROR]');"); alert(result); } } }); } } // function qui vérifie si des champs du formulaire de pieces ont été modifié // et n'on pas été enregistré, si oui return false function javaCheckPartChange(status) { var part_change = 0; $(".form_list_part td :input.submit_update_part").each(function(){ if ($(this).hasClass('input_change_part')) { part_change++; } }); if (status == 'TERMINÉ/A FERMER' && part_change > 0 ) { alert('Warning! You must record your parts before closing the call'); $('html, body').animate({ scrollTop: $(".form_list_part").offset().top }, 1500); return false; } return true; } function javaCheckWorkMultipleTech(form) { var extra = JSON.parse(form.TECH_extra.value); if (extra.length > 0) { extra.forEach(function(item) { form.TECH.value = item; if (!javaCheckWORKTIME(form)) { return false; } }); return true; } else { return javaCheckWORKTIME(form); } } //Fonction qui vérifie les différents critères avant l'ajout de temps function javaCheckWORKTIME(form) { var tech = form.TECHID; var desc = form.DESCRIPTION; var km = form.KM; var month = form.date1_month.value; var year = form.date1_year.value; var day = form.date1_day.value; var starthour = form.WRKSTART_HOUR.value; var startminute = form.WRKSTART_MINS.value; var beginhour = form.WRKBEGIN_HOUR.value; var beginminute = form.WRKBEGIN_MINS.value; var endhour = form.WRKEND_HOUR.value; var endminute = form.WRKEND_MINS.value; var returnhour = form.WRKRETURN_HOUR.value; var returnminute = form.WRKRETURN_MINS.value; var categorie = form.FACTURABLE.value; var reason = ""; var kmgoogle = null; var tempsgoogle = null; var statusAdmin = form.STATUS.value; var status_plus = form.STATUS_PLUS.value; var authnumber = null; if (form.proautorisationnumber != null) authnumber = form.proautorisationnumber.value; var auth = null; if (form.Auth != null) auth = form.Auth.value; if (form.kmgoogle != null) kmgoogle = form.kmgoogle.value; if (form.tempsgoogle != null) tempsgoogle = form.tempsgoogle.value; if (form.RepairCodeIngenico != null) repairCodeIngenico = form.RepairCodeIngenico.value; var doreturn = true; var status = $(".work_status option:selected").val(); doreturn = javaCheckPartChange(status); result = checkdate(month,day,year); if (result == false) { alert('Work date is invalid. Change your selection.'); doreturn = false; } if (trim(tech.value) == "") { //Vérifier si le nom est inscrit à la main. tech = form.TECH; if (trim(tech.value) == "") { alert('Technician\'s name is missing.'); tech.focus(); doreturn = false; } } //Validation si le Statut_plus est selectionnez ClientStatut = false; $.each($("#STATUS_PLUS.work_status_plus").find('option'), function(key, value) { if ($(value).hasClass($("#STATUS.work_status").val())) { ClientStatut = true; } }); if (form.STATUS_PLUS.value == "" && ClientStatut) { alert("The Client Status must be selected"); doreturn = false; } if(auth == '1') { //Init. du temps charles var whour = endhour - beginhour; var wtemps = 0; var validation = 0; if (beginminute > endminute) { whour = whour - 1; } wtemps = (whour*60)+(endminute - beginminute); //envoie au php pour terminer validation validation = func_CallPHP('ajax/call/auth.php?appel='+form.id.value+'&temps='+wtemps+'&auth='+authnumber); if(validation > 0 ) { if(validation == 1) alert("You must enter a valid Progitech authorization number for call requiring more than 1 hour on site"); if(validation == 2) alert("You must enter a valid Progitech authorization number for call requiring more than 1.5 hours on site"); if(validation == 3) alert("You must enter a valid Progitech authorization number for call requiring more than 1 hour on site or a DPS number from Dell (if applicable)"); doreturn = false; } } if (form.NomCie.value != "CPU") { if (trim(desc.value) == "" || desc.value.length < 10) { alert('Work description is missing or not long enough (minimum 10 characters).'); desc.focus(); doreturn = false; } } else { //Valider les champs uniques à CPU var curr = form['CPU_DESC_PROB']; var currv = trim(curr.value); if (curr == "" || currv.length < 10) { alert('Description of the problem is not long enough (minimum 10 characters).'); curr.focus(); doreturn = false; } else if (currv.length > 1000) { alert('Description of the problem too long (maximum 500 characters).'); curr.focus(); doreturn = false; } curr = form['CPU_DESC_FREQ']; currv = trim(curr.value); if (currv == "" || currv.length < 10) { alert('Description of frequency is not long enough (minimum 10 characters).'); curr.focus(); doreturn = false; } else if (currv.length > 1000) { alert('Description of frequency is too long (maximum 500 characters).'); curr.focus(); doreturn = false; } curr = form['CPU_DESC_TRAITE']; currv = trim(curr.value); if (currv == "" || currv.length < 10) { alert('Work description is not long enough (minimum 10 characters).'); curr.focus(); doreturn = false; } else if (currv.length > 1000) { alert('Work description is too long (maximum 500 characters).'); curr.focus(); doreturn = false; } } if (IsNumeric(km.value) == false) { alert('KMs only allow numeric format.'); km.focus(); doreturn = false; } if (km.value == '') { alert('KMs only allow numeric format.'); km.focus(); doreturn = false; } //Valider que l'heure de fin soit plus grande que l'heure de début if (beginhour > endhour) { alert('if your time go over midnight, make two entry.'); form.WRKEND_HOUR.focus(); doreturn = false; } if (beginhour == endhour) { if (beginminute >= endminute) { alert('End hour must be greater than begin hour.'); form.WRKEND_HOUR.focus(); doreturn = false; } } //Valider que l'heure de début soit plus grande que l'heure de départ if (starthour != 0 || startminute != 0) { if (starthour > beginhour) { alert('Begin hour must be greater or equal than start hour.'); form.WRKSTART_HOUR.focus(); doreturn = false; } if (starthour == beginhour) { if (startminute > beginminute) { alert('Begin hour must be greater or equal than start hour.'); form.WRKSTART_HOUR.focus(); doreturn = false; } } } //Valider que l'heure de retour soit plus grande que l'heure de fin if (returnhour != 0 || returnminute != 0) { if (endhour > returnhour) { alert('Return hour must be greater or equal than end hour.'); form.WRKRETURN_HOUR.focus(); doreturn = false; } if (endhour == returnhour) { if (endminute > returnminute) { alert('Return hour must be greater or equal than end hour.'); form.WRKRETURN_HOUR.focus(); doreturn = false; } } } //Si l'appel n'est pas un administration, v�rifier les kms et le temps if (statusAdmin != 'ADMINISTRATION') { //Vérifier si le temps de déplacement et les kms sont plus grands que ceux calculer par Google //Vérification des KM selon google var check = true; var invalide1 = ""; var invalide2 = ""; var lousse = 0.05; if (kmgoogle != null && kmgoogle > 0) { if (parseInt(km.value) > parseInt(kmgoogle)) { check = false; invalide1 = km.value+" km "; invalide2 = kmgoogle+" km"; } } if (tempsgoogle != null && tempsgoogle > 0) { var debutTemps = new Date(); var departTemps = new Date(); var retourTemps = new Date(); var finTemps = new Date(); var checkTemps = new Date(); checkTemps.setHours(0); checkTemps.setMinutes(0); checkTemps.setSeconds(0); checkTemps.setMilliseconds(0); //Convertir l'heure début en temps utilisable debutTemps.setHours(beginhour); debutTemps.setMinutes(beginminute); debutTemps.setSeconds(0); debutTemps.setMilliseconds(0); //Convertir l'heure départ en temps utilisable departTemps.setHours(starthour); departTemps.setMinutes(startminute); departTemps.setSeconds(0); departTemps.setMilliseconds(0); //Convertir l'heure retour en temps utilisable retourTemps.setHours(returnhour); retourTemps.setMinutes(returnminute); retourTemps.setSeconds(0); retourTemps.setMilliseconds(0); //Convertir l'heure fin en temps utilisable finTemps.setHours(endhour); finTemps.setMinutes(endminute); finTemps.setSeconds(0); finTemps.setMilliseconds(0); if (departTemps.getTime() == checkTemps.getTime()) { var min1 = 0; } else { var min1 = Math.abs(debutTemps - departTemps); min1 = min1 / 60000; } if (retourTemps.getTime() == checkTemps.getTime()) { var min2 = 0; } else { var min2 = Math.abs(retourTemps - finTemps); min2 = min2 / 60000; } var tempsTotal = min1 + min2; var tempsgooglelousse = Math.ceil(parseInt(tempsgoogle) + (parseInt(tempsgoogle) * lousse)); if (tempsTotal > tempsgooglelousse) { check = false; if (invalide1 =="") { invalide1 = tempsTotal+" min"; invalide2 = tempsgoogle+" min"; } else { invalide1 = invalide1 + ", "+tempsTotal+" min"; invalide2 = invalide2 +", " + tempsgoogle+" min"; } } } } else { var check = true; } if ((!check) && (doreturn)) { reason = prompt('Why is your travel ('+invalide1+') greater than Google calculation ('+invalide2+') ?',''); if (reason == null || reason == "") { alert('The reason of the exceeding cannot be empty.\n\nIf a popup window didn\'t show up, add the site to the trusted sites in your Internet browser because a javascript security is activated.'); doreturn = false; } } // Si c'est un appel Ingenico et qu'il n'y a pas de code de réparation if (form.RepairCodeIngenico != null) { if ( repairCodeIngenico == "vide") { alert('Resolution code must be chosen.'); doreturn = false; } } //Ajout de la confirmation de la saisie de travaux. Si l'utilisateur clique ok, l'entrée de temps va s'effectuer. if (doreturn == true) { var totalworkhour; var totalworkminute; var totaltravelhour; var totaltravelminute; var totalhour; var totalminute; if (returnhour == 0 && returnminute == 0) { returnhour = endhour; returnminute = endminute; } if (starthour == 0 && startminute == 0) { starthour = beginhour; startminute = beginminute; } //Calcul travail totalworkhour = endhour - beginhour; if (beginminute > endminute) { totalworkminute = ((parseInt(endminute) + 60) - parseInt(beginminute)); totalworkhour = totalworkhour - 1; } else { totalworkminute = endminute - beginminute; } //Calcul total totalhour = returnhour - starthour; if (startminute > returnminute) { totalminute = ((parseInt(returnminute) + 60) - parseInt(startminute)); totalhour = totalhour - 1; } else { totalminute = returnminute - startminute; } //Calcul déplacement totaltravelhour = totalhour - totalworkhour; if (totalworkminute > totalminute) { totaltravelminute = ((parseInt(totalminute) + 60) - parseInt(totalworkminute)); totaltravelhour = totaltravelhour - 1; } else { totaltravelminute = totalminute - totalworkminute; } if (totaltravelminute < 10) totaltravelminute = '0' + totaltravelminute; if (totalworkminute < 10) totalworkminute = '0' + totalworkminute; if (totalminute < 10) totalminute = '0' + totalminute; var statuttext = form.STATUS.options[form.STATUS.selectedIndex].text if (!confirm('Date:\t\t' + year + '/' + month + '/' + day + '\r\nStart:\t\t' + starthour + ':' + startminute + '\r\nBegin:\t\t' + beginhour + ':' + beginminute + '\r\nEnd:\t\t' + endhour + ':' + endminute + '\r\nReturn:\t\t' + returnhour + ':' + returnminute + '\r\n\r\nTotal work\t' + totalworkhour + ':' + totalworkminute + '\r\nTotal travel\t' + totaltravelhour + ':' + totaltravelminute + '\r\nTotal\t\t' + totalhour + ':' + totalminute + '\r\nKm\t\t' + form.KM.value + '\r\n\r\nStatus\t\t' + statuttext + '\r\n\r\nClick OK to confirm your work time and all parts that have been used/returned.')){doreturn = false;} } if (doreturn == true) { javaAddWorktime(form, reason); return true; } else { return false; } } //Fonction qui fait le call la page d'ajout de temps dans la base de données function javaAddWorktime(form, reason) { var appel = form.id; var who_signed_work_order = form.who_signed_work_order.value; var ingenico_talk_person = ''; if (form.ingenico_talk_person != null) { ingenico_talk_person = form.ingenico_talk_person.value; } var day = form.date1_day; var month = form.date1_month; var year = form.date1_year; var starthour = form.WRKSTART_HOUR; var startminute = form.WRKSTART_MINS; var beginhour = form.WRKBEGIN_HOUR; var beginminute = form.WRKBEGIN_MINS; var endhour = form.WRKEND_HOUR; var endminute = form.WRKEND_MINS; var returnhour = form.WRKRETURN_HOUR; var returnminute = form.WRKRETURN_MINS; var techid = form.TECHID; var technicien = form.TECH; var categorie = form.FACTURABLE; var waybill = form.WAYBILL; var statut = form.STATUS; var statut_plus = form.STATUS_PLUS; var description = form.DESCRIPTION; var serial = form.SERIAL; var model = form.MODELE; var brand = form.MARQUE; var dep2 = form.DEP2; var po = '&PO='+form.PO.value; var km = form.KM; var authnumber = ''; var authcheck = 'Non'; var nextvisit = 'Non'; var noparts = 'Non'; var installedsequences = '0'; var uninstalledsequences = '0'; var repaircode = ''; var repaircode2 = ''; var repaircode3 = ''; var repairCodeIngenico1 = ''; var repairCodeIngenico2 = ''; var repairCodeIngenico3 = ''; var cpu_pagecount = ''; var cpu_old_id = ''; var cpu_callin = ''; var cpu_callout = ''; var cpu_new_sn = ''; var cpu_new_model = ''; var cpu_new_brand = ''; var cpu_new_id = ''; var cpu_new_status = ''; var cpu_temporary = ''; var cpu_temporary_test = ''; var cpu_desc_prob = ''; var cpu_desc_freq = ''; var cpu_desc_traite = ''; if (technicien.value.length==0) { technicien.value = techid.options[techid.selectedIndex].text; } if (form['noparts'] != undefined) { if (form.noparts.checked) { noparts = 'Oui'; } } if (form['iAuthorizationNumber'] != undefined) { authnumber = form.iAuthorizationNumber.value; } if (form['proautorisationnumber'] != undefined) { authnumber = form.proautorisationnumber.value; } if (form['iAuthorizationCheck'] != undefined) { if (form.iAuthorizationCheck.checked) { authcheck = 'Oui'; } } if (form['iNextVisit'] != undefined) { if (form.iNextVisit.checked) { nextvisit = 'Oui'; } } if (form['InstalledSequences'] != undefined) { installedsequences = form.InstalledSequences.value; } if (form['UninstalledSequences'] != undefined) { uninstalledsequences = form.UninstalledSequences.value; } if (form['RepairCode'] != undefined) { if (form['RepairCodeTextHidden'] != undefined) { repaircode = form.RepairCodeTextHidden.value; } else { repaircode = form.RepairCode.value; } } if (form['RepairCode2'] != undefined) { if (form['RepairCode2TextHidden'] != undefined) { repaircode2 = form.RepairCode2TextHidden.value; } else { repaircode2 = form.RepairCode2.value; } } if (form['RepairCode3'] != undefined) { if (form['RepairCode3TextHidden'] != undefined) { repaircode3 = form.RepairCode3TextHidden.value; } else { repaircode3 = form.RepairCode3.value; } } if (form['repairCodeIngenico1'] != undefined) { repairCodeIngenico1 = form.repairCodeIngenico1.value; } if (form['repairCodeIngenico2'] != undefined) { repairCodeIngenico2 = form.repairCodeIngenico2.value; } if (form['repairCodeIngenico3'] != undefined) { repairCodeIngenico3 = form.repairCodeIngenico3.value; } //Champs CPU 2017-03-15 SAG-JDG if (form['OLD_ID'] != undefined) { cpu_old_id = form.OLD_ID.value; } if (form['PAGECOUNT'] != undefined) { cpu_pagecount = form.PAGECOUNT.value; } if (form['NEW_SERIAL'] != undefined) { cpu_new_sn = form.NEW_SERIAL.value; } if (form['NEW_MODELE'] != undefined) { cpu_new_model = form.NEW_MODELE.value; } if (form['NEW_MARQUE'] != undefined) { cpu_new_brand = form.NEW_MARQUE.value; } if (form['NEW_ID'] != undefined) { cpu_new_id = form.NEW_ID.value; } if (form['cpuStatus'] != undefined) { cpu_new_status = form.cpuStatus.value; } if (form['cpuIn'] != undefined) { cpu_callin = form.cpuIn.value; } if (form['cpuOut'] != undefined) { cpu_callout = form.cpuOut.value; } if (form['cpuRes'] != undefined) { if (form.cpuRes.checked) { cpu_temporary = 'Y'; } else { cpu_temporary = 'N'; } } if (form['cpuResTest'] != undefined) { if (form.cpuResTest.checked) { cpu_temporary_test = 'Y'; } else { cpu_temporary_test = 'N'; } } //Nouveaux champs CPU 2018-05-03 SAG-JDG if (form['CPU_DESC_PROB'] != undefined) { cpu_desc_prob = form.CPU_DESC_PROB.value; } if (form['CPU_DESC_FREQ'] != undefined) { cpu_desc_freq = form.CPU_DESC_FREQ.value; } if (form['CPU_DESC_TRAITE'] != undefined) { cpu_desc_traite = form.CPU_DESC_TRAITE.value; } /*Fin des champs CPU*/ if (reason == null) { reason = ""; } //APPEL DE LA FONCTION AJAX POUR L'AJOUT DES TRAVAUX var params = 'id='+appel.value+'&date1_day='+day.value+'&date1_month='+month.value +'&date1_year='+year.value+'&WRKSTART_HOUR='+starthour.value +'&WRKSTART_MINS='+startminute.value+'&TECHID='+techid.value +'&WAYBILL='+waybill.value+'&WRKBEGIN_HOUR='+beginhour.value+'&TECH='+technicien.value +'&WRKBEGIN_MINS='+beginminute.value+'&FACTURABLE='+categorie.value +'&STATUS='+statut.value+'&STATUS_PLUS='+statut_plus.value+'&DESCRIPTION='+encodeURIComponent(description.value) +'&SERIAL='+serial.value+po+'&KM='+km.value+'&WRKEND_HOUR='+endhour.value +'&WRKEND_MINS='+endminute.value+'&WRKRETURN_HOUR='+returnhour.value +'&WRKRETURN_MINS='+returnminute.value+'&AUTHNUMBER='+authnumber +'&AUTHCHECK='+authcheck+'&NEXTVISIT='+nextvisit+'&NOPARTS='+noparts +'&INSTALLEDSEQUENCES='+installedsequences+'&UNINSTALLEDSEQUENCES='+uninstalledsequences +'&REPAIRCODE='+repaircode+'&REPAIRCODE2='+repaircode2+'&REPAIRCODE3='+repaircode3 +'&MODELE='+model.value+'&MARQUE='+brand.value+'&REASON='+reason+'&repairCodeIngenico1='+repairCodeIngenico1 +'&repairCodeIngenico2='+repairCodeIngenico2+'&repairCodeIngenico3='+repairCodeIngenico3 +'&who_signed_work_order='+who_signed_work_order+'&ingenico_talk_person='+ingenico_talk_person +'&cpu_pagecount='+cpu_pagecount+'&cpu_old_id='+cpu_old_id+'&cpu_callin='+cpu_callin+'&cpu_callout='+cpu_callout +'&cpu_new_id='+cpu_new_id+'&cpu_new_sn='+cpu_new_sn+'&cpu_new_model='+cpu_new_model+'&cpu_new_brand='+cpu_new_brand +'&cpu_new_status='+cpu_new_status+'&cpu_temporary='+cpu_temporary+'&cpu_temporary_test='+cpu_temporary_test +'&cpu_desc_prob='+encodeURIComponent(cpu_desc_prob) +'&cpu_desc_freq='+encodeURIComponent(cpu_desc_freq) +'&cpu_desc_traite='+encodeURIComponent(cpu_desc_traite); func_CallPHP_POST_travaux('ajax/ajax_AddWorktime.php',params,'Votre entrée de travail a été ajoutée avec succès.','Your work entry has been added succesfully.',form); } function resetWorkForm(form) { form.WRKSTART_HOUR.value = '00'; form.WRKSTART_MINS.value = '00'; form.WRKBEGIN_HOUR.value = '00'; form.WRKBEGIN_MINS.value = '00'; form.WRKEND_HOUR.value = '00'; form.WRKEND_MINS.value = '00'; form.WRKRETURN_HOUR.value = '00'; form.WRKRETURN_MINS.value = '00'; form.KM.value = '0'; if (form['iAuthorizationNumber'] != undefined) { form.iAuthorizationNumber.value = ''; } if (form['proautorisationnumber'] != undefined) { form.proautorisationnumber.value = ''; } if (form['iAuthorizationCheck'] != undefined) { form.iAuthorizationCheck.checked = false; } if (form['iNextVisit'] != undefined) { form.iNextVisit.checked = false; } if (form['InstalledSequences'] != undefined) { form.InstalledSequences.value = 0; } if (form['UninstalledSequences'] != undefined) { form.UninstalledSequences.value = 0; } if (form['RepairCodeText'] != undefined) { form.RepairCodeText.value = ''; } if (form['RepairCodeTextHidden'] != undefined) { form.RepairCodeTextHidden.value = ''; } if (form['RepairCode2Text'] != undefined) { form.RepairCode2Text.value = ''; } if (form['RepairCode2TextHidden'] != undefined) { form.RepairCode2TextHidden.value = ''; } if (form['RepairCode3Text'] != undefined) { form.RepairCode3Text.value = ''; } if (form['RepairCode3TextHidden'] != undefined) { form.RepairCode3TextHidden.value = ''; } if (form['dell1'] != undefined) { form.dell1[1].checked = true; } if (form['dell2'] != undefined) { form.dell2.value = ''; } if (form['dell3'] != undefined) { form.dell3[1].checked = true; } if (form['dell4'] != undefined) { form.dell4.value = ''; } if (form['dell5'] != undefined) { form.dell5.value = ''; } if (form['delldps'] != undefined) { form.delldps.value = ''; } if (form['delldpslo'] != undefined) { form.delldpslo.value = ''; } if (form['delltech'] != undefined) { form.delltech.value = ''; } if (form['DESCRIPTION'] != undefined) { form.DESCRIPTION.value = ''; } if (form['NomCie'] != undefined && form['NomCie']=='CPU') { form.CPU_DESC_PROB.value = ''; form.CPU_DESC_FREQ.value = ''; form.CPU_DESC_TRAITE.value = ''; } } function javaShowAppointments(appel) { appDiv = document.getElementById('AJAXRDV'); appDiv.innerHTML=func_CallPHP('ajax/ajax_ShowAppointments.php?id='+appel); } function javaSaveAppointments(form, paramReason = null) { appel = form.APPEL.value; dateRdv = form.dateRdv.value; hourBeginRdv = form.hourBeginRdv.value; hourEndRdv = form.hourEndRdv.value; jassigne = form.ASSIGNERV.value; technicien = form.TECH.value; contact = form.CONTACT.value; client = form.Customer.value; //statut = encodeURI(statut); langue = $("#langUser").val(); //newassign = form.WantAssignNew.value; AppDeadline = form.AppDeadline.value; var opendialog = false; //reason = paramReason; if (paramReason === null) { paramReason = ""; var limiteEch = strtotime(dateRdv+' '+hourBeginRdv+':00'); if (limiteEch > AppDeadline) { opendialog = true; } } if (opendialog == true) { if (langue == "fr") { $("#dialogFR").dialog("open"); } else { $("#dialogEN").dialog("open"); } } else { var jsparam = { 'id' : appel, 'caller' : 'javaSaveAppointments', 'dateRdv' : dateRdv, 'hourBeginRdv' : hourBeginRdv, 'hourEndRdv' : hourEndRdv, 'reason' : paramReason, 'assigne' : jassigne, 'TECH' : technicien, 'CONTACT' : contact, 'TYPE' : 'ProService Web' } if (client == 'APPLEEXPRESS') { appleexpress_inventaire = form.appleexpress_inventaire.value; jsparam['appleexpress_inventaire'] = appleexpress_inventaire; } $.ajax({ type: "POST", url: "ajax/ajax_AddAppointments.php", data: jsparam, success: function(result) { if (trim(result) == "OK") { appDiv = document.getElementById('AJAXRDV'); appDiv.innerHTML=func_CallPHP('ajax/ajax_ShowAppointments.php?id='+appel); if (client == 'APPLEEXPRESS') { $("input[value='"+appleexpress_inventaire+"']").prop("checked", true); } alert('Appointment successfully added.'); } else alert(result); }, error: function(result, status, error) { alert('An error has been detected. Please notify the system administrators. [Code #0003] ->' + error +'->'+status); } }); // $("#dialogFR").dialog("close"); // $("#dialogEN").dialog("close"); } //location.reload(); } function strtotime(str, now) { // http://kevin.vanzonneveld.net // + original by: Caio Ariede (http://caioariede.com) // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: David // + improved by: Caio Ariede (http://caioariede.com) // + improved by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Wagner B. Soares // + bugfixed by: Artur Tchernychev // % note 1: Examples all have a fixed timestamp to prevent tests to fail because of variable time(zones) // * example 1: strtotime('+1 day', 1129633200); // * returns 1: 1129719600 // * example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200); // * returns 2: 1130425202 // * example 3: strtotime('last month', 1129633200); // * returns 3: 1127041200 // * example 4: strtotime('2009-05-04 08:30:00'); // * returns 4: 1241418600 var i, match, s, strTmp = '', parse = ''; strTmp = str; //unecessary spaces strTmp = strTmp.replace(/\s{2,}|^\s|\s$/g, ' '); //unecessary chars strTmp = strTmp.replace(/[\t\r\n]/g, ''); if (strTmp == 'now') { //Return seconds, not milli-seconds return (new Date()).getTime()/1000; } else if (!isNaN(parse = Date.parse(strTmp))) { return (parse/1000); } else if (now) { //Accept PHP-style seconds now = new Date(now*1000); } else { now = new Date(); } strTmp = strTmp.toLowerCase(); var __is = { day: { 'sun': 0, 'mon': 1, 'tue': 2, 'wed': 3, 'thu': 4, 'fri': 5, 'sat': 6 }, mon: { 'jan': 0, 'feb': 1, 'mar': 2, 'apr': 3, 'may': 4, 'jun': 5, 'jul': 6, 'aug': 7, 'sep': 8, 'oct': 9, 'nov': 10, 'dec': 11 } }; var process = function (m) { var ago = (m[2] && m[2] == 'ago'); var num = (num = m[0] == 'last' ? -1 : 1) * (ago ? -1 : 1); switch (m[0]) { case 'last': case 'next': switch (m[1].substring(0, 3)) { case 'yea': now.setFullYear(now.getFullYear() + num); break; case 'mon': now.setMonth(now.getMonth() + num); break; case 'wee': now.setDate(now.getDate() + (num * 7)); break; case 'day': now.setDate(now.getDate() + num); break; case 'hou': now.setHours(now.getHours() + num); break; case 'min': now.setMinutes(now.getMinutes() + num); break; case 'sec': now.setSeconds(now.getSeconds() + num); break; default: var day; if (typeof (day = __is.day[m[1].substring(0, 3)]) != 'undefined') { var diff = day - now.getDay(); if (diff == 0) { diff = 7 * num; } else if (diff > 0) { if (m[0] == 'last') {diff -= 7;} } else { if (m[0] == 'next') {diff += 7;} } now.setDate(now.getDate() + diff); } } break; default: if (/\d+/.test(m[0])) { num *= parseInt(m[0], 10); switch (m[1].substring(0, 3)) { case 'yea': now.setFullYear(now.getFullYear() + num); break; case 'mon': now.setMonth(now.getMonth() + num); break; case 'wee': now.setDate(now.getDate() + (num * 7)); break; case 'day': now.setDate(now.getDate() + num); break; case 'hou': now.setHours(now.getHours() + num); break; case 'min': now.setMinutes(now.getMinutes() + num); break; case 'sec': now.setSeconds(now.getSeconds() + num); break; } } else { return false; } break; } return true; }; match = strTmp.match(/^(\d{2,4}-\d{2}-\d{2})(?:\s(\d{1,2}:\d{2}(:\d{2})?)?(?:\.(\d+))?)?$/); if (match != null) { if (!match[2]) { match[2] = '00:00:00'; } else if (!match[3]) { match[2] += ':00'; } s = match[1].split(/-/g); for (i in __is.mon) { if (__is.mon[i] == s[1] - 1) { s[1] = i; } } s[0] = parseInt(s[0], 10); s[0] = (s[0] >= 0 && s[0] <= 69) ? '20'+(s[0] < 10 ? '0'+s[0] : s[0]+'') : (s[0] >= 70 && s[0] <= 99) ? '19'+s[0] : s[0]+''; return parseInt(this.strtotime(s[2] + ' ' + s[1] + ' ' + s[0] + ' ' + match[2])+(match[4] ? match[4]/1000 : ''), 10); } var regex = '([+-]?\\d+\\s'+ '(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+ '|sun\.?|sunday|mon\.?|monday|tue\.?|tuesday|wed\.?|wednesday'+ '|thu\.?|thursday|fri\.?|friday|sat\.?|saturday)'+ '|(last|next)\\s'+ '(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+ '|sun\.?|sunday|mon\.?|monday|tue\.?|tuesday|wed\.?|wednesday'+ '|thu\.?|thursday|fri\.?|friday|sat\.?|saturday))'+ '(\\sago)?'; match = strTmp.match(new RegExp(regex, 'g')); if (match == null) { return false; } for (i = 0; i < match.length; i++) { if (!process(match[i].split(' '))) { return false; } } return (now.getTime()/1000); } function javaSendVente(form) { appel = form.appel; assign = form.ASSIGNE; tech = form.TECH; msg = form.message; if (msg.value == "") { alert('The communication message cannot be empty.'); msg.focus(); return; } var params = 'id='+appel.value+'&ASSIGNE='+assign.value+'&TECH='+tech.value+'&message='+msg.value; func_CallPHP_POST('ajax/ajax_SendVente.php',params,'Note de vente ajoutée avec succès.','Sale note added successfully'); form.reset(); } function javaSendTechnique(form) { appel = form.appel; assign = form.ASSIGNE; tech = form.TECH; msg = form.message; if (msg.value == "") { alert('The communication message cannot be empty.'); msg.focus(); return; } var params = 'id='+appel.value+'&ASSIGNE='+assign.value+'&TECH='+tech.value+'&message='+msg.value; func_CallPHP_POST('ajax/ajax_SendTechnique.php',params,'Note technique ajoutée avec succès.','Technical note added successfully'); form.reset(); } function javaReceiveDocument(form) { appel = form.appel; documentnum = form.documentnum; var params = 'id='+appel.value+'&documentnum='+documentnum.value; func_CallPHP_POST('ajax/ajax_ReceiveDocument.php',params,'Le document a bien été reçu. Merci.','The document has been received. Thank you.'); } function javaGoingOnSite(form) { appel = form.appel; technom = form.techGoing.value; var params = 'id='+appel.value+'&technom='+technom; func_CallPHP_POST_with_Call_Refresh('ajax/ajax_GoingOnSite.php',params,'Envoyé confirmation que le technicien est en route vers le site. Merci.','Confirmation sent that the technician is en route to the site. Thank you.',appel.value); } function javaOnSite(form) { appel = form.appel; technom = form.techSite.value; var params = 'id='+appel.value+'&technom='+technom; func_CallPHP_POST_with_Call_Refresh('ajax/ajax_OnSite.php',params,'Envoyé confirmation que technicien est arrivé sur site. Merci.','Send confirmation that the technician is on site. Thank you.',appel.value); } function javaLeaveSite(form) { appel = form.appel; var params = 'id='+appel.value; func_CallPHP_POST_with_Call_Refresh('ajax/ajax_LeaveSite.php',params,'Envoyé confirmation que technicien a quitté le site. Merci.','Send confirmation that the technician has left the site. Thank you.',appel.value); } function javaEndCall(form) { appel = form.appel; var params = 'id='+appel.value; func_CallPHP_POST_with_Call_Refresh('ajax/ajax_EndCall.php',params,'Envoyé confirmation que le technicien a terminé cet appel et est de retour au bureau. Merci.','Confirmation sent that the technician has completed call and is back at the office. Thank you.',appel.value); } function javaAccept(form) { appel = form.appel; result = func_CallPHP('ajax/ajax_Accept.php?id='+appel.value); if (trim(result) == "OK") { alert('The acceptance of this call has been sent. Thank you.'); } else { alert('An error has been detected. Please notify the system administrators. [Code #0007]'); alert(result); } } function javaSavePolygon(form) { polygoneid = form.id.value; points = form.MarkerList.value; result = func_CallPHP('../../ajax/ajax_SavePolygon.php?id='+polygoneid+'&points='+points); if (trim(result) == "OK") { alert('The points of the polygon have been saved successfully.. Thank you.'); } else { alert('An error has been detected. Please notify the system administrators. [Code #0008]'); alert(result); } } function javaGetAssign(form) { appel = form.appel; result = func_CallPHP('ajax/ajax_GetAssign.php?id='+appel.value); if (trim(result) == "OK") { alert('The reassignment of this call was completed successfully. Thank you.'); } else { alert('An error has been detected. Please notify the system administrators. [Code #0009]'); alert(result); } } function javaSetAssign(form) { appel = form.appel; assigne = form.ASSIGNE; nomAssigne = assigne.value; raison = prompt("Veuillez donner une raison pour la réassignation : ",""); if ((raison == null) || (raison == "")) { alert("Vous devez mettre une raison !"); return false; } result = func_CallPHP('ajax/ajax_SetAssign.php?id='+appel.value+'&assigne='+assigne.value+'&raison='+raison); if (trim(result)) { alert('The assignment of this call was completed successfully. Thank you.'); } else { alert('An error has been detected. Please notify the system administrators. [Code #0115]'); alert(result); } } function javaCalculateTravel(form) { appel = form.appel; $.ajax({ type: "POST", url: 'ajax/ajax_CalculateTravel.php?id='+appel.value, success: function(data) { alert('Transport calculated successfully. Thank you. '+data+'km total'); location.reload(); }, error: function() { alert('An error has been detected. Please notify the system administrators. [Code #0011]'); } }); } function javaGetFormCustomerInfos(form, typeservice, customer_type, customer_service) { customer = document.getElementById('customernumber_'+customer_type.toLowerCase()); customer = customer.value; partDiv = document.getElementById('AJAXPART_CUSTOMER_'+customer_type); partDiv.innerHTML=func_CallPHP('ajax/ajax_ShowFormCustomerInfos.php?id='+customer+'&typeservice='+typeservice+'&customer_type='+customer_type+'&customer_service='+customer_service); } function javaGetCustomerServiceAddressPicker(form, typeservice, customer_service) { customer = document.getElementById('customernumber_service'); customer = customer.value; partDiv = document.getElementById('AJAXPART_CUSTOMER_SERVICE_PICKER'); partDiv.innerHTML=func_CallPHP('ajax/ajax_GetCustomerServiceAddressPicker.php?id='+customer+'&serviceaddress='+customer_service); partDiv = document.getElementById('AJAXPART_CUSTOMER_SERVICE'); partDiv.innerHTML=func_CallPHP('ajax/ajax_ShowFormCustomerInfos.php?id='+customer+'&typeservice='+typeservice+'&customer_type=SERVICE&customer_service='+customer_service); } function javaGetSystemTagInfos(form) { systemtag = document.getElementById('systemtag'); systemtag = systemtag.value; taginfos = func_CallPHP('ajax/ajax_GetSystemTagInfos.php?systemtag='+systemtag); infoDiv = document.getElementById('AJAX_SYSTEM_INFOS'); infoHidden = document.getElementById('AJAX_SYSTEM_INFOS_HIDDEN'); infoHidden.value = taginfos; systemtagvalide = document.getElementById('system_tag_valide'); //Vérifier Out Of Warranty if (taginfos.indexOf('OUT OF WARRANTY') >= 0) { systemtagvalide.value = "non"; return "OUT OF WARRANTY"; } if (taginfos.indexOf('TAG NUMBER INVALIDE') >=0 ) { systemtagvalide.value = "non"; return "INVALID TAG NUMBER"; } if (taginfos.indexOf('OUT OF TIME') >=0 ) { systemtagvalide.value = "non"; return 'RETRY'; } systemtagvalide.value = "oui"; return "OK"; } function javaAddServiceAddress(customer, cuname, cucareof, cuaddress, cucity, cupostalcode, cuphonenumber, cuemail, typeservice) { customer = customer.value; cuname = cuname.value; cucareof = cucareof.value; cuaddress = cuaddress.value; cucity = cucity.value; cupostalcode = cupostalcode.value; cuphonenumber = cuphonenumber.value; cuemail = cuemail.value; returntext = func_CallPHP('ajax/ajax_AddServiceAddress.php?customer='+customer+'&cuname='+cuname+'&cucareof='+cucareof+'&cuaddress='+cuaddress+'&cucity='+cucity+'&cupostalcode='+cupostalcode+'&cuphonenumber='+cuphonenumber+'&cuemail='+cuemail); if (IsNumeric(trim(returntext))) { //Refresh le drop down des localisations javaGetCustomerServiceAddressPicker(customer,typeservice,trim(returntext)); return true; } else { alert(returntext); return false; } } function javaUpdServiceAddress(id, customer, cuname, cucareof, cuaddress, cucity, cupostalcode, cuphonenumber, cuemail, typeservice) { if (id == 0) { return false; } customer = customer.value; cuname = cuname.value; cucareof = cucareof.value; cuaddress = cuaddress.value; cucity = cucity.value; cupostalcode = cupostalcode.value; cuphonenumber = cuphonenumber.value; cuemail = cuemail.value; returntext = func_CallPHP('ajax/ajax_UpdServiceAddress.php?id='+id+'&customer='+customer+'&cuname='+cuname+'&cucareof='+cucareof+'&cuaddress='+cuaddress+'&cucity='+cucity+'&cupostalcode='+cupostalcode+'&cuphonenumber='+cuphonenumber+'&cuemail='+cuemail); if (IsNumeric(trim(returntext))) { //Refresh le drop down des localisations javaGetCustomerServiceAddressPicker(customer,typeservice,trim(returntext)); return true; } else { alert(returntext); return false; } } function javaWaitingParts(form) { appel = form.appel; status_plus = form.Piece_Status_Plus.value; result = func_CallPHP('ajax/ajax_WaitingParts.php?id='+appel.value+'&status_plus='+status_plus); if (trim(result) == "OK") { alert('Call status changed to waiting parts. Thank you.'); } else { alert('An error has been detected. Please notify the system administrators. [Code #0012]'); alert(result); } } function javaGetCertification(groupe, user) { certificationdiv = document.getElementById('divcertification'); certificationdiv.innerHTML=func_CallPHP('ajax/ajax_ShowCertification.php?groupe='+groupe+'&iduser='+user); } function javaUpdateDocument(callnumber, id_document, status, travaux) { var qt; if (status) { qt = 1; } else { qt = 0; } result = func_CallPHP('ajax/ajax_UpdateDocument.php?id='+callnumber+'&iddocument='+id_document+'&qt='+qt+'&travaux='+travaux); } function javaGetNearMap(lat, lng) { mapdiv = document.getElementById('divMapNear'); //Définition des paramètres pour la MAP var latlng = new google.maps.LatLng(lat, lng); var myOptions = { zoom: 10, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(mapdiv, myOptions); var baseIcon = new google.maps.MarkerImage('https://support.progitech.com/external/google/bullet_ball_blue.png'); var listNear = func_CallPHP('../../ajax/ajax_NearMap.php?lat='+lat+'&lng='+lng); var partners = listNear.split('\r\n'); for (x=0; x"; partDiv = document.getElementById(divname); partDiv.innerHTML=partlist; } return "OK"; } //VALIDATION DE DATE //Declaring valid date character, minimum year and maximum year var dtCh = "-"; var minYear = 1900; var maxYear = 2100; function isInteger(s) { var i; for (i = 0; i < s.length; i++) { //Check that current character is number. var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } //All characters are numbers. return true; } function stripCharsInBag(s, bag) { var i; var returnString = ""; //Search through string's characters one by one. //If character is not in bag, append to returnString. for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; } function daysInFebruary (year) { // February has 29 days in any year evenly divisible by four, // EXCEPT for centurial years which are not also divisible by 400. return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); } function DaysArray(n) { for (var i = 1; i <= n; i++) { this[i] = 31; if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;} if (i==2) {this[i] = 29;} } return this; } function isDateValide(dtStr) { var daysInMonth = DaysArray(12); var pos1 = dtStr.indexOf(dtCh); var pos2 = dtStr.indexOf(dtCh, pos1 + 1); var strYear = dtStr.substring(0, pos1); var strMonth = dtStr.substring(pos1 + 1, pos2); var strDay = dtStr.substring(pos2 + 1); strYr = strYear; if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1); if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1); for (var i = 1; i <= 3; i++) { if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1); } month = parseInt(strMonth); day = parseInt(strDay); year = parseInt(strYr); if (pos1==-1 || pos2==-1) { alert('The date format is incorrect : YYYY-MM-DD'); return false; } if (strMonth.length<1 || month<1 || month>12) { alert('Enter a valid month'); return false; } if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]) { alert('Enter a valid day'); return false; } if (strYear.length != 4 || year==0 || yearmaxYear) { alert('Enter 4 valid numbers between '+minYear+' and '+maxYear); return false; } if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false) { alert('Enter a valid date'); return false; } return true; } function addNewGroupe(form, mode) { var groupe = form.group.value; var userID = form.userID.value; var oldGroupe = ""; if (typeof form.oldGroup != 'undefined') { oldGroupe = form.oldGroup.value; } $.ajax({ url: "ajax/ajax_AddRemGroupe.php", type: "POST", datatype: "text", data: {userID: userID, groupe: groupe, mode: mode, oldGroupe: oldGroupe}, success:function(result){ if (result == "Okay") { alert("Opération effectué avec succès"); location.href = location.href; } else { alert("Opération refusé"); } } }); } //function to make form values to json format $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };