function initSubmenuForm() { // Accéder aux informations stockées du parcours const parcours = JSON.parse(sessionStorage.getItem('parcours')); } // Exposer initSubmenuForm globalement pour y accéder depuis l'extérieur window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollution de l'espace global (function() { // Variables globales du module let parcours, contrat, tppc, tarif, projet; // Variables propositions let franchise150, franchise300, mini150, mini300 //Variables modulos et liste let objModAct, objModMar, objModFlotte, objModCot, objModSinistre, objPrimeMini, listTypeVehicule, objMarEnExpo //variables modale tarif commercial const seuil = 15 // Initialisation du formulaire et des données function init() { // Materialize init select var select = document.querySelectorAll('select'); M.FormSelect.init(select); // Materialize init Modal var modals = document.querySelectorAll('.modal'); M.Modal.init(modals); // Accéder aux informations stockées du parcours parcours = JSON.parse(sessionStorage.getItem('parcours')); contrat = JSON.parse(sessionStorage.getItem('contrat')); tppc = contrat?.["@expand"]?.enCours || null; tarif = tppc?.["@expand"]?.tarif || null; projet = tppc?.["@expand"]?.projet || null; console.log("Initialisation pour formulaire projet :", parcours); // Appel des différentes fonctions d'initialisation setupEventListeners(); //Appel des constantes JSON pour remplir les selects puis remplir les champs constantsJSON().then(() => { fillSelects(); populateFormData(); }) } // Configuration des écouteurs d'événements function setupEventListeners() { document.getElementById('loadHistoriqueBtn').addEventListener('click', function() { handleLoadHistoriqueBtn(); }); document.getElementById('btnAddTypeVehicule').addEventListener('click', function() { const typeVehTarif = document.getElementById('typeVehTarif').value const capitalTarif = document.getElementById('capitalTarif').value const garTarif = document.getElementById('garTarif').value const typeMarTarif = document.getElementById('typeMarTarif').value const nbVehiculesTarif = document.getElementById('nbVehiculesTarif').value const primeVehTarif = document.getElementById('primeVehTarif').value const primeHTTarif = document.getElementById('primeHTTarif').value const modulo = document.getElementById('modulo').value addRowTarification(typeVehTarif, capitalTarif, garTarif, typeMarTarif, nbVehiculesTarif, primeVehTarif, primeHTTarif, modulo); // Réinitialiser les valeurs de saisie emptyRowTarification() }); document.querySelectorAll('input[name=typeContrat]').forEach((element) => element.addEventListener('click', function() { toggleTypeContrat(this.value) if (tarif && tarif.montantSinistre !== undefined) { document.getElementById('sinistre').value = tarif.montantSinistre } else { document.getElementById('sinistre').value = "" } checkSinistre() })) document.getElementById('capitalVehicule').addEventListener('input', function() { validateField('capitalVehicule', true) updateSubmitButtonState('tarifFormTPPC') if (isSelected('marAnimaux') && this.value > 200000) { openModaleAniViv() } }) document.getElementById('flotte').addEventListener('input', function () { validateField('flotte', true) updateSubmitButtonState('tarifFormTPPC') const moduloChipFlotte = document.getElementById('chip-modulo-flotte') updateModuloChip(moduloChipFlotte, calcModFlotte(this.value)) }) document.getElementById('marAssuree').addEventListener('change', function() { updateMarAssuree() }) document.querySelectorAll('input[type="checkbox"][name="garSouhaitees"]').forEach((checkbox) => { checkbox.addEventListener('click', function() { checkBennesGaranties() }) }) document.getElementById('activite').addEventListener('change', function () { validateField('activite', true) updateSubmitButtonState('tarifFormTPPC') checkActivite(this); }) document.querySelectorAll('.franchise-card button').forEach((button) => button.addEventListener('click', function (e) { e.preventDefault() openModaleTarifCom(this.name) })) document.getElementById('bouton-grille').addEventListener('click', function() { const modal = document.getElementById('modalGrille') const instance = M.Modal.getInstance(modal) instance.open() }) document.getElementById('marEnExpo').addEventListener('change', function() { document.getElementById('marEnExpo-div').style.display = (this.checked) ? "block" : "none" }) document.querySelectorAll('input').forEach((element) => { element.addEventListener('input', function () { affichagePropositions(); }) }) document.querySelectorAll('select').forEach((element) => { element.addEventListener('change', function () { affichagePropositions(); }) }) document.getElementById('comm-OK').addEventListener('click', function () { submitForm(this.name) }) document.getElementById('commentaire').addEventListener('input', function () { if (document.getElementById('commentaire').value == "") { document.getElementById('comm-OK').disabled = true } else { document.getElementById('comm-OK').disabled = false } }) setupTableEventListeners() } function setupTableEventListeners() { const lignes = document.querySelectorAll('table#empTableTarifVehicules tr:not(#header)') lignes.forEach((ligne) => { const selectTypeMar = ligne.querySelector('select[name="typeMarTarif"]') const selectGarChoisies = ligne.querySelector('select[name="garTarif"]') const chipModulo = ligne.querySelector('div[name="moduloTarif"]') const inputModulo = ligne.querySelector('input[name="modulo"]') const inputPrimeVehicule = ligne.querySelector('input[name="primeVehTarif"]') const inputPrimeHTTarif = ligne.querySelector('input[name="primeHTTarif"]') const inputCapital = ligne.querySelector('input[name="capitalTarif"]') const inputNbrVehicule = ligne.querySelector('input[name="nbVehiculesTarif"]') const deleteButton = ligne.querySelector('.delete-btn') inputPrimeVehicule.addEventListener('input', function () { inputPrimeHTTarif.value = inputPrimeVehicule.value * inputNbrVehicule.value }) inputNbrVehicule.addEventListener('input', function () { inputPrimeHTTarif.value = inputPrimeVehicule.value * inputNbrVehicule.value }) selectTypeMar.addEventListener('change', function() { const moduloMar = calcModMar(this.value) updateModuloChip(chipModulo, moduloMar) inputModulo.value = moduloMar }) inputCapital.addEventListener('input', function () { inputPrimeVehicule.value = calcModCot(selectGarChoisies.value, inputCapital.value) || 0 inputPrimeHTTarif.value = inputPrimeVehicule.value * inputNbrVehicule.value }) selectGarChoisies.addEventListener('change', function() { inputPrimeVehicule.value = calcModCot(selectGarChoisies.value, inputCapital.value) || 0 inputPrimeHTTarif.value = inputPrimeVehicule.value * inputNbrVehicule.value }) if (deleteButton !== null) { deleteButton.addEventListener('click', function () { deleteRow(this); affichagePropositions(); }); } ligne.querySelectorAll('select').forEach((select) => { select.addEventListener('change', function() { checkBennesGarantiesTarif(ligne) affichagePropositions(); }) }) ligne.querySelectorAll('input').forEach((input) => { input.addEventListener('input', function () { checkBennesGarantiesTarif(ligne) affichagePropositions(); }) }) }) } //Appel pour recevoir les constantes async function constantsJSON() { try { const responsesJSON = await Promise.all([ fetch('/tppc/modulo/activite'), fetch('/tppc/modulo/marchandise'), fetch('/tppc/modulo/flotte'), fetch('/tppc/modulo/cotisation'), fetch('/tppc/modulo/sinistre'), fetch('/tppc/modulo/primeMini'), fetch('/tppc/list/vehicule'), fetch('/tppc/modulo/marEnExpo') ]); const jsonResponses = await Promise.all(responsesJSON.map(r => r.json())); // Récupérer toutes les réponses JSON // Extraire la valeur objRetourne de chaque réponse [ objModAct, objModMar, objModFlotte, objModCot, objModSinistre, objPrimeMini, listTypeVehicule, objMarEnExpo ] = jsonResponses.map(response => response.objRetourne); // Adapter pour extraire objRetourne } catch (err) { throw err; } } //Remplissage des select et des champs avec les propositions function fillSelects() { //Remplissage des activites const listeActiviteObj = {} //Creation objets avec liste d'activité en clé, et null en valeur for (const activite of Object.keys(objModAct)) { listeActiviteObj[activite] = null } var elems = document.querySelectorAll('.autocomplete'); M.Autocomplete.init(elems, { data: listeActiviteObj, limit: 10 }) /******************************************/ //Remplissage des selects const selectMar = document.getElementById('marAssuree') const selectMarTarif = document.getElementById('typeMarTarif') const selectMarEnExp = document.getElementById('typeMarEnExp') //Fonction pour créer les select options const optionCreator = (text, value) => { let option = document.createElement('option') option.value = value option.text = text return option } for (const [key, value] of Object.entries(objModMar)) { if (value['tarif']) { selectMar.add(optionCreator(value['tarif'], key)) selectMarTarif.add(optionCreator(value['tarif'], key)) } } for (const [key, value] of Object.entries(objMarEnExpo)) { selectMarEnExp.add(optionCreator(value['nom'], key)) } var select = document.querySelectorAll('select'); M.FormSelect.init(select); } //Remplissage des champs et des selects avec les données sauvegardées function populateFormData() { // Populate select historique if (!contrat.historique) { document.getElementById('historiqueDiv').style.display = "none"; } else { document.getElementById('historiqueDiv').style.display = "block"; const idSelect = document.getElementById('idSelect'); contrat.historique.forEach(function(item) { var option = document.createElement('option'); option.value = item.id; option.textContent = item.type + " " + item.produit + " - " + item.date + " - " + item.heure; if (item.nom != undefined && item.prenom != undefined) { option.textContent += " - " + item.nom + " " + item.prenom; } idSelect.appendChild(option); }); M.FormSelect.init(idSelect); } if (tppc.actAssuree) { document.getElementById('activite').value = tppc.actAssuree checkActivite(document.getElementById('activite')) } if (tppc.cotCapVeh) { document.getElementById('capitalVehicule').value = tppc.cotCapVeh } if (tppc.nbVehic) { document.getElementById('flotte').value = tppc.nbVehic updateModuloChip(document.getElementById('chip-modulo-flotte'), calcModFlotte(tppc.nbVehic)) } if (tppc.garanties) { if (tppc.garanties.includes('HIAC')) { document.getElementById('garSouhaitees-HIAC').checked = true } if (tppc.garanties.includes('Vol')) { document.getElementById('garSouhaitees-vol').checked = true } } // Remplissage des marchandises assurées const marAssuree = [] if (tppc.marOrdinaires) { document.querySelector('select#marAssuree option[value="marOrdinaires"]').selected = true; marAssuree.push("marOrdinaires") } if (tppc.marBennes) { document.querySelector('select#marAssuree option[value="marBennes"]').selected = true; marAssuree.push("marBennes") } if (tppc.marDenreesHorsTemp) { document.querySelector('select#marAssuree option[value="marDenreesHorsTemp"]').selected = true; marAssuree.push("marDenreesHorsTemp") } if (tppc.marDenreesSousTemp) { document.querySelector('select#marAssuree option[value="marDenreesSousTemp"]').selected = true; marAssuree.push("marDenreesSousTemp") } if (tppc.marAuto) { document.querySelector('select#marAssuree option[value="marAuto"]').selected = true; marAssuree.push("marAuto") } if (tppc.marRisques) { document.querySelector('select#marAssuree option[value="marRisques"]').selected = true; marAssuree.push("marRisques") } if (tppc.marCiternes) { document.querySelector('select#marAssuree option[value="marCiternes"]').selected = true; marAssuree.push("marCiternes") } if (tppc.marEngins) { document.querySelector('select#marAssuree option[value="marEngins"]').selected = true; marAssuree.push("marEngins") } if (tppc.marAnimaux) { document.querySelector('select#marAssuree option[value="marAnimaux"]').selected = true; marAssuree.push("marAnimaux") } if (marAssuree.length > 0) { updateMarAssuree() } M.FormSelect.init(document.querySelector('select#marAssuree')) // Remplissage des marchandises en exposition if(tppc.marEnExpo) { document.getElementById('marEnExpo').checked = true document.getElementById('marEnExpo-div').style.display = "block" document.getElementById('nombreExposition').value = tppc.nbExpo document.getElementById('capitalExposition').value = tppc.capExpo document.querySelector('select#typeMarEnExp option[value="'+ tppc.typeMarExpo +'"]').selected = true; } M.FormSelect.init(document.querySelector('select#typeMarEnExp')) if (tarif && tarif.typeContrat) { //Si Le Parcours Possede Un Type De Contrat toggleTypeContrat(tarif.typeContrat) if (tarif.typeContrat == 'detaillee') { document.getElementById('cotisationDetaillee').checked = true document.getElementById('cotisationEnsemble').checked = false } else if (tarif.typeContrat == 'ensemble') { document.getElementById('cotisationDetaillee').checked = false document.getElementById('cotisationEnsemble').checked = true } } else if (tppc.tarFlotte && tppc.tarFlotte.length > 0) { // Si Le Parcours N'a Pas De Type De Contrat (Tarif) Mais Une flotte détaillée (Projet) toggleTypeContrat('detaillee') document.getElementById('cotisationDetaillee').checked = true document.getElementById('cotisationEnsemble').checked = false } else { document.getElementById('cotisationEnsemble').checked = true toggleTypeContrat('ensemble') } if (tarif && tarif.montantSinistre !== undefined && tarif.montantSinistre >= 0) { document.getElementById('sinistre').value = tarif.montantSinistre updateModuloChip(document.getElementById('chip-modulo-sinistre'), calcModSinistre(tarif.montantSinistre)) } if (tppc.tarFlotte && Object.keys(tppc.tarFlotte).length !== 0) { for (let i = 0; i < tppc.tarFlotte.length; i++) { const row = tppc.tarFlotte[i]; addRowTarification(row.typeVehTarif, row.capitalTarif, row.garTarif, row.typeMarTarif, row.nbVehiculesTarif, row.primeVehTarif, row.primeHTTarif, row.modulo) } } affichagePropositions() } function updateMarAssuree() { const options = document.querySelectorAll('#marAssuree option:not([value=""])'); options.forEach((option) => { if (option.selected) { document.getElementById(option.value + '-chip').style.display = "inline-block" } else { document.getElementById(option.value + '-chip').style.display = "none" } }) const capitalVehicule = document.getElementById('capitalVehicule').value if (isSelected('marAnimaux') && capitalVehicule > 200000) { openModaleAniViv() } const selectedOpt = [...document.querySelectorAll('#marAssuree option:checked:not([value=""])')].map((option => option.value)) const moduloChipMarAssuree = document.getElementById('chip-modulo-marAssuree') updateModuloChip(moduloChipMarAssuree, calcModMar(selectedOpt)) checkBennesGaranties() } function toggleTypeContrat(typeContrat) { if (typeContrat == "ensemble") { document.getElementById('row-tarification-vehicules').style.display = "none" document.getElementById('card-tarif-mod-mar').style.display = "none" document.getElementById('card-tarif-mod-mar').style.display = "none" document.getElementById('col-capitalVehicule').style.display = "block" document.getElementById('col-flotte').style.display = "block" document.getElementById('col-marAssuree').style.display = "block" document.getElementById('col-garSouhaitees').style.display = "block" document.getElementById('card-tarif-par-vehicule').style.display = "block" document.getElementById('card-nbr-vehicule').style.display = "block" document.getElementById('card-tarif-mod').style.display = "none" } else if (typeContrat == "detaillee") { document.getElementById('row-tarification-vehicules').style.display = "block" document.getElementById('card-tarif-mod-mar').style.display = "block" document.getElementById('card-tarif-mod-mar').style.display = "block" document.getElementById('card-tarif-mod').style.display = "block" document.getElementById('col-capitalVehicule').style.display = "none" document.getElementById('col-flotte').style.display = "none" document.getElementById('col-marAssuree').style.display = "none" document.getElementById('col-garSouhaitees').style.display = "none" document.getElementById('card-tarif-par-vehicule').style.display = "none" document.getElementById('card-nbr-vehicule').style.display = "none" } fillTarifCard('tarif-total-vehicule', 0.00) } function getGaranties() { return [...document.querySelectorAll('[name = "garSouhaitees"]:checked')] .map((garantie) => garantie.value) .join('+') } function getGarantiesFromFlotte() { const garSet = new Set(); const selectsArray = document.querySelectorAll('#empTableTarifVehicules tr:not(#header) [name="garTarif"]') selectsArray.forEach((select) => { select.value.split('+').forEach(garantie => garSet.add(garantie)) }) return [...garSet] } function calcModFlotte(flotte) { if (flotte == "" || !validateField('flotte')) { return null } flotte = parseFloat(flotte); // Parcourir le JSON modFlotte pour trouver la valeur correspondante for (let palier in objModFlotte) { if (flotte <= parseFloat(palier)) { return parseFloat(objModFlotte[palier]); // Retourner la valeur correspondante } } return 1.00; // Par défaut, retourner 1.00 si aucune correspondance n'est trouvée } function calcModMar(marchandises) { if (marchandises == "" || marchandises.length == 0) { return null } if (typeof marchandises == "object") { var modulo = 1 marchandises.forEach((mar) => { modulo = parseFloat(modulo * objModMar[mar]['modulo']) }) return modulo.toFixed(2) } else { return parseFloat(objModMar[marchandises]['modulo']) } } function calcModAct(activite) { if (activite == "") { return null } if (!Object.keys(objModAct).includes(activite)) { return null } return parseFloat(objModAct[activite]) } function calcModCot(garanties, capital) { const paliers = Object.keys(objModCot) for (let maxMontant in paliers) { if (capital <= parseFloat(paliers[maxMontant])) { return parseFloat(objModCot[paliers[maxMontant]][garanties]) } } return null } function calcNbrVehiculesTotal() { const lignes = document.querySelectorAll('#empTableTarifVehicules tr:not(#header)') var nbrVehicules = 0 lignes.forEach((ligne) => { nbrVehicules += parseInt(ligne.querySelector("[name='nbVehiculesTarif']").value) }) return nbrVehicules } function calcPrimeMinimum(prime) { if (prime <= objPrimeMini["IAC + Vol"]) { if (document.getElementById('garSouhaitees-vol').checked) { //SI IAC + HIAC + VOL ou IAC + VOL return parseFloat(objPrimeMini["IAC + Vol"]) } else { //SI IAC + HIAC ou IAC return parseFloat(objPrimeMini["IAC + HIAC"]) } } else { return prime } } function calcPrimeTotaleHT() { const lignes = document.querySelectorAll('#empTableTarifVehicules tr:not(#header)') var cotBase = 0 lignes.forEach((ligne) => { const primeHT = parseFloat(ligne.querySelector('[name="primeHTTarif"]').value) || 0 cotBase += primeHT }) return cotBase.toFixed(2) } function calcPrimeTotaleHTModulee() { const lignes = document.querySelectorAll('#empTableTarifVehicules tr:not(#header)') var cotBrute = 0 lignes.forEach((ligne) => { const modMarchandise = ligne.querySelector('input[name="modulo"]').value || 0 const primeHT = ligne.querySelector('[name="primeHTTarif"]').value || 0 const primeModulee = primeHT * modMarchandise cotBrute += primeModulee }) return cotBrute.toFixed(2) } function calcPrimeMoyenne() { const nbrVehicules = document.getElementById('flotte').value const capital = document.getElementById('capitalVehicule').value const selectedOpt = [...document.querySelectorAll('#marAssuree option:checked:not([value=""])')].map((option => option.value)) const tarifVehicule = calcModCot(getGaranties(), capital) const prime = tarifVehicule * nbrVehicules const moduloAct = calcModAct(document.getElementById('activite').value) const moduloMar = calcModMar(selectedOpt) const moduloCA = 1 const moduloFlotte = calcModFlotte(document.getElementById('flotte').value) const coeffMoyen = moduloFlotte > moduloCA ? moduloCA : moduloFlotte return Number.parseInt(prime * coeffMoyen * moduloAct * moduloMar).toFixed(2) } function calcPrimeMoyenneTarif() { const moduloFlotte = calcModFlotte(calcNbrVehiculesTotal()) const moduloCA = 1 const moduloAct = calcModAct(document.getElementById('activite').value) const coeffMoyen = moduloFlotte > moduloCA ? moduloCA : moduloFlotte const cotMarchandise = calcPrimeTotaleHTModulee() return Number.parseFloat(cotMarchandise * coeffMoyen * moduloAct) } function calcModSinistre(sinistre) { const pourcentages = Object.keys(objModSinistre).map(Number).sort() //Récupération, conversion en float puis classement des pourcentages const cotDetaillee = document.getElementById('cotisationDetaillee').checked const primeMoyenne = cotDetaillee ? calcPrimeMoyenneTarif() : calcPrimeMoyenne() sinistre = parseFloat(sinistre) if ((primeMoyenne == 0 && sinistre == 0)) { return 1.00 } else if (sinistre < (primeMoyenne * pourcentages[0])) { //- que 40% de la prime return objModSinistre[pourcentages[0]] } else if ((sinistre >= (primeMoyenne * pourcentages[0])) && (sinistre < (primeMoyenne * pourcentages[1]))) { //entre 40 et 70% de la prime return objModSinistre[pourcentages[1]] } else if ((sinistre >= (primeMoyenne * pourcentages[1])) && (sinistre <= (primeMoyenne * pourcentages[2]))) { //entre 40 et 70% de la prime return objModSinistre[pourcentages[2]] } else if (sinistre > primeMoyenne || sinistre == '') { //superieur à la prime return null } else { return 1.00 } } function updateModuloChip(elementModulo, valeur) { if (valeur == null) { elementModulo.style.display = "none" } else { elementModulo.style.display = "inline-block" const titreModulo = elementModulo.innerText.split(' : ')[0] elementModulo.innerText = titreModulo + ' : x' + valeur } } function checkBennesGaranties() { const caseHIAC = document.querySelector('input[name="garSouhaitees"][value="HIAC"]') const caseVol = document.querySelector('input[name="garSouhaitees"][value="Vol"]') if (document.querySelector('#marAssuree option[value="marBennes"]:checked') !== null) { const textError = "Vous ne pouvez choisir la garantie tous risques avec pour marchandise assurée : Bennes" if (caseHIAC.checked && caseVol.checked) { caseHIAC.checked = false caseVol.checked = false document.getElementById('garSouhaitees-error').innerText = textError document.getElementById('garSouhaitees-error').style.display = "block" } else if (caseHIAC.checked || caseVol.checked) { document.getElementById('garSouhaitees-error').innerText = textError document.getElementById('garSouhaitees-error').style.display = "block" if (caseHIAC.checked) { caseVol.disabled = true } else if (caseVol.checked) { caseHIAC.disabled = true } } else if (!caseHIAC.checked && !caseVol.checked) { caseHIAC.disabled = false caseVol.disabled = false document.getElementById('garSouhaitees-error').innerText = "" } } else { document.getElementById('garSouhaitees-error').innerText = "" caseHIAC.disabled = false caseVol.disabled = false } } function checkSinistre() { const inputSinistre = document.getElementById('sinistre') if (validateField('sinistre'), true) { updateSubmitButtonState('tarifFormTPPC') if (inputSinistre.value !== "") { const errorElement = document.getElementById('sinistre-error') const modSinistre = calcModSinistre(inputSinistre.value) const moduloChipSinistre = document.getElementById('chip-modulo-sinistre') updateModuloChip(moduloChipSinistre, modSinistre) if (projet && projet.antSin !== undefined && projet.antSin !== "" && (projet.antSin == 0 && inputSinistre.value > 0)) { errorElement.textContent = "Vous avez renseigné " + projet.antSin + " antécédent" errorElement.style.display = "block" return true } if (modSinistre == null) { errorElement.textContent = "Le montant d'antécédent de sinistre est supérieur au montant de la prime" errorElement.style.display = "block" return false } else { errorElement.textContent = "" errorElement.style.display = "none" return true } } else { return false } } } function checkBennesGarantiesTarif(row) { const typeVehicule = row.querySelector("input[name = typeVehTarif]") const typeMar = row.querySelector("select[name = typeMarTarif]") const garSouscrites = row.querySelector("select[name = garTarif]") const regex = /\bbenne\b|\b.*benne.*\b/i; if ((typeVehicule.value.match(regex) || typeMar.value == "marBennes")) { garSouscrites.querySelector('[value="IAC+HIAC+Vol"]').disabled = true typeMar.querySelector('[value="marBennes"]').disabled = false if (garSouscrites.value == "IAC+HIAC+Vol") { garSouscrites.value = "" document.getElementById("message-BenneTousRisques").style.display = "block" } } else if (garSouscrites.value == "IAC+HIAC+Vol") { typeMar.querySelector('[value="marBennes"]').disabled = true } else { typeMar.querySelector('[value="marBennes"]').disabled = false garSouscrites.querySelector('[value="IAC+HIAC+Vol"]').disabled = false document.getElementById("message-BenneTousRisques").style.display = "none" } var select = row.querySelectorAll('select'); M.FormSelect.init(select); } function checkActivite(input) { const errorElement = document.getElementById('activite-error') const moduloChipAct = document.getElementById('chip-modulo-activite') if (Object.keys(objModAct).includes(input.value)) { errorElement.textContent = "" errorElement.style.display = "none" updateModuloChip(moduloChipAct, calcModAct(input.value)) return true } else { errorElement.textContent = "Veuillez selectionner une activité parmi la liste" errorElement.style.display = "block" updateModuloChip(moduloChipAct, null) return false } } function openModaleAniViv() { const elem = document.getElementById('modalAnimauxVivants'); const instance = M.Modal.getInstance(elem); instance.open(); } function handleLoadHistoriqueBtn() { var selectedId = document.getElementById('idSelect').value; if (selectedId != "") { fetch(`/contrat/update/${contrat.produit}/${contrat.id}/${selectedId}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }) .then(response => response.json()) .then(data => { if (data.valid) { window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=projet`; } else { console.log('Echec lors de la mise à jour de la relation id contrat - id client :', data); } }); } } function addRowTarification(typeVehTarif, capitalTarif, garTarif, typeMarTarif, nbVehiculesTarif, primeVehTarif, primeHTTarif, modulo) { const table = document.getElementById('empTableTarifVehicules'); const newRow = table.insertRow(table.rows.length - 1); const emptyRow = `