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, client, intermediaire; // Initialisation des tag pour select var tagAnimauxVivants = false; var tagMultimodal = false; var tagDemenageur = false; var tagDemenageurParticulier = false; var tagDemenageurParticulierDeclaree = false; var tagDemenageurParticulierAdvalorem = false; var tagGardeMeubles = false; var tagVoiturier = false; var tagDemenageurEntrInter = false; // 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')); client = contrat?.["@expand"]?.client || null; intermediaire = contrat?.["@expand"]?.intermediaire || null; rc = contrat?.["@expand"]?.enCours || null; console.log("Initialisation pour formulaire projet :", parcours); // Appel des différentes fonctions d'initialisation setupEventListeners(); populateFormData(); updateSubmitButtonState('projetForm'); } // Configuration des écouteurs d'événements function setupEventListeners() { document.getElementById('projetFormBtn').addEventListener('click', handleSubmitForm); document.getElementById('loadHistoriqueBtn').addEventListener('click', function () { handleLoadHistoriqueBtn(); }); document.getElementById('activity-selector').addEventListener('change', function () { handleActivitySelection(); }); document.getElementById('marchandise-selector').addEventListener('change', function () { handleMarchandiseSelection(); }); document.getElementById('garantieRCC-selector').addEventListener('change', function () { handleGarantieRCCSelection(); }); document.getElementById('garantieRCE-selector').addEventListener('change', function () { handleGarantieRCESelection(); }); document.getElementById('choixRCE').addEventListener('change', function () { if (document.getElementById("choixRCE").checked) { document.getElementById('garantieRCE').style.display = 'block'; document.getElementById('RCE1').style.display = ''; document.getElementById('RCE2').style.display = ''; } else { document.getElementById('garantieRCE').style.display = 'none'; document.getElementById('RCE1').style.display = 'none'; document.getElementById('RCE2').style.display = 'none'; document.getElementById('cotRCEHT').value = ''; document.getElementById('cotRCETTC').value = ''; document.getElementById('tauxRCEHT').value = ''; document.getElementById('tauxRCETTC').value = ''; } calcCotTotal(); }); document.getElementById('btnAddAdditionnel').addEventListener('click', function () { const nomValue = document.getElementById('nomAdditionnel').value || 'Non défini'; const adresseValue = document.getElementById('adresseAditionnel').value || 'Non défini'; const siretValue = document.getElementById('siretAdditionnel').value || 'Non défini'; addRowAdditionnel(nomValue, adresseValue, siretValue); }); document.getElementById('btnAddVehicule').addEventListener('click', function () { const marqueValue = document.getElementById('marqueVehicule').value || 'Non défini'; const genreValue = document.getElementById('genreVehicule').value || 'Non défini'; const typeValue = document.getElementById('typeVehicule').value || 'Non défini'; const immatValue = document.getElementById('immatVehicule').value || 'Non défini'; const capitalValue = document.getElementById('capitalVehicule').value || 'Non défini'; addRowVehicule(marqueValue, genreValue, typeValue, immatValue, capitalValue); }); document.getElementById('btnAdvaloTerrestre').addEventListener('click', function () { document.getElementById('divAdvaloTerrestre').style.display = "block"; document.getElementById('divAdvaloMultimodal').style.display = "none"; document.getElementById('divAdvaloAerien').style.display = "none"; }); document.getElementById('btnAdvaloMultimodal').addEventListener('click', function () { document.getElementById('divAdvaloTerrestre').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "block"; document.getElementById('divAdvaloAerien').style.display = "none"; }); document.getElementById('btnAdvaloAerien').addEventListener('click', function () { document.getElementById('divAdvaloTerrestre').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "none"; document.getElementById('divAdvaloAerien').style.display = "block"; }); document.getElementById('switchPJ').addEventListener('change', function () { if (document.getElementById("switchPJ").checked) { document.getElementById('PJ1').style.display = ''; document.getElementById('PJ2').style.display = ''; } else { document.getElementById('PJ1').style.display = 'none'; document.getElementById('PJ2').style.display = 'none'; document.getElementById('cotPJHT').value = ''; document.getElementById('cotPJTTC').value = ''; } calcCotTotal(); }); document.getElementById('btnMondeEntier').addEventListener('click', function () { document.getElementById('zone1').checked = true; document.getElementById('zone1').disabled = true; document.getElementById('zone2').checked = true; document.getElementById('zone2').disabled = true; document.getElementById('zone3').checked = true; document.getElementById('zone4').checked = true; document.getElementById('zone5').checked = true; document.getElementById('zone6').checked = true; handleGrAdvalo(); }); document.getElementById('btnReset').addEventListener('click', function () { document.getElementById('zone1').checked = false; document.getElementById('zone1').disabled = false; document.getElementById('zone2').checked = false; document.getElementById('zone2').disabled = false; document.getElementById('zone3').checked = false; document.getElementById('zone4').checked = false; document.getElementById('zone5').checked = false; document.getElementById('zone6').checked = false; handleGrAdvalo(); }); document.getElementById('btnZone1').addEventListener('click', function () { const elem = document.getElementById('modalZone1'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone2').addEventListener('click', function () { const elem = document.getElementById('modalZone2'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone3').addEventListener('click', function () { const elem = document.getElementById('modalZone3'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone4').addEventListener('click', function () { const elem = document.getElementById('modalZone4'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone5').addEventListener('click', function () { const elem = document.getElementById('modalZone5'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone6').addEventListener('click', function () { const elem = document.getElementById('modalZone6'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnZone7').addEventListener('click', function () { const elem = document.getElementById('modalZoneExclus'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('zone1').addEventListener('click', function () { handleGrAdvalo(); }); document.getElementById('zone2').addEventListener('click', function () { if (document.getElementById('zone2').checked == true) { document.getElementById('zone1').checked = true; document.getElementById('zone1').disabled = true; } else if (document.getElementById('zone2').checked == false) { document.getElementById('zone1').checked = true; document.getElementById('zone1').disabled = false; } handleGrAdvalo(); }); document.getElementById('zone3').addEventListener('click', function () { if (document.getElementById('zone3').checked == true) { document.getElementById('zone2').checked = true; document.getElementById('zone1').checked = true; document.getElementById('zone2').disabled = true; document.getElementById('zone1').disabled = true; } else if (document.getElementById('zone3').checked == false) { document.getElementById('zone1').checked = true; document.getElementById('zone1').disabled = true; document.getElementById('zone2').checked = true; document.getElementById('zone2').disabled = false; } handleGrAdvalo(); }); document.getElementById('zone4').addEventListener('click', function () { handleGrAdvalo(); }); document.getElementById('zone5').addEventListener('click', function () { handleGrAdvalo(); }); document.getElementById('zone6').addEventListener('click', function () { handleGrAdvalo(); }); var radioButtonsCot = document.getElementsByName('cotisation'); for (var i = 0; i < radioButtonsCot.length; i++) { radioButtonsCot[i].addEventListener('change', function () { if (this.value == "forfaitaire") { document.getElementById("checkVehicules").style.display = 'block'; document.getElementById("colTauxAjustement").style.display = 'none'; document.getElementById("colCA").style.display = 'none'; document.getElementById("colCotMini").style.display = 'none'; document.getElementById("colTypeCot").classList.remove('s4'); document.getElementById("colTypeCot").classList.add('s6'); document.getElementById("colTypeCot").style.margin = "0 auto"; document.getElementById("colTypeCot").style.float = "none"; document.getElementById("colDetailCot").classList.remove('s6'); document.getElementById("colDetailCot").classList.add('s12'); } else if (this.value == "revisable") { document.getElementById("checkVehicules").style.display = 'none'; document.getElementById("colTauxAjustement").style.display = 'block'; document.getElementById("colCA").style.display = 'block'; document.getElementById("colCotMini").style.display = 'block'; document.getElementById("colTypeCot").classList.remove('s6'); document.getElementById("colTypeCot").classList.add('s4'); document.getElementById("colTypeCot").style.margin = ""; document.getElementById("colTypeCot").style.float = "left"; document.getElementById("colDetailCot").classList.remove('s12'); document.getElementById("colDetailCot").classList.add('s6'); } }); }; var radioButtonsFract = document.getElementsByName('fractionnement'); for (var i = 0; i < radioButtonsFract.length; i++) { radioButtonsFract[i].addEventListener('change', function () { if (this.value == "mensuel") { document.getElementById("cotFraisHT").value = 36.00; document.getElementById("cotFraisTTC").value = 36.00; calcCotTotal(); } else if (this.value == "trimestriel") { document.getElementById("cotFraisHT").value = 144.00; document.getElementById("cotFraisTTC").value = 144.00; calcCotTotal(); } else if (this.value == "semestriel") { document.getElementById("cotFraisHT").value = 72.00; document.getElementById("cotFraisTTC").value = 72.00; calcCotTotal(); } else if (this.value == "annuel") { document.getElementById("cotFraisHT").value = 36.00; document.getElementById("cotFraisTTC").value = 36.00; calcCotTotal(); } }); }; document.getElementById('btnNullDateDebut').addEventListener('click', function () { document.getElementById('dateEffet').value = "00/00/0000"; validateField('dateEffet', true); updateSubmitButtonState('projetForm'); }); document.getElementById('btnNullDateEcheance').addEventListener('click', function () { document.getElementById('dateEcheance').value = "00/00"; validateField('dateEcheance', true); updateSubmitButtonState('projetForm'); }); document.getElementById('btnNullDateFin').addEventListener('click', function () { document.getElementById('dateFin').value = "00/00/0000"; validateField('dateFin', true); updateSubmitButtonState('projetForm'); }); document.getElementById('btnModalDate').addEventListener('click', function () { const elem = document.getElementById('modalDate'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('btnGarContenantConfie').addEventListener('click', function () { const elem = document.getElementById('modalContenantConfie'); const instance = M.Modal.getInstance(elem); instance.open(); }); document.getElementById('speClauses').addEventListener('click', function () { const url = `/download/CLAUSES_PLATEFORME_RC_TRANSPORT_VALIDE_AU_26_02_2025.docx`; fetch(url) .then(response => response.blob()) .then(blob => { const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'CLAUSES_PLATEFORME_RC_TRANSPORT_VALIDE_AU_26_02_2025'; link.click(); }) .catch(error => console.error('Error downloading file:', error)); }); document.getElementById('dateEffet').addEventListener('input', function () { validateField('dateEffet', true); updateSubmitButtonState('projetForm'); }); document.getElementById('dateFin').addEventListener('input', function () { validateField('dateFin', true); updateSubmitButtonState('projetForm'); }); document.getElementById('dateEcheance').addEventListener('input', function () { validateField('dateEcheance', true); updateSubmitButtonState('projetForm'); }); document.getElementById('CA').addEventListener('input', function () { validateField('CA', true); updateSubmitButtonState('projetForm'); calcCotFromTauxCA('tauxRCCHT', 'cotRCCHT'); calcAddTaxe('cotRCCHT', 0, 'cotRCCTTC'); calcCotFromTauxCA('tauxRCEHT', 'cotRCEHT'); calcAddTaxe('cotRCEHT', 0.09, 'cotRCETTC'); calcCotIrreductible(); calcCotTotal(); }); document.getElementById('cotisationIrreductible').addEventListener('input', function () { validateField('cotisationIrreductible', true); updateSubmitButtonState('projetForm'); }); document.getElementById('tauxRCCHT').addEventListener('input', function () { validateField('tauxRCCHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('tauxRCCHT', 0, 'tauxRCCTTC'); calcTauxTotal(); calcCotFromTauxCA('tauxRCCHT', 'cotRCCHT'); calcAddTaxe('cotRCCHT', 0, 'cotRCCTTC'); calcCotIrreductible(); calcCotTotal(); }); document.getElementById('tauxRCCTTC').addEventListener('input', function () { validateField('tauxRCCTTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('tauxRCCHT', 0, 'tauxRCCTTC'); calcTauxTotal(); calcCotFromTauxCA('tauxRCCHT', 'cotRCCHT'); calcAddTaxe('cotRCCHT', 0, 'cotRCCTTC'); calcCotIrreductible(); calcCotTotal(); }); document.getElementById('tauxRCEHT').addEventListener('input', function () { validateField('tauxRCEHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('tauxRCEHT', 0.09, 'tauxRCETTC'); calcTauxTotal(); calcCotFromTauxCA('tauxRCEHT', 'cotRCEHT'); calcAddTaxe('cotRCEHT', 0.09, 'cotRCETTC'); calcCotIrreductible(); calcCotTotal(); }); document.getElementById('tauxRCETTC').addEventListener('input', function () { validateField('tauxRCETTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('tauxRCEHT', 0.09, 'tauxRCETTC'); calcTauxTotal(); calcCotFromTauxCA('tauxRCEHT', 'cotRCEHT'); calcAddTaxe('cotRCEHT', 0.09, 'cotRCETTC'); calcCotIrreductible(); calcCotTotal(); }); document.getElementById('tauxTotalHT').addEventListener('input', function () { validateField('tauxTotalHT', true); updateSubmitButtonState('projetForm'); }); document.getElementById('tauxTotalTTC').addEventListener('input', function () { validateField('tauxTotalTTC', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotRCCHT').addEventListener('input', function () { validateField('cotRCCHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('cotRCCHT', 0, 'cotRCCTTC'); calcCotTotal(); }); document.getElementById('cotRCCTTC').addEventListener('input', function () { validateField('cotRCCTTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('cotRCCHT', 0, 'cotRCCTTC'); calcCotTotal(); }); document.getElementById('cotRCEHT').addEventListener('input', function () { validateField('cotRCEHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('cotRCEHT', 0.09, 'cotRCETTC'); calcCotTotal(); }); document.getElementById('cotRCETTC').addEventListener('input', function () { validateField('cotRCETTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('cotRCEHT', 0.09, 'cotRCETTC'); calcCotTotal(); }); document.getElementById('cotPJHT').addEventListener('input', function () { validateField('cotPJHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('cotPJHT', 0.134, 'cotPJTTC'); calcCotTotal(); }); document.getElementById('cotPJTTC').addEventListener('input', function () { validateField('cotPJTTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('cotPJHT', 0.134, 'cotPJTTC'); calcCotTotal(); }); document.getElementById('cotFraisHT').addEventListener('input', function () { validateField('cotFraisHT', true); updateSubmitButtonState('projetForm'); calcAddTaxe('cotFraisHT', 0, 'cotFraisTTC'); calcCotTotal(); }); document.getElementById('cotFraisTTC').addEventListener('input', function () { validateField('cotFraisTTC', true); updateSubmitButtonState('projetForm'); calcSubTaxe('cotFraisHT', 0, 'cotFraisTTC'); calcCotTotal(); }); document.getElementById('cotTotalHT').addEventListener('input', function () { validateField('cotTotalHT', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotTotalTTC').addEventListener('input', function () { validateField('cotTotalTTC', true); updateSubmitButtonState('projetForm'); }); document.getElementById('activity-selector').addEventListener('change', function () { const currentSelection = Array.from(this.selectedOptions).map(option => option.value); if (currentSelection.includes("commissionnaire-multimodal")) { if (tagMultimodal == false) { M.toast({html: "Monde entier pour l'activité commissionnaire de transports multimodal"}) document.getElementById("btnAdvaloMultimodal").style.display = 'block'; document.getElementById("btnAdvaloAerien").style.display = 'block'; document.getElementById("btnAdvaloTerrestre").style.display = 'block'; document.getElementById('divAdvaloTerrestre').style.display = "none"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "block"; } tagMultimodal = true; } else { document.getElementById("btnAdvaloMultimodal").style.display = 'none'; document.getElementById("btnAdvaloAerien").style.display = 'none'; document.getElementById("btnAdvaloTerrestre").style.display = 'none'; document.getElementById('divAdvaloTerrestre').style.display = "block"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "none"; tagMultimodal = false; } if (currentSelection.includes("demenageur-particulier") || currentSelection.includes("demenageur-particulier-dommage") || currentSelection.includes("demenageur-particulier-advalorem") || currentSelection.includes("demenageur-entreprise") || currentSelection.includes("demenageur-interne")) { if (tagDemenageur == false) { document.getElementById('marchandise-selector').querySelector('option[value="roulant-demenagement"]').selected = true; document.getElementById('marchandise-selector').querySelector('option[value="mobilier-usages"]').selected = true; document.getElementById('marchandise-selector').querySelector('option[value="ordinaire"]').selected = false; document.getElementById('marchandise-selector').dispatchEvent(new Event('change')); } tagDemenageur = true; } else { if (!(currentSelection.includes(("demenageur-particulier" || "demenageur-particulier-dommage" || "demenageur-particulier-advalorem") && "demenageur-entreprise" && "demenageur-interne"))) { document.getElementById('marchandise-selector').querySelector('option[value="roulant-demenagement"]').selected = false; document.getElementById('marchandise-selector').querySelector('option[value="mobilier-usages"]').selected = false; document.getElementById('marchandise-selector').querySelector('option[value="ordinaire"]').selected = true; document.getElementById('marchandise-selector').dispatchEvent(new Event('change')); tagDemenageur = false; } } if (currentSelection.includes("garde-meubles")) { if (tagGardeMeubles == false) { document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier"]').selected = true; tagGardeMeubles = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); document.getElementById('selected-demenageur-error').style.display = "block"; } } else { if (!(currentSelection.includes("garde-meubles"))) { document.getElementById('selected-demenageur-error').style.display = "none"; tagGardeMeubles = false; } } if (currentSelection.includes("demenageur-particulier")) { if (tagDemenageurParticulier == false) { document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier-dommage"]').selected = false; document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier-advalorem"]').selected = false; tagDemenageurParticulier = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); } } else { tagDemenageurParticulier = false; } if (currentSelection.includes("demenageur-particulier-dommage")) { if (tagDemenageurParticulierDeclaree == false) { document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier"]').selected = false; document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier-advalorem"]').selected = false; tagDemenageurParticulierDeclaree = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); } } else { tagDemenageurParticulierDeclaree = false; } if (currentSelection.includes("demenageur-particulier-advalorem")) { if (tagDemenageurParticulierAdvalorem == false) { document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier-dommage"]').selected = false; document.getElementById('activity-selector').querySelector('option[value="demenageur-particulier"]').selected = false; tagDemenageurParticulierAdvalorem = true; tagDemenageurParticulierDeclaree = false; tagDemenageurParticulier = false; document.getElementById('activity-selector').dispatchEvent(new Event('change')); } } else { tagDemenageurParticulierAdvalorem = false; } if (currentSelection.includes("demenageur-entreprise")) { if (tagDemenageurEntrInter == false) { document.getElementById('activity-selector').querySelector('option[value="demenageur-interne"]').selected = true; tagDemenageurEntrInter = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); document.getElementById('selected-demenageur-entreprise-error').style.display = "block"; } } else { document.getElementById('selected-demenageur-entreprise-error').style.display = "none"; tagDemenageurEntrInter = false; } if (currentSelection.includes("entrepositaire-depositaire") || currentSelection.includes("prestataire-logistique") || currentSelection.includes("manutentionnaire-levageur")) { if (tagVoiturier == false) { document.getElementById('activity-selector').querySelector('option[value="voiturier"]').selected = true; tagVoiturier = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); document.getElementById('selected-voiturier-error').style.display = "block"; } } else { if (!(currentSelection.includes("entrepositaire-depositaire" && "prestataire-logistique" && "manutentionnaire-levageur"))) { tagVoiturier = false; document.getElementById('selected-voiturier-error').style.display = "none"; } } if (currentSelection.length == 1) { document.getElementById('activity-selector').querySelector('option[value="voiturier"]').selected = true; document.getElementById('activity-selector').querySelector('option[value="loueur"]').selected = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); M.FormSelect.init(document.querySelectorAll('select')); document.getElementById('mini-activity-error').style.display = "block"; } else { document.getElementById("mini-activity-error").style.display = "none"; } handleGrAdvalo(); }); document.getElementById('marchandise-selector').addEventListener('change', function () { const currentSelection = Array.from(this.selectedOptions).map(option => option.value); if (currentSelection.includes("beton")) { document.getElementById("choixRCE").checked = false; document.getElementById('garantieRCE').style.display = 'none'; document.getElementById('RCE1').style.display = 'none'; document.getElementById('RCE2').style.display = 'none'; document.getElementById('selected-RCE2-error').style.display = "block"; } else { if (!(currentSelection.includes("beton"))) { document.getElementById('selected-RCE2-error').style.display = "none"; } } if (currentSelection.length == 1) { document.getElementById('marchandise-selector').querySelector('option[value="ordinaire"]').selected = true; document.getElementById('marchandise-selector').dispatchEvent(new Event('change')); document.getElementById("mini-marchandise-error").style.display = "block"; } else { document.getElementById("mini-marchandise-error").style.display = "none"; } if (currentSelection.includes("animaux-vivant")) { if (tagAnimauxVivants == false) { // Retire le display select en cas d'animaux vivants M.FormSelect.init(document.querySelectorAll('select')); const elem = document.getElementById('modalAnimauxVivants'); const instance = M.Modal.getInstance(elem); instance.open(); } tagAnimauxVivants = true; } else { if (!(currentSelection.includes("animaux-vivant"))) { tagAnimauxVivants = false; } } handleGrAdvalo(); }); document.getElementById('garantieRCC-selector').addEventListener('change', function () { const currentSelection = Array.from(this.selectedOptions).map(option => option.value); if (currentSelection.includes("contenant-confie")) { document.getElementById('garContenantConfie').style.display = "block"; } else { if (!(currentSelection.includes("contenant-confie"))) { document.getElementById('garContenantConfie').style.display = "none"; } } }); } // Handle event spécifique au limite de garantie activité window.handleInputActivity = function (inputId) { validateField(inputId, true); updateSubmitButtonState('projetForm'); }; // Peupler le formulaire avec les données function populateFormData() { //Poupulate 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); } // Populate par défaut Voiturier / Loueur if (!rc) { document.getElementById('activity-selector').querySelector('option[value="voiturier"]').selected = true; document.getElementById('activity-selector').querySelector('option[value="loueur"]').selected = true; document.getElementById('activity-selector').dispatchEvent(new Event('change')); } // Populate assurés additionnel if (!rc || !rc.assureAdditionnel || Object.keys(rc.assureAdditionnel).length === 0) { console.log("Le JSON est vide, pas d'assurés additionnels à pré-remplir."); } else { document.getElementById('additionel').checked = true; document.getElementById('checkAdditionnel').style.display = "block"; for (let i = 0; i < rc.assureAdditionnel.length; i++) { const row = rc.assureAdditionnel[i]; addRowAdditionnel(row.nom, row.adresse, row.siret); } } // Populate activite const activitySelector = document.getElementById('activity-selector'); if (rc.actVoiturier) { activitySelector.querySelector('option[value="voiturier"]').selected = true; document.getElementById("select-voiturier").dataset.defaultValue = rc.valueActVoiturier; }; if (rc.actLoueur) { activitySelector.querySelector('option[value="loueur"]').selected = true; document.getElementById("select-loueur").dataset.defaultValue = rc.valueActLoueur; }; if (rc.actMultimodal) { tagMultimodal = true; activitySelector.querySelector('option[value="commissionnaire-multimodal"]').selected = true; document.getElementById("select-commissionnaire-multimodal").dataset.defaultValue = rc.valueActMultimodal; document.getElementById("btnAdvaloMultimodal").style.display = 'block'; document.getElementById("btnAdvaloAerien").style.display = 'block'; document.getElementById("btnAdvaloTerrestre").style.display = 'block'; document.getElementById('divAdvaloTerrestre').style.display = "none"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "block"; }; if (rc.actDouane) { activitySelector.querySelector('option[value="représentant-douane"]').selected = true; document.getElementById("select-représentant-douane").dataset.defaultValue = rc.valueActDouane; }; if (rc.actDemPar) { activitySelector.querySelector('option[value="demenageur-particulier"]').selected = true; document.getElementById("select-demenageur-particulier").dataset.defaultValue = rc.valueActDemPar; } if (rc.actDemParDom) { activitySelector.querySelector('option[value="demenageur-particulier-dommage"]').selected = true; document.getElementById("select-demenageur-particulier-dommage").dataset.defaultValue = rc.valueActDemParDom; } if (rc.actDemParAdv) { activitySelector.querySelector('option[value="demenageur-particulier-advalorem"]').selected = true; document.getElementById("select-demenageur-particulier-advalorem").dataset.defaultValue = rc.valueActDemParAdv; } if (rc.actDemEntr) { activitySelector.querySelector('option[value="demenageur-entreprise"]').selected = true; document.getElementById("select-demenageur-entreprise").dataset.defaultValue = rc.valueActDemEntr; } if (rc.actDemInterne) { activitySelector.querySelector('option[value="demenageur-interne"]').selected = true; document.getElementById("select-demenageur-interne").dataset.defaultValue = rc.valueActDemInterne; } if (rc.actGardeMeuble) { activitySelector.querySelector('option[value="garde-meubles"]').selected = true; document.getElementById("select-garde-meubles").dataset.defaultValue = rc.valueActGardeMeuble; } if (rc.actEntDep) { activitySelector.querySelector('option[value="entrepositaire-depositaire"]').selected = true; document.getElementById("select-entrepositaire-depositaire").dataset.defaultValue = rc.valueActEntDep; } if (rc.actPrestaLog) { activitySelector.querySelector('option[value="prestataire-logistique"]').selected = true; document.getElementById("select-prestataire-logistique").dataset.defaultValue = rc.valueActPrestaLog; } if (rc.actLevageur) { activitySelector.querySelector('option[value="manutentionnaire-levageur"]').selected = true; document.getElementById("select-manutentionnaire-levageur").dataset.defaultValue = rc.valueActLevageur; } if (rc.actTransitaire) { activitySelector.querySelector('option[value="transitaire"]').selected = true; document.getElementById("select-transitaire").dataset.defaultValue = rc.valueActTransitaire; } document.getElementById('activity-selector').dispatchEvent(new Event('change')); // Populate marchandises const marchandiseSelector = document.getElementById('marchandise-selector'); if (rc.marOrdinaire) { marchandiseSelector.querySelector('option[value="ordinaire"]').selected = true; }; if (rc.marRoulant) { marchandiseSelector.querySelector('option[value="roulant"]').selected = true; }; if (rc.marEngins) { marchandiseSelector.querySelector('option[value="engins-chantier-agricole"]').selected = true; }; if (rc.marRoulantDem) { marchandiseSelector.querySelector('option[value="roulant-demenagement"]').selected = true; }; if (rc.marMobilerUsag) { marchandiseSelector.querySelector('option[value="mobilier-usages"]').selected = true; }; if (rc.marPerissable) { marchandiseSelector.querySelector('option[value="perissable-temperature-dirigee"]').selected = true; }; if (rc.marAnimaux) { tagAnimauxVivants = true; marchandiseSelector.querySelector('option[value="animaux-vivant"]').selected = true; }; if (rc.marCiterne) { marchandiseSelector.querySelector('option[value="citerne"]').selected = true; }; if (rc.marBeton) { marchandiseSelector.querySelector('option[value="beton"]').selected = true; }; if (rc.marExceptionnels) { marchandiseSelector.querySelector('option[value="exceptionnels"]').selected = true; }; if (rc.marVrac) { marchandiseSelector.querySelector('option[value="vrac"]').selected = true; }; document.getElementById('marchandise-selector').dispatchEvent(new Event('change')); // Populate territorialité if (rc.zone1) { document.getElementById("zone1").checked = true }; if (rc.zone2) { document.getElementById("zone2").checked = true; document.getElementById("zone1").checked = true; document.getElementById("zone1").disabled = true; }; if (rc.zone3) { document.getElementById("zone3").checked = true; document.getElementById("zone2").checked = true; document.getElementById("zone2").disabled = true; document.getElementById("zone1").checked = true; document.getElementById("zone1").disabled = true; }; if (rc.zone4) { document.getElementById("zone4").checked = true }; if (rc.zone5) { document.getElementById("zone5").checked = true }; if (rc.zone6) { document.getElementById("zone6").checked = true }; // Populate extensions de garantie RCC const garantieRCCSelector = document.getElementById('garantieRCC-selector'); if (rc.extRCCModifCalArrim) { garantieRCCSelector.querySelector('option[value="modif-calage-arrimage"]').selected = true; }; if (rc.extRCCFerroutage) { garantieRCCSelector.querySelector('option[value="ferroutage"]').selected = true; }; if (rc.extRCCFraisRecons) { garantieRCCSelector.querySelector('option[value="frais-reconstitution"]').selected = true; }; if (rc.extRCCConfie) { garantieRCCSelector.querySelector('option[value="contenant-confie"]').selected = true; if (rc.typeExtConfies == "ADVALOREM") { document.getElementById("AdValorem").checked = true; } else { document.getElementById("ValeurDeclaree").checked = true; } }; if (rc.extRCCTPPC) { garantieRCCSelector.querySelector('option[value="tppc"]').selected = true; }; if (rc.extRCCRegie) { garantieRCCSelector.querySelector('option[value="regie"]').selected = true; }; if (rc.extRCCSansMontageDemontage) { garantieRCCSelector.querySelector('option[value="sans-montage-demontage"]').selected = true; }; document.getElementById('garantieRCC-selector').dispatchEvent(new Event('change')); // Populate extensions de garantie RCC if (rc.autresRC) { document.getElementById("choixRCE").checked = true; document.getElementById('garantieRCE').style.display = 'block'; document.getElementById('RCE1').style.display = ''; document.getElementById('RCE2').style.display = ''; } const garantieRCESelector = document.getElementById('garantieRCE-selector'); if (rc.extRCEBraDebra) { garantieRCESelector.querySelector('option[value="branchement-debranchement"]').selected = true; }; if (rc.extRCEMontageDemontage) { garantieRCESelector.querySelector('option[value="montage-demontage"]').selected = true; }; document.getElementById('garantieRCE-selector').dispatchEvent(new Event('change')); // Populate temporalité if (rc.tempo) { document.getElementById(rc.tempo).checked = true }; if (rc.dateEffet) { document.getElementById("dateEffet").value = rc.dateEffet }; if (rc.dateEcheance) { document.getElementById("dateEcheance").value = rc.dateEcheance }; if (contrat.type == "TEMPORAIRE") { document.getElementById("rowDateFin").style.display = 'block'; } if (rc.dateFin) { document.getElementById("dateFin").value = rc.dateFin }; if (rc.programmeInternationale) { document.getElementById("programmeInternationale").checked = true; } if (rc.participationResultat) { document.getElementById("participationResultat").checked = true; } if (rc.pj) { document.getElementById("switchPJ").checked = true; document.getElementById('PJ1').style.display = ''; document.getElementById('PJ2').style.display = ''; } // Populate Cotisation if (rc.typeCot) { document.getElementById(rc.typeCot).checked = true }; if (rc.typeCot == "forfaitaire") { document.getElementById("checkVehicules").style.display = 'block'; document.getElementById("colTauxAjustement").style.display = 'none'; document.getElementById("colCotMini").style.display = 'none'; document.getElementById("colCA").style.display = 'none'; document.getElementById("colTypeCot").classList.remove('s4'); document.getElementById("colTypeCot").classList.add('s6'); document.getElementById("colTypeCot").style.margin = "0 auto"; document.getElementById("colTypeCot").style.float = "none"; document.getElementById("colDetailCot").classList.remove('s6'); document.getElementById("colDetailCot").classList.add('s12'); } else if (rc.typeCot == "revisable") { document.getElementById("checkVehicules").style.display = 'none'; document.getElementById("colTauxAjustement").style.display = 'block'; document.getElementById("colCA").style.display = 'block'; document.getElementById("colCotMini").style.display = 'block'; document.getElementById("colTypeCot").style.margin = ""; document.getElementById("colTypeCot").style.float = "left"; } if (rc.ca) { document.getElementById("CA").value = rc.ca }; if (rc.cotIrreductible) { document.getElementById("cotisationIrreductible").value = rc.cotIrreductible }; if (rc.tauxRCCHT) { document.getElementById("tauxRCCHT").value = rc.tauxRCCHT }; if (rc.tauxRCCTTC) { document.getElementById("tauxRCCTTC").value = rc.tauxRCCTTC }; if (rc.tauxRCEHT) { document.getElementById("tauxRCEHT").value = rc.tauxRCEHT }; if (rc.tauxRCETTC) { document.getElementById("tauxRCETTC").value = rc.tauxRCETTC }; if (rc.tauxTotalHT) { document.getElementById("tauxTotalHT").value = rc.tauxTotalHT }; if (rc.tauxTotalTTC) { document.getElementById("tauxTotalTTC").value = rc.tauxTotalTTC }; if (rc.cotRCCHT) { document.getElementById("cotRCCHT").value = rc.cotRCCHT }; if (rc.cotRCCTTC) { document.getElementById("cotRCCTTC").value = rc.cotRCCTTC }; if (rc.cotRCEHT) { document.getElementById("cotRCEHT").value = rc.cotRCEHT }; if (rc.cotRCETTC) { document.getElementById("cotRCETTC").value = rc.cotRCETTC }; if (rc.cotPJHT) { document.getElementById("cotPJHT").value = rc.cotPJHT }; if (rc.cotPJTTC) { document.getElementById("cotPJTTC").value = rc.cotPJTTC }; if (rc.cotTotalHT) { document.getElementById("cotTotalHT").value = rc.cotTotalHT }; if (rc.cotTotalTTC) { document.getElementById("cotTotalTTC").value = rc.cotTotalTTC }; if (rc.cotFraisHT) { document.getElementById("cotFraisHT").value = rc.cotFraisHT }; if (rc.cotFraisTTC) { document.getElementById("cotFraisTTC").value = rc.cotFraisTTC }; // Populate tableau vehicule if (!rc || !rc.designationVehicule || Object.keys(rc.designationVehicule).length === 0) { console.log("Le JSON est vide, pas de véhicules à pré-remplir."); } else { for (let i = 0; i < rc.designationVehicule.length; i++) { const row = rc.designationVehicule[i]; addRowVehicule(row.marque, row.genre, row.type, row.immat, row.capital); } } // Populate Grille Advalorem if (rc.actMultimodal) { if (rc.grilleAerien) { populateGrAdvalo(rc.grilleAerien, "tabAdvaloAerien"); document.getElementById('divAdvaloAerien').style.display = "block"; document.getElementById('divAdvaloTerrestre').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "none"; }; if (rc.grilleTerrestre) { populateGrAdvalo(rc.grilleTerrestre, "tabAdvaloTerrestre"); document.getElementById('divAdvaloTerrestre').style.display = "block"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "none"; }; if (rc.grilleMultimodal) { populateGrAdvalo(rc.grilleMultimodal, "tabAdvaloMultimodal"); document.getElementById('divAdvaloMultimodal').style.display = "block"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloTerrestre').style.display = "none"; }; } else { if (rc.grilleTerrestre) { populateGrAdvalo(rc.grilleTerrestre, "tabAdvaloTerrestre"); document.getElementById('divAdvaloTerrestre').style.display = "block"; document.getElementById('divAdvaloAerien').style.display = "none"; document.getElementById('divAdvaloMultimodal').style.display = "none"; }; } } function populateGrAdvalo(jsonData, tableID) { var table = document.getElementById(tableID); for (var i = 0; i < jsonData.length; i++) { var category = jsonData[i].name; for (var j = 1; j < table.rows.length; j++) { var categoryName = table.rows[j].cells[0].innerText.trim(); if (categoryName === category) { var categoryRow = table.rows[j]; for (var k = 1; k <= 6; k++) { var zoneKey = "zone" + k; var zoneInput = categoryRow.cells[k].querySelector("input[type='text']"); zoneInput.value = jsonData[i][zoneKey]; } break; } } } } const categories = { multimodal: { Cat1: [0.06, 0.06, 0.07, 0.09, 0.12, 0.14], Cat2: [0.12, 0.13, 0.14, 0.24, 0.24, 0.3], Cat3: [0.07, 0.08, 0.09, 0.14, 0.14, 0.18], Cat4: [0.14, 0.17, 0.17, 0.29, 0.29, 0.36], Cat5: [0.17, 0.19, 0.21, 0.35, 0.35, 0.43], Cat6: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"], Cat7: [0.30, 0.33, 0.36, 0.60, 0.60, 0.75], Cat8: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"] }, terrestre: { Cat1: [0.05, 0.053, 0.06, 0.09, 0.12, 0.14], Cat2: [0.10, 0.11, 0.12, 0.24, 0.24, 0.25], Cat3: [0.06, 0.066, 0.07, 0.14, 0.14, 0.15], Cat4: [0.12, 0.132, 0.14, 0.29, 0.29, 0.30], Cat5: [0.14, 0.158, 0.17, 0.35, 0.35, 0.36], Cat6: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"], Cat7: [0.25, 0.275, 0.3, 0.6, 0.6, 0.63], Cat8: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"] }, aerien: { Cat1: [0.04, 0.04, 0.05, 0.06, 0.08, 0.10], Cat2: [0.09, 0.09, 0.10, 0.13, 0.17, 0.21], Cat3: [0.05, 0.06, 0.06, 0.08, 0.10, 0.13], Cat4: [0.10, 0.11, 0.12, 0.15, 0.20, 0.26], Cat5: [0.12, 0.13, 0.15, 0.18, 0.24, 0.31], Cat6: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"], Cat7: [0.21, 0.23, 0.26, 0.32, 0.43, 0.53], Cat8: ["Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter", "Nous consulter"] } }; function handleGrAdvalo() { for (let i = 1; i <= 6; i++) { const checkZone = document.getElementById("zone" + i).checked; for (let j = 1; j <= 6; j++) { // Gestion multimodal updateCategoryValues("multimodal", i, j, checkZone); // Gestion terrestre updateCategoryValues("terrestre", i, j, checkZone); // Gestion aerien updateCategoryValues("aerien", i, j, checkZone); } } } function updateCategoryValues(mode, zone, index, checkZone) { for (let k = 1; k <= 8; k++) { const element = document.getElementById(`${mode}Cat${k}Zone${zone}`); const marPerissable = document.getElementById("perissable-temperature-dirigee-chip") || null; const marEngins = document.getElementById("engins-chantier-agricole-chip" || null); const marMobilier = document.getElementById("mobilier-usages-chip" || null); const marRoulantDem = document.getElementById("roulant-demenagement-chip" || null); const marRoulant = document.getElementById("roulant-chip" || null); let value = "Nous consulter"; // Par défaut if (checkZone) { if (k === 4) { if (marPerissable) { value = categories[mode][`Cat${k}`][zone - 1]; } else { value = "Nous consulter"; } } else if (k === 5) { if (marEngins || marRoulant) { value = categories[mode][`Cat${k}`][zone - 1]; } else { value = "Nous consulter"; } } else if (k === 7) { if (marMobilier || marRoulantDem) { value = categories[mode][`Cat${k}`][zone - 1]; } else { value = "Nous consulter"; } } else { value = categories[mode][`Cat${k}`][zone - 1]; } } element.value = value; } } 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 handleActivitySelection() { const select = document.getElementById('activity-selector'); const activityFormsContainer = document.getElementById('selected-activities'); // Clear previous entries activityFormsContainer.innerHTML = ''; // Clear any existing entries // Add a header for the "Dommage matériel (en €)" label that aligns with the input fields const headerDiv = document.createElement('div'); headerDiv.classList.add('row'); headerDiv.style.display = 'flex'; headerDiv.style.alignItems = 'center'; headerDiv.style.justifyContent = 'start'; headerDiv.innerHTML = `
 
`; activityFormsContainer.appendChild(headerDiv); // Iterate over each selected option Array.from(select.options).forEach(option => { if (option.selected && option.value && !document.getElementById(option.value + "-chip")) { const activityName = option.textContent; const activityDiv = document.createElement('div'); activityDiv.classList.add('activity-input', 'row'); activityDiv.style.marginBottom = '10px'; activityDiv.innerHTML = `
`; activityFormsContainer.appendChild(activityDiv); } }); } function handleGarantieRCCSelection() { const select = document.getElementById('garantieRCC-selector'); const garantieRccFormsContainer = document.getElementById('selected-garantieRCC'); // Clear previous entries garantieRccFormsContainer.innerHTML = ''; // Clear any existing entries // Iterate over each selected option Array.from(select.options).forEach(option => { if (option.selected && option.value) { const garantieRccName = option.textContent; const garantieRccDiv = document.createElement('div'); garantieRccDiv.classList.add('garantieRcc-input', 'row'); garantieRccDiv.style.display = 'flex'; garantieRccDiv.style.alignItems = 'center'; garantieRccDiv.style.justifyContent = 'start'; garantieRccDiv.style.marginBottom = '10px'; garantieRccDiv.innerHTML = ` ${garantieRccName}`; garantieRccFormsContainer.appendChild(garantieRccDiv); } }); } function handleGarantieRCESelection() { const select = document.getElementById('garantieRCE-selector'); const garantieRceFormsContainer = document.getElementById('selected-garantieRCE'); // Clear previous entries garantieRceFormsContainer.innerHTML = ''; // Clear any existing entries // Iterate over each selected option Array.from(select.options).forEach(option => { if (option.selected && option.value) { if (option.selected && option.value) { const garantieRceName = option.textContent; const garantieRceDiv = document.createElement('div'); garantieRceDiv.classList.add('garantieRce-input', 'row'); garantieRceDiv.style.display = 'flex'; garantieRceDiv.style.alignItems = 'center'; garantieRceDiv.style.justifyContent = 'start'; garantieRceDiv.style.marginBottom = '10px'; garantieRceDiv.innerHTML = ` ${garantieRceName} `; garantieRceFormsContainer.appendChild(garantieRceDiv); } } }); } function handleMarchandiseSelection() { const select = document.getElementById('marchandise-selector'); const marchandiseFormsContainer = document.getElementById('selected-marchandises'); // Clear previous entries marchandiseFormsContainer.innerHTML = ''; // Clear any existing entries // Iterate over each selected option Array.from(select.options).forEach(option => { if (option.selected && option.value) { const marchandiseName = option.textContent; const marchandiseDiv = document.createElement('div'); marchandiseDiv.classList.add('marchandise-input', 'row'); marchandiseDiv.style.display = 'flex'; marchandiseDiv.style.alignItems = 'center'; marchandiseDiv.style.justifyContent = 'start'; marchandiseDiv.style.marginBottom = '10px'; marchandiseDiv.innerHTML = ` ${marchandiseName} `; marchandiseFormsContainer.appendChild(marchandiseDiv); } }); } // Ajouter une ligne au tableau function addRowAdditionnel(nomValue, adresseValue, siretValue) { const table = document.getElementById('empTableAdditionnel'); // Créer une nouvelle ligne avec des inputs éditables const newRow = table.insertRow(table.rows.length - 1); newRow.innerHTML = ` `; // Réinitialiser les valeurs de saisie document.getElementById('nomAdditionnel').value = ''; document.getElementById('adresseAditionnel').value = ''; document.getElementById('siretAdditionnel').value = ''; // Ajouter un écouteur d'événements pour supprimer newRow.querySelector('.delete-btn').addEventListener('click', function () { deleteRow(this); }); } // Ajouter une ligne au tableau Vehicule function addRowVehicule(marqueValue, genreValue, typeValue, immatValue, capitalValue) { const table = document.getElementById('empTableVehicules'); // Créer une nouvelle ligne avec des inputs éditables const newRow = table.insertRow(table.rows.length - 1); newRow.innerHTML = ` `; // Réinitialiser les valeurs de saisie document.getElementById('marqueVehicule').value = ''; document.getElementById('genreVehicule').value = ''; document.getElementById('typeVehicule').value = ''; document.getElementById('immatVehicule').value = ''; document.getElementById('capitalVehicule').value = ''; // Ajouter un écouteur d'événements pour supprimer newRow.querySelector('.delete-btn').addEventListener('click', function () { deleteRow(this); }); } // Supprimer une ligne du tableau function deleteRow(btn) { const row = btn.parentElement.parentElement; row.parentElement.removeChild(row); } // Contruit la structure Assuré additionnel à envoyer à la BDD function extractAssureAdditionnel(tableId) { const jsonArr = []; const table = document.getElementById(tableId); if (table && document.getElementById("additionel").checked) { const rows = table.querySelectorAll('tr:not(:first-child)'); rows.forEach(row => { const allInputsEmpty = Array.from(row.querySelectorAll('input')).every(input => input.value === ''); if (!allInputsEmpty) { const inputs = row.querySelectorAll('input'); const dataObj = {}; inputs.forEach(input => { const fieldName = input.getAttribute('name'); const fieldValue = input.value || "Non défini"; dataObj[fieldName] = fieldValue; }); jsonArr.push(dataObj); } }); const jsonResult = JSON.stringify(jsonArr, null, 2); return jsonResult; } return "[]"; // Retourne un tableau JSON vide si aucune saisie n'est trouvée dans le tableau } // Contruit la structure Designation à envoyer à la BDD function extractDesignationVehicule(tableId) { const jsonArr = []; const table = document.getElementById(tableId); if (table) { const rows = table.querySelectorAll('tr:not(:first-child)'); rows.forEach(row => { const allInputsEmpty = Array.from(row.querySelectorAll('input')).every(input => input.value === ''); if (!allInputsEmpty) { const inputs = row.querySelectorAll('input'); const dataObj = {}; inputs.forEach(input => { const fieldName = input.getAttribute('name'); const fieldValue = input.value || "Non défini"; dataObj[fieldName] = fieldValue; }); jsonArr.push(dataObj); } }); const jsonResult = JSON.stringify(jsonArr, null, 2); return jsonResult; } return "[]"; // Retourne un tableau JSON vide si aucune saisie n'est trouvée dans le tableau } function extractGrilleAdvalo(tableID) { var jsonData = []; var table = document.getElementById(tableID); var zonesCount = table.rows[0].cells.length - 1; for (var i = 1; i < table.rows.length; i++) { var category = table.rows[i].cells[0].innerText.trim(); var categoryData = { "name": category }; for (var j = 1; j <= zonesCount; j++) { var zoneKey = "zone" + j; var zoneValue = table.rows[i].cells[j].querySelector("input[type='text']").value || "Nous consulter"; categoryData[zoneKey] = zoneValue; } jsonData.push(categoryData); } return jsonData; } function extractTempo() { let tempo = ""; if (document.getElementById("mensuel").checked == true) { tempo = "mensuel"; } if (document.getElementById("trimestriel").checked == true) { tempo = "trimestriel"; } if (document.getElementById("semestriel").checked == true) { tempo = "semestriel"; } if (document.getElementById("annuel").checked == true) { tempo = "annuel"; } return tempo; } function extractTypeCot() { let cot = ""; if (document.getElementById("forfaitaire").checked == true) { cot = "forfaitaire"; } if (document.getElementById("revisable").checked == true) { cot = "revisable"; } return cot; } function calcCotTotal() { const cotRCCHT = parseFloat(document.getElementById("cotRCCHT").value) || 0 const cotRCCTTC = parseFloat(document.getElementById("cotRCCTTC").value) || 0 const cotRCEHT = parseFloat(document.getElementById("cotRCEHT").value) || 0 const cotRCETTC = parseFloat(document.getElementById("cotRCETTC").value) || 0 const cotPJHT = parseFloat(document.getElementById("cotPJHT").value) || 0 const cotPJTTC = parseFloat(document.getElementById("cotPJTTC").value) || 0 const cotFraisHT = parseFloat(document.getElementById("cotFraisHT").value) || 0 const cotFraisTTC = parseFloat(document.getElementById("cotFraisTTC").value) || 0 document.getElementById("cotTotalHT").value = (cotRCCHT + cotRCEHT + cotPJHT + cotFraisHT).toFixed(2); document.getElementById("cotTotalTTC").value = (cotRCCTTC + cotRCETTC + cotPJTTC + cotFraisTTC).toFixed(2); } function calcTauxTotal() { const tauxRCCHT = parseFloat(document.getElementById("tauxRCCHT").value) || 0 const tauxRCCTTC = parseFloat(document.getElementById("tauxRCCTTC").value) || 0 const tauxRCEHT = parseFloat(document.getElementById("tauxRCEHT").value) || 0 const tauxRCETTC = parseFloat(document.getElementById("tauxRCETTC").value) || 0 document.getElementById("tauxTotalHT").value = (tauxRCCHT + tauxRCEHT).toFixed(3); document.getElementById("tauxTotalTTC").value = (tauxRCCTTC + tauxRCETTC).toFixed(3); } function calcCotFromTauxCA(idTaux, idCot) { const valueCA = parseFloat(document.getElementById("CA").value) || 0 const valueTaux = parseFloat(document.getElementById(idTaux).value) || 0 document.getElementById(idCot).value = (valueCA * valueTaux / 100).toFixed(2); } function calcCotIrreductible() { const cotRCCHT = parseFloat(document.getElementById("cotRCCHT").value) || 0 const cotRCEHT = parseFloat(document.getElementById("cotRCEHT").value) || 0 document.getElementById("cotisationIrreductible").value = ((cotRCCHT + cotRCEHT) * 0.8).toFixed(2); } function calcAddTaxe(idHT, valueTaxe, idTTC) { const valueHT = parseFloat(document.getElementById(idHT).value) || 0 if (idTTC != "tauxRCCTTC" && idTTC != "tauxRCETTC") { document.getElementById(idTTC).value = (valueHT * (1 + valueTaxe)).toFixed(2); } else { document.getElementById(idTTC).value = (valueHT * (1 + valueTaxe)).toFixed(3); } } function calcSubTaxe(idHT, valueTaxe, idTTC) { const valueTTC = parseFloat(document.getElementById(idTTC).value) || 0 if (idHT != "tauxRCCHT" && idHT != "tauxRCEHT") { document.getElementById(idHT).value = (valueTTC / (1 + valueTaxe)).toFixed(2); } else { document.getElementById(idHT).value = (valueTTC / (1 + valueTaxe)).toFixed(3); } } // Gérer la soumission du formulaire async function handleSubmitForm(event) { event.preventDefault(); // Création d'une nouvelle saisie dans la collection RC const responseRC = await fetch(`/rc/create`, { method: 'POST', body: JSON.stringify({ // Tableaux "assureAdditionnel": extractAssureAdditionnel('empTableAdditionnel'), "designationVehicule": extractDesignationVehicule('empTableVehicules'), "grilleMultimodal": extractGrilleAdvalo('tabAdvaloMultimodal'), "grilleTerrestre": extractGrilleAdvalo('tabAdvaloTerrestre'), "grilleAerien": extractGrilleAdvalo('tabAdvaloAerien'), // Activitées "actVoiturier": document.getElementById("voiturier-chip") ? true : false, "valueActVoiturier": document.getElementById("voiturier-chip") ? document.getElementById("voiturier").value : false, "actLoueur": document.getElementById("loueur-chip") ? true : false, "valueActLoueur": document.getElementById("loueur-chip") ? document.getElementById("loueur").value : false, "actMultimodal": document.getElementById("commissionnaire-multimodal-chip") ? true : false, "valueActMultimodal": document.getElementById("commissionnaire-multimodal-chip") ? document.getElementById("commissionnaire-multimodal").value : false, "actDouane": document.getElementById("représentant-douane-chip") ? true : false, "valueActDouane": document.getElementById("représentant-douane-chip") ? document.getElementById("représentant-douane").value : false, "actDemPar": document.getElementById("demenageur-particulier-chip") ? true : false, "valueActDemPar": document.getElementById("demenageur-particulier-chip") ? document.getElementById("demenageur-particulier").value : false, "actDemParDom": document.getElementById("demenageur-particulier-dommage-chip") ? true : false, "valueActDemParDom": document.getElementById("demenageur-particulier-dommage-chip") ? document.getElementById("demenageur-particulier-dommage").value : false, "actDemParAdv": document.getElementById("demenageur-particulier-advalorem-chip") ? true : false, "valueActDemParAdv": document.getElementById("demenageur-particulier-advalorem-chip") ? document.getElementById("demenageur-particulier-advalorem").value : false, "actDemEntr": document.getElementById("demenageur-entreprise-chip") ? true : false, "valueActDemEntr": document.getElementById("demenageur-entreprise-chip") ? document.getElementById("demenageur-entreprise").value : false, "actDemInterne": document.getElementById("demenageur-interne-chip") ? true : false, "valueActDemInterne": document.getElementById("demenageur-interne-chip") ? document.getElementById("demenageur-interne").value : false, "actGardeMeuble": document.getElementById("garde-meubles-chip") ? true : false, "valueActGardeMeuble": document.getElementById("garde-meubles-chip") ? document.getElementById("garde-meubles").value : false, "actEntDep": document.getElementById("entrepositaire-depositaire-chip") ? true : false, "valueActEntDep": document.getElementById("entrepositaire-depositaire-chip") ? document.getElementById("entrepositaire-depositaire").value : false, "actPrestaLog": document.getElementById("prestataire-logistique-chip") ? true : false, "valueActPrestaLog": document.getElementById("prestataire-logistique-chip") ? document.getElementById("prestataire-logistique").value : false, "actLevageur": document.getElementById("manutentionnaire-levageur-chip") ? true : false, "valueActLevageur": document.getElementById("manutentionnaire-levageur-chip") ? document.getElementById("manutentionnaire-levageur").value : false, "actTransitaire": document.getElementById("transitaire-chip") ? true : false, "valueActTransitaire": document.getElementById("transitaire-chip") ? document.getElementById("transitaire").value : false, //Marchandises "marOrdinaire": document.getElementById("ordinaire-chip") ? true : false, "marRoulant": document.getElementById("roulant-chip") ? true : false, "marEngins": document.getElementById("engins-chantier-agricole-chip") ? true : false, "marRoulantDem": document.getElementById("roulant-demenagement-chip") ? true : false, "marMobilerUsag": document.getElementById("mobilier-usages-chip") ? true : false, "marPerissable": document.getElementById("perissable-temperature-dirigee-chip") ? true : false, "marAnimaux": document.getElementById("animaux-vivant-chip") ? true : false, "marCiterne": document.getElementById("citerne-chip") ? true : false, "marBeton": document.getElementById("beton-chip") ? true : false, "marExceptionnels": document.getElementById("exceptionnels-chip") ? true : false, "marVrac": document.getElementById("vrac-chip") ? true : false, // Territorialités "zone1": document.getElementById("zone1").checked ? true : false, "zone2": document.getElementById("zone2").checked ? true : false, "zone3": document.getElementById("zone3").checked ? true : false, "zone4": document.getElementById("zone4").checked ? true : false, "zone5": document.getElementById("zone5").checked ? true : false, "zone6": document.getElementById("zone6").checked ? true : false, // Extensions de garantie RCC "extRCCModifCalArrim": document.getElementById("modif-calage-arrimage-chip") ? true : false, "extRCCFerroutage": document.getElementById("ferroutage-chip") ? true : false, "extRCCFraisRecons": document.getElementById("frais-reconstitution-chip") ? true : false, "extRCCConfie": document.getElementById("contenant-confie-chip") ? true : false, "typeExtConfies": document.getElementById("contenant-confie-chip") ? (document.getElementById('ValeurDeclaree').checked ? "VALEUR DECLAREE" : "ADVALOREM") : "", "extRCCTPPC": document.getElementById("tppc-chip") ? true : false, "extRCCRegie": document.getElementById("regie-chip") ? true : false, "extRCCSansMontageDemontage": document.getElementById("sans-montage-demontage-chip") ? true : false, // Extensions de garantie RCE "autresRC": document.getElementById("choixRCE").checked ? true : false, "extRCEBraDebra": document.getElementById("branchement-debranchement-chip") ? true : false, "extRCEMontageDemontage": document.getElementById("montage-demontage-chip") ? true : false, // Temporalités "tempo": extractTempo(), "dateEffet": document.getElementById("dateEffet").value, "dateEcheance": document.getElementById("dateEcheance").value, "dateFin": document.getElementById("dateFin").value, "pj": document.getElementById("switchPJ").checked ? true : false, "programmeInternationale": document.getElementById("programmeInternationale").checked ? true : false, "participationResultat": document.getElementById("participationResultat").checked ? true : false, // Cotisations "typeCot": extractTypeCot(), "ca": document.getElementById("CA").value, "cotIrreductible": document.getElementById("cotisationIrreductible").value, "tauxRCCHT": document.getElementById("tauxRCCHT").value, "tauxRCCTTC": document.getElementById("tauxRCCTTC").value, "tauxRCEHT": document.getElementById("tauxRCEHT").value, "tauxRCETTC": document.getElementById("tauxRCETTC").value, "tauxTotalHT": document.getElementById("tauxTotalHT").value, "tauxTotalTTC": document.getElementById("tauxTotalTTC").value, "cotRCCHT": document.getElementById("cotRCCHT").value, "cotRCCTTC": document.getElementById("cotRCCTTC").value, "cotRCEHT": document.getElementById("cotRCEHT").value, "cotRCETTC": document.getElementById("cotRCETTC").value, "cotPJHT": document.getElementById("cotPJHT").value, "cotPJTTC": document.getElementById("cotPJTTC").value, "cotTotalHT": document.getElementById("cotTotalHT").value, "cotTotalTTC": document.getElementById("cotTotalTTC").value, "cotFraisHT": document.getElementById("cotFraisHT").value, "cotFraisTTC": document.getElementById("cotFraisTTC").value // Vous pouvez ajouter d'autres données pour la saisie dans la collection RC ici }), headers: { 'Content-Type': 'application/json', }, }); const dataRC = await responseRC.json(); if (dataRC.valid) { const idRC = dataRC.rc.id; // Mettre à jour le champ "enCours" dans le contrat avec l'ID de la nouvelle saisie RC const responseContratEnCours = await fetch(`/contrat/update/${contrat.produit}/${contrat.id}/${idRC}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }); const dataContratEnCours = await responseContratEnCours.json(); if (dataContratEnCours.valid) { // Obtenir la date actuelle au format "JJ/MM/AAAA" const currentDate = new Date(); const day = String(currentDate.getDate()).padStart(2, '0'); const month = String(currentDate.getMonth() + 1).padStart(2, '0'); // Les mois sont indexés à partir de 0, donc +1 const year = currentDate.getFullYear(); const formattedDate = `${day}/${month}/${year}`; //Obtenir l'user const token = localStorage.getItem('jwtToken'); const decoded = jwt_decode(token); const userFirstName = decoded.userFirstName; const userLastName = decoded.userLastName; // Obtenir l'heure actuelle au format "HHhMM" const hours = String(currentDate.getHours()).padStart(2, '0'); const minutes = String(currentDate.getMinutes()).padStart(2, '0'); const seconds = String(currentDate.getSeconds()).padStart(2, '0'); const formattedTime = `${hours}:${minutes}:${seconds}`; const nom = userLastName; const prenom = userFirstName; // Mettre à jour le champ "historique" dans le contrat avec les nouvelles données d'historique const historiqueData = [ { "type": contrat.type, "date": formattedDate, "heure": formattedTime, "produit": "RC", "id": idRC, "nom": nom, "prenom": prenom, } ]; const responseHistoriqueUpdate = await fetch(`/contrat/update/historique/${contrat.id}`, { method: 'POST', body: JSON.stringify({ historiqueData }), headers: { 'Content-Type': 'application/json', }, }); const dataHistoriqueUpdate = await responseHistoriqueUpdate.json(); if (dataHistoriqueUpdate.valid) { /////////////////////////////////////////////////////////////////////////////////////////////////////// /// TODO DEBUT Génération fichier à l'enregistrement A RETIRER QUAND MODE CONTRAT const numParcours = getNumParcoursFromURL(); let filename; // Envoi de la requête POST au serveur pour générer le projet fetch(`/generate/rc/projet/${numParcours}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }) .then(response => { if (!response.ok) { throw new Error('Erreur réseau ou serveur'); } const disposition = response.headers.get('content-disposition'); filename = disposition.split(';')[1].trim().split('=')[1]; return response.blob(); // On attend une réponse sous forme de blob pour un fichier }) .then(blob => { // Crée un URL pour le blob const url = window.URL.createObjectURL(blob); // Crée un élément a temporaire pour simuler un clic pour téléchargement const a = document.createElement('a'); a.href = url; a.download = filename; // Nomme le fichier téléchargé document.body.appendChild(a); // Ajoute l'élément au document a.click(); // Simule un clic sur l'élément pour déclencher le téléchargement window.URL.revokeObjectURL(url); // Nettoie l'URL objet a.remove(); // Supprime l'élément a du document window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=projet`; }) .catch(error => console.error('Erreur lors de la génération du projet:', error)); /// TODO FIN Génération fichier à l'enregistrement A RETIRER QUAND MODE CONTRAT /////////////////////////////////////////////////////////////////////////////////////////////////////// // TODO NE PAS OUBLIER LE HREF QUI EST DANS LE GEN ACTUELLEMENT // window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=projet`; } else { console.log('Echec lors de la mise à jour de l\'historique du contrat :', dataHistoriqueUpdate.message); } } else { console.log('Echec lors de la mise à jour du champ "enCours" dans le contrat :', dataContratEnCours.message); } } else { console.log('Echec lors de la création de la saisie dans la collection RC :', dataRC.message); } } // Exposer init globalement pour y accéder depuis l'extérieur window.initSubmenuForm = init; })();