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, produit; // 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; produit = contrat?.["@expand"]?.enCours || null; console.log("Initialisation pour formulaire projet :", parcours); // Appel des différentes fonctions d'initialisation setupEventListeners(); afficherFAC(); 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('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('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; }); 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; }); 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('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; } }); 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; } }); var radioButtonsFract = document.getElementsByName('fract'); for (var i = 0; i < radioButtonsFract.length; i++) { radioButtonsFract[i].addEventListener('change', function () { if (this.value == "mensuel") { document.getElementById("cotFraisHT").value = 36.00; } else if (this.value == "trimestriel") { document.getElementById("cotFraisHT").value = 144.00; } else if (this.value == "semestriel") { document.getElementById("cotFraisHT").value = 72.00; } else if (this.value == "annuel") { document.getElementById("cotFraisHT").value = 36.00; } calcCotAnnuelle() }); }; 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('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'); calcCotAnnuelle(); }); document.getElementById('cotisationIrreductible').addEventListener('input', function () { validateField('cotisationIrreductible', true); updateSubmitButtonState('projetForm'); }); document.getElementById('tauxCotRG').addEventListener('input', function () { validateField('tauxCotRG', true); updateSubmitButtonState('projetForm'); }); document.getElementById('tauxCotRO').addEventListener('input', function () { validateField('tauxCotRO', true); updateSubmitButtonState('projetForm'); calcCotAnnuelle(); }); document.getElementById('capitalColis').addEventListener('input', function () { validateField('capitalColis', true); updateSubmitButtonState('projetForm'); }); document.getElementById('capitalMax').addEventListener('input', function () { validateField('capitalMax', true); updateSubmitButtonState('projetForm'); }); document.getElementById('capitalExped').addEventListener('input', function () { validateField('capitalExped', true); updateSubmitButtonState('projetForm'); }); document.getElementById('capitalTPPC').addEventListener('input', function () { validateField('capitalTPPC', true); updateSubmitButtonState('projetForm'); }); document.getElementById('capitalExpo').addEventListener('input', function () { validateField('capitalExpo', true); updateSubmitButtonState('projetForm'); }); document.getElementById('franchiseTransport').addEventListener('input', function () { validateField('franchiseTransport', true); updateSubmitButtonState('projetForm'); }); document.getElementById('franchiseTPPC').addEventListener('input', function () { validateField('franchiseTPPC', true); updateSubmitButtonState('projetForm'); }); document.getElementById('franchiseExpo').addEventListener('input', function () { validateField('franchiseExpo', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotProvRG').addEventListener('input', function () { validateField('cotProvRG', true); updateSubmitButtonState('projetForm'); calcCotAnnuelle(); }); document.getElementById('cotProvRO').addEventListener('input', function () { validateField('cotProvRO', true); updateSubmitButtonState('projetForm'); calcCotAnnuelle(); }); document.getElementById('cotRO').addEventListener('input', function () { validateField('cotRO', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotRG').addEventListener('input', function () { validateField('cotRG', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotComptant').addEventListener('input', function () { validateField('cotComptant', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotAnnuelle').addEventListener('input', function () { validateField('cotAnnuelle', true); updateSubmitButtonState('projetForm'); }); document.getElementById('cotAnnuelleHT').addEventListener('input', function () { validateField('cotAnnuelleHT', true); updateSubmitButtonState('projetForm'); }); document.getElementById('marExpo').addEventListener('input', function () { validateField('marExpo', true); updateSubmitButtonState('projetForm'); }); document.getElementById('typeMar').addEventListener('input', function () { validateField('typeMar', true); updateSubmitButtonState('projetForm'); }); document.getElementById('activite').addEventListener('input', function () { validateField('activite', true); updateSubmitButtonState('projetForm'); }); document.querySelectorAll('table[id="moyenTransport"] input').forEach((element) => element.addEventListener('click', function () { transportChoixUnique(this) })); document.getElementById('risqueTransport').addEventListener('change', function () { afficherChip(document.querySelectorAll('select[name="risqueTransport"] option:not([value="placeholder"])')) }); document.getElementById('garantieOpt').addEventListener('change', function () { afficherChip(document.querySelectorAll('select[name="garantieOpt"] option:not([value="placeholder"])')) }); document.getElementById("TPPC").addEventListener('change', function () { toggleTypeTPPC(this) }); document.getElementById("marchandise-exposition").addEventListener('change', function () { toggleNombreExpo(this) }); document.querySelectorAll('input[name="risqueGuerre"]').forEach((element) => element.addEventListener('change', function () { toggleRG(this) })); document.querySelectorAll('input[name="typeContrat"]').forEach((element) => element.addEventListener('change', function () { toggleTypeContrat(this) })); document.querySelectorAll('input[name="valeurAssuree"]').forEach((element) => element.addEventListener('change', function () { toggleValeurAssuree(this) })); } // 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; const produitNom = item.produit.toUpperCase() option.textContent = item.type + " " + produitNom + " - " + 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 (produit.actAssure) { document.getElementById('activite').defaultValue = produit.actAssure } if (produit.typeMar) { document.getElementById('typeMar').defaultValue = produit.typeMar } if (produit.valeurAssuree) {document.querySelector('input[value="' + produit.valeurAssuree + '"][name="valeurAssuree"]').checked = true;} if (produit.valeurAssuree == 'derogation') { document.getElementById('row-valeurAssureeBase').style.display = "flex"; produit.valeurAssureeBase.forEach((option) => { document.querySelector('input[value="' + option + '"][name="valeurAssureeBase"]').checked = true; }); } populateAssuresAdditionnels(produit); //Zone Geo populateZoneGeo(produit); //Moyen de Transport if (produit.aerien) { document.querySelector('input[value="' + produit.aerien + '"][name="aerien"]').checked = true; } if (produit.terrestre) { document.querySelector('input[value="' + produit.terrestre + '"][name="terrestre"]').checked = true; } if (produit.maritime) { document.querySelector('input[value="' + produit.maritime + '"][name="maritime"]').checked = true; } if (produit.postal) { document.querySelector('input[value="' + produit.postal + '"][name="postal"]').checked = true; } if (produit.fluvial) { document.querySelector('input[value="' + produit.fluvial + '"][name="fluvial"]').checked = true; } //infos Garanties if (produit.typeTPPC && produit.typeTPPC !== "") { document.getElementById('TPPC').checked = true; document.getElementById("col-typetppc").style.display = "block"; document.querySelector('input[value="' + produit.typeTPPC + '"][name="typeTPPC"]').checked = true; toggleTypeTPPC(document.getElementById('TPPC')); document.getElementById('capitalTPPC').defaultValue = produit.capitalTPPC; document.getElementById('franchiseTPPC').defaultValue = produit.franchiseTPPC; } //infos Garanties if (produit.marExpo > 0) { document.getElementById('marchandise-exposition').checked = true; document.getElementById('col-numMarExpo').style.display = "block"; document.getElementById("marExpo").defaultValue = produit.marExpo; toggleNombreExpo(document.getElementById('marchandise-exposition')); document.getElementById('capitalExpo').defaultValue = produit.capitalExpo; document.getElementById('franchiseExpo').defaultValue = produit.franchiseExpo; } if (produit.risqueTransport && produit.risqueTransport != []) { produit.risqueTransport.forEach((option) => { document.querySelector('select[name="risqueTransport"] option[value="' + option + '"]').selected = true; document.getElementById(option + '-chip').style.display = "inline-block"; }); } if (produit.risqueGuerre) { const risqueGuerre = produit.risqueGuerre ?? ""; document.querySelector('input[value="' + risqueGuerre + '"][name="risqueGuerre"]').checked = true; toggleRG(document.querySelector('input[value="' + risqueGuerre + '"][name="risqueGuerre"]')); if (risqueGuerre == "auto") { document.querySelector('input[value="' + produit.typeGarantieRG + '"][name="typeGarantieRG"]').checked = true; document.getElementById("tauxCotRG").defaultValue = produit.tauxCotRG; } } if (produit.cotProvRG) { document.getElementById("cotProvRO").defaultValue = produit.cotProvRO; } if (produit.cotProvRO) { document.getElementById("cotProvRG").defaultValue = produit.cotProvRG; } if (produit.garOpt && produit.garOpt != []) { produit.garOpt.forEach((option) => { document.querySelector('select[name="garantieOpt"] option[value="' + option + '"]').selected = true; document.getElementById(option + '-chip').style.display = "inline-block"; }); } //Infos Contrat // Populate temporalité if (produit.tempo) { document.getElementById(produit.tempo).checked = true; if (produit.tempo == "mensuel" || produit.tempo == "annuel") { document.getElementById("cotFraisHT").value = 36.00; } else if (produit.tempo == "trimestriel") { document.getElementById("cotFraisHT").value = 144.00; } else if (produit.tempo == "semestriel") { document.getElementById("cotFraisHT").value = 72.00; } }; if (produit.dateEffet) {document.getElementById("dateEffet").value = produit.dateEffet;}; if (produit.dateEcheance) {document.getElementById("dateEcheance").value = produit.dateEcheance;}; if (produit.dateFin) {document.getElementById("dateFin").value = produit.dateFin;}; if (produit.programmeInternational) {document.getElementById("programmeInternationale").checked = true;} if (produit.participationResultat) {document.getElementById("participationResultat").checked = true;} if (produit.coassurance) {document.getElementById("coassurance").checked = true;} if (produit.lieuDepart) {document.getElementById("depart").defaultValue = produit.lieuDepart;} if (produit.lieuArrivee) {document.getElementById("arrivee").defaultValue = produit.lieuArrivee;} //cotisations if (produit.typeContrat) { document.querySelector('input[value="' + produit.typeContrat + '"][name="typeContrat"]').checked = true; toggleTypeContrat(document.querySelector('input[value="' + produit.typeContrat + '"][name="typeContrat"]')); } document.getElementById('CA').defaultValue = produit.ca ?? ''; document.getElementById('cotisationIrreductible').defaultValue = produit.cotIrred ?? ''; if (produit.capitalMax) {document.getElementById('capitalMax').defaultValue = produit.capitalMax;} if (produit.capitalColis) {document.getElementById('capitalColis').defaultValue = produit.capitalColis;} if (produit.capitalExped) {document.getElementById('capitalExped').defaultValue = produit.capitalExped;} if (produit.franchiseTransport) {document.getElementById('franchiseTransport').defaultValue = produit.franchiseTransport;} if (produit.tauxCotRG) {document.getElementById('tauxCotRG').defaultValue = produit.tauxCotRG;} if (produit.tauxCotRO) {document.getElementById('tauxCotRO').defaultValue = produit.tauxCotRO;} if (produit.cotProvRG) {document.getElementById('cotProvRG').defaultValue = produit.cotProvRG;} if (produit.cotProvRO) {document.getElementById('cotProvRO').defaultValue = produit.cotProvRO;} if (produit.cotRG) {document.getElementById('cotRG').defaultValue = produit.cotRG;} if (produit.cotRO) {document.getElementById('cotRO').defaultValue = produit.cotRO;} if (produit.cotAnnuelleHT) {document.getElementById('cotAnnuelleHT').defaultValue = produit.cotAnnuelleHT;} if (produit.cotAnnuelleTTC) {document.getElementById('cotAnnuelle').defaultValue = produit.cotAnnuelleTTC;} if (produit.cotComptant) {document.getElementById('cotComptant').defaultValue = produit.cotComptant;} } function populateAssuresAdditionnels(fac) { if (!fac || !fac.assureAdditionnel || Object.keys(fac.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 < fac.assureAdditionnel.length; i++) { const row = fac.assureAdditionnel[i]; addRowAdditionnel(row.nom, row.adresse, row.siret); } } } function populateZoneGeo(fac) { if (fac.zone1) {document.getElementById("zone1").checked = true;}; if (fac.zone2) { document.getElementById("zone2").checked = true; document.getElementById("zone1").checked = true; document.getElementById("zone1").disabled = true; }; if (fac.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 (fac.zone4) {document.getElementById("zone4").checked = true;}; if (fac.zone5) {document.getElementById("zone5").checked = true;}; if (fac.zone6) {document.getElementById("zone6").checked = true;}; } 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); } }); } } // 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 = `