1218 lines
55 KiB
JavaScript
1218 lines
55 KiB
JavaScript
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, fac, projet, tarif;
|
|
|
|
// 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;
|
|
fac = contrat?.["@expand"]?.enCours || null;
|
|
projet = fac?.["@expand"]?.projet || null;
|
|
tarif = fac?.["@expand"]?.tarif || 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', function (e) {
|
|
e.preventDefault()
|
|
submitForm()
|
|
});
|
|
|
|
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 (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
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 (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
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.getElementsByName('zone').forEach((zone) => {
|
|
zone.addEventListener('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
}
|
|
})
|
|
})
|
|
|
|
|
|
document.getElementById('zone2').addEventListener('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
} else {
|
|
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 (tarif) {
|
|
e.preventDefault()
|
|
} else {
|
|
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;
|
|
}
|
|
}
|
|
});
|
|
|
|
document.getElementsByName('fract').forEach((radio) => {
|
|
radio.addEventListener('change', function () {
|
|
const cotHT = parseFloat(document.getElementById("cotAnnuelleHT").value)
|
|
document.getElementById("cotAnnuelle").value = (cotHT + getFraisHT());
|
|
})
|
|
})
|
|
|
|
|
|
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('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('CA', true);
|
|
updateSubmitButtonState('projetForm');
|
|
calcCotAnnuelle();
|
|
}
|
|
});
|
|
|
|
document.getElementById('cotisationIrreductible').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('cotisationIrreductible', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('tauxCotRG').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('tauxCotRG', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('tauxCotRO').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('tauxCotRO', true);
|
|
updateSubmitButtonState('projetForm');
|
|
updateRO(calcCotRO().toFixed(2))
|
|
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('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('capitalTPPC', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('capitalExpo').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('capitalExpo', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('franchiseTransport').addEventListener('input', function () {
|
|
validateField('franchiseTransport', true);
|
|
updateSubmitButtonState('projetForm');
|
|
});
|
|
|
|
document.getElementById('franchiseTPPC').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('franchiseTPPC', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('franchiseExpo').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('franchiseExpo', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('cotProvRG').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('cotProvRG', true);
|
|
updateSubmitButtonState('projetForm');
|
|
calcCotAnnuelle();
|
|
}
|
|
});
|
|
|
|
document.getElementById('cotProvRO').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('cotProvRO', true);
|
|
updateSubmitButtonState('projetForm');
|
|
document.getElementById("tauxCotRO").value = calcTauxRO().toFixed(3)
|
|
calcCotAnnuelle();
|
|
}
|
|
});
|
|
|
|
document.getElementById('cotRO').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('cotRO', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('cotRG').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
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('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
document.getElementById('cotAnnuelle').value = parseFloat(this.value) + getFraisHT()
|
|
validateField('cotAnnuelleHT', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('marExpo').addEventListener('input', function () {
|
|
validateField('marExpo', true);
|
|
updateSubmitButtonState('projetForm');
|
|
});
|
|
|
|
document.getElementById('typeMar').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('typeMar', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.getElementById('activite').addEventListener('keydown', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
validateField('activite', true);
|
|
updateSubmitButtonState('projetForm');
|
|
}
|
|
});
|
|
|
|
document.querySelectorAll('table[id="moyenTransport"] input').forEach((element) => element.addEventListener('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
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('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
toggleTypeTPPC(this)
|
|
}
|
|
});
|
|
|
|
document.getElementById('modif-OK').addEventListener('click', function (e) {
|
|
e.preventDefault()
|
|
redirectToTarif()
|
|
})
|
|
|
|
document.getElementById("marchandise-exposition").addEventListener('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
toggleNombreExpo(this)
|
|
}
|
|
});
|
|
|
|
document.querySelectorAll('input[name="risqueGuerre"]').forEach((element) => element.addEventListener('click', function (e) {
|
|
if (tarif) {
|
|
e.preventDefault()
|
|
openModaleModif()
|
|
} else {
|
|
toggleRG(this.value)
|
|
updateRO(calcCotRO().toFixed(2))
|
|
calcCotAnnuelle();
|
|
}
|
|
}));
|
|
|
|
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 || contrat.historique == [null]) {
|
|
document.getElementById('historiqueDiv').style.display = "none";
|
|
} else {
|
|
document.getElementById('historiqueDiv').style.display = "block";
|
|
|
|
const idSelect = document.getElementById('idSelect');
|
|
|
|
contrat.historique.forEach(function (item) {
|
|
if (item != null) {
|
|
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);
|
|
}
|
|
|
|
document.getElementById('activite').defaultValue = fac.actAssuree ?? "";
|
|
|
|
if (contrat.type !== "TEMPORAIRE") {
|
|
document.getElementById('typeMar').defaultValue = fac.typeMar ?? "";
|
|
}
|
|
|
|
if (fac.zones !== undefined && fac.zones.length > 0) {
|
|
populateZoneGeo(fac.zones);
|
|
}
|
|
|
|
if (fac?.aerien) {
|
|
document.querySelector('input[value="' + fac.aerien + '"][name="aerien"]').checked = true;
|
|
}
|
|
|
|
if (fac?.terrestre) {
|
|
document.querySelector('input[value="' + fac.terrestre + '"][name="terrestre"]').checked = true;
|
|
}
|
|
|
|
if (fac?.maritime) {
|
|
document.querySelector('input[value="' + fac.maritime + '"][name="maritime"]').checked = true;
|
|
}
|
|
|
|
if (fac?.postal) {
|
|
document.querySelector('input[value="' + fac.postal + '"][name="postal"]').checked = true;
|
|
}
|
|
|
|
if (fac?.fluvial) {
|
|
document.querySelector('input[value="' + fac.fluvial + '"][name="fluvial"]').checked = true;
|
|
}
|
|
|
|
if (fac?.tppc) {
|
|
document.getElementById('TPPC').checked = true;
|
|
document.getElementById("col-typetppc").style.display = "block";
|
|
document.getElementById('capitalTPPC').defaultValue = fac.capitalTPPC;
|
|
document.getElementById('franchiseTPPC').defaultValue = fac.franchiseTPPC;
|
|
toggleTypeTPPC(document.getElementById('TPPC'));
|
|
|
|
if (projet && projet.typeTPPC !== "") {
|
|
document.querySelector('input[value="' + projet.typeTPPC + '"][name="typeTPPC"]').checked = true;
|
|
}
|
|
}
|
|
|
|
if (fac?.nbVehicExpo > 0) {
|
|
document.getElementById('marchandise-exposition').checked = true;
|
|
document.getElementById('col-numMarExpo').style.display = "block";
|
|
document.getElementById("marExpo").defaultValue = fac.nbVehicExpo;
|
|
toggleNombreExpo(document.getElementById('marchandise-exposition'));
|
|
document.getElementById('capitalExpo').defaultValue = fac.capitalExpo;
|
|
document.getElementById('franchiseExpo').defaultValue = fac.franchiseExpo;
|
|
}
|
|
|
|
if (fac?.rg) {
|
|
const risqueGuerre = fac.rg ?? "";
|
|
document.querySelector('input[value="' + risqueGuerre + '"][name="risqueGuerre"]').checked = true;
|
|
toggleRG(risqueGuerre);
|
|
|
|
if (risqueGuerre == "auto") {
|
|
if (fac.typeRG.length > 0) {
|
|
//Le Type Etendue prend le dessus sur le type waterborne
|
|
const typeRG = fac.typeRG.includes('etendue') ? "etendue" : "waterborne"
|
|
document.querySelector('input[value="' + typeRG + '"][name="typeGarantieRG"]').checked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (projet?.valeurAssuree) {document.querySelector('input[value="' + projet.valeurAssuree + '"][name="valeurAssuree"]').checked = true;}
|
|
|
|
if (projet?.valeurAssuree == 'derogation') {
|
|
document.getElementById('row-valeurAssureeBase').style.display = "flex";
|
|
projet.valeurAssureeBase.forEach((option) => {
|
|
document.querySelector('input[value="' + option + '"][name="valeurAssureeBase"]').checked = true;
|
|
});
|
|
}
|
|
|
|
populateAssuresAdditionnels(projet);
|
|
|
|
//infos Garanties
|
|
|
|
if (projet?.risqueTransport.length > 0) {
|
|
projet.risqueTransport.forEach((option) => {
|
|
document.querySelector('select[name="risqueTransport"] option[value="' + option + '"]').selected = true;
|
|
document.getElementById(option + '-chip').style.display = "inline-block";
|
|
});
|
|
}
|
|
|
|
if (projet?.garOpt.length > 0) {
|
|
projet.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 (projet?.tempo) {
|
|
document.getElementById(projet.tempo).checked = true;
|
|
};
|
|
|
|
if (projet?.dateEffet) {document.getElementById("dateEffet").value = projet.dateEffet;};
|
|
if (projet?.dateEcheance) {document.getElementById("dateEcheance").value = projet.dateEcheance;};
|
|
if (projet?.dateFin) {document.getElementById("dateFin").value = projet.dateFin;};
|
|
if (projet?.programmeInternational) {document.getElementById("programmeInternationale").checked = true;}
|
|
if (projet?.participationResultat) {document.getElementById("participationResultat").checked = true;}
|
|
if (projet?.coassurance) {document.getElementById("coassurance").checked = true;}
|
|
if (projet?.lieuDepart) {document.getElementById("depart").defaultValue = projet.lieuDepart;}
|
|
if (projet?.lieuArrivee) {document.getElementById("arrivee").defaultValue = projet.lieuArrivee;}
|
|
|
|
//cotisations
|
|
if (projet?.typeContrat) {
|
|
document.querySelector('input[value="' + projet.typeContrat + '"][name="typeContrat"]').checked = true;
|
|
toggleTypeContrat(document.querySelector('input[value="' + projet.typeContrat + '"][name="typeContrat"]'));
|
|
}
|
|
|
|
document.getElementById('CA').defaultValue = fac?.ca ?? '';
|
|
document.getElementById('cotisationIrreductible').defaultValue = fac?.primeMini ?? '';
|
|
|
|
if (projet?.capitalMax) {document.getElementById('capitalMax').defaultValue = projet.capitalMax;}
|
|
if (projet?.capitalColis) {document.getElementById('capitalColis').defaultValue = projet.capitalColis;}
|
|
if (projet?.capitalExped) {document.getElementById('capitalExped').defaultValue = projet.capitalExped;}
|
|
|
|
if (projet?.franchiseTransport) {document.getElementById('franchiseTransport').defaultValue = projet.franchiseTransport;}
|
|
|
|
document.getElementById('tauxCotRG').defaultValue = fac?.tauxCotRG ?? '';
|
|
document.getElementById('tauxCotRO').defaultValue = fac?.tauxCotRO ?? '';
|
|
|
|
document.getElementById('cotProvRG').defaultValue = fac?.cotProvRG ?? '';
|
|
document.getElementById('cotProvRO').defaultValue = fac?.cotProvRO ?? '';
|
|
document.getElementById('cotRG').defaultValue = fac?.cotRG ?? '';
|
|
|
|
document.getElementById('cotRO').defaultValue = fac?.cotRO ?? '';
|
|
document.getElementById('cotAnnuelleHT').defaultValue = fac?.primeHT ?? '';
|
|
document.getElementById('cotAnnuelle').defaultValue = fac?.primeHT ? fac.primeHT + getFraisHT() : '';
|
|
document.getElementById('cotComptant').defaultValue = fac?.primeHT ?? '';
|
|
}
|
|
|
|
function populateAssuresAdditionnels(projet) {
|
|
if (!projet || !projet.assureAdditionnel || Object.keys(projet.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 < projet.assureAdditionnel.length; i++) {
|
|
const row = projet.assureAdditionnel[i];
|
|
addRowAdditionnel(row.nom, row.adresse, row.siret);
|
|
}
|
|
}
|
|
}
|
|
|
|
function populateZoneGeo(zones) {
|
|
if (zones.includes('zone1')) {document.getElementById("zone1").checked = true;};
|
|
if (zones.includes('zone2')) {
|
|
document.getElementById("zone2").checked = true;
|
|
document.getElementById("zone1").checked = true;
|
|
document.getElementById("zone1").disabled = true;
|
|
};
|
|
if (zones.includes('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 (zones.includes('zone4')) {document.getElementById("zone4").checked = true;};
|
|
if (zones.includes('zone5')) {document.getElementById("zone5").checked = true;};
|
|
if (zones.includes('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 = `
|
|
<td><input type="text" name="nom" value="${nomValue}" class="input-field" /></td>
|
|
<td><input type="text" name="adresse" value="${adresseValue}" class="input-field" /></td>
|
|
<td><input type="text" name="siret" value="${siretValue}" class="input-field" /></td>
|
|
<td>
|
|
<button class="btn delete-btn" type="button">
|
|
<i class="material-icons">delete</i>
|
|
</button>
|
|
</td>
|
|
`;
|
|
|
|
// 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);
|
|
});
|
|
}
|
|
|
|
// 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
|
|
}
|
|
|
|
function getTempo() {
|
|
if (document.getElementById("mensuel").checked == true) {return "mensuel";}
|
|
if (document.getElementById("trimestriel").checked == true) {return "trimestriel";}
|
|
if (document.getElementById("semestriel").checked == true) {return "semestriel";}
|
|
if (document.getElementById("annuel").checked == true) {return "annuel";}
|
|
|
|
return tempo;
|
|
}
|
|
|
|
function getFraisHT() {
|
|
const tempo = getTempo()
|
|
if (tempo == "mensuel" || tempo == "annuel") {
|
|
return 36.00;
|
|
} else if (tempo == "trimestriel") {
|
|
return 144.00;
|
|
} else if (tempo == "semestriel") {
|
|
return 72.00;
|
|
}
|
|
}
|
|
|
|
function getZones() {
|
|
return [...document.getElementsByName('zone')].filter((zone) => zone.checked).map((zone) => zone.id)
|
|
}
|
|
|
|
function calcCotRO() {
|
|
const ca = parseFloat(document.getElementById("CA").value) || 0;
|
|
const tauxRO = parseFloat(document.getElementById("tauxCotRO").value) || 0;
|
|
|
|
return (tauxRO * ca / 100)
|
|
}
|
|
|
|
function calcTauxRO() {
|
|
const ca = parseFloat(document.getElementById("CA").value) || 0;
|
|
const cotRO = parseFloat(document.getElementById("cotProvRO").value) || 0;
|
|
return (cotRO / ca * 100)
|
|
}
|
|
|
|
function calcCotAnnuelle() {
|
|
const valueFractionnement = getFraisHT()
|
|
const cotProvRG = parseFloat(document.getElementById("cotProvRG").value) || 0;
|
|
const cotProvRO = calcCotRO()
|
|
const valueContribAttentat = 6.50;
|
|
|
|
const cotHT = cotProvRG + cotProvRO
|
|
const cotTTC = cotHT + valueFractionnement + valueContribAttentat
|
|
|
|
document.getElementById("cotAnnuelleHT").value = cotHT.toFixed(2);
|
|
document.getElementById("cotAnnuelle").value = cotTTC.toFixed(2);
|
|
}
|
|
|
|
function updateRO(ro) {
|
|
const inputCotRO = document.getElementById('cotRO')
|
|
const inputCotProvRO = document.getElementById('cotProvRO')
|
|
if (inputCotRO.checkVisibility()) {
|
|
inputCotRO.value = ro
|
|
} else if (inputCotProvRO.checkVisibility()) {
|
|
inputCotProvRO.value = ro
|
|
}
|
|
}
|
|
|
|
function transportChoixUnique(element) { //Empêche de cochage des evenements majeurs ET tous risques
|
|
if (element.checked) {
|
|
if (element.id == element.name + '-tousRisques') {
|
|
document.querySelector('input[id=' + element.name + '-eventMaj]').checked = false
|
|
} else {
|
|
document.querySelector('input[id=' + element.name + '-tousRisques]').checked = false
|
|
}
|
|
}
|
|
}
|
|
|
|
function afficherChip(element) { //Affiche les options selectionnées sous forme de chip
|
|
element.forEach(option => {
|
|
if (option.selected) {
|
|
document.getElementById(option.value + '-chip').style.display = "inline-block"
|
|
} else {
|
|
document.getElementById(option.value + '-chip').style.display = "none"
|
|
}
|
|
})
|
|
}
|
|
|
|
function toggleTypeTPPC(element) { //Affiche/Desaffiche les options liées au TPPC
|
|
document.getElementById('col-typetppc').style.display = element.checked ? "block" : "none"
|
|
document.getElementById('row-franchiseTPPC').style.display = element.checked ? "table-row" : "none"
|
|
document.getElementById('row-capitalTPPC').style.display = element.checked ? "table-row" : "none"
|
|
}
|
|
|
|
function toggleNombreExpo(element) { //Affiche/Desaffiche les options liées à la marchandise d'expo
|
|
document.getElementById("col-numMarExpo").style.display = element.checked ? "block" : "none"
|
|
document.getElementById("row-capitalExpo").style.display = element.checked ? "table-row" : "none"
|
|
document.getElementById("row-franchiseExpo").style.display = element.checked ? "table-row" : "none"
|
|
|
|
}
|
|
|
|
function toggleRG(rg) { //Affiche/Desaffiche les options liées aux risques de guerre
|
|
if (contrat.type == "TEMPORAIRE") {
|
|
if (rg == "auto") {
|
|
document.getElementById("row-tauxCotRG").style.display = "none"
|
|
document.getElementById("row-cotProvRO").style.display = "none"
|
|
document.getElementById("row-cotProvRG").style.display = "none"
|
|
document.getElementById("row-cotRO").style.display = "table-row"
|
|
document.getElementById("row-cotRG").style.display = "table-row"
|
|
} else if (rg == "") {
|
|
document.getElementById("row-tauxCotRG").style.display = "none"
|
|
document.getElementById("row-cotProvRO").style.display = "none"
|
|
document.getElementById("row-cotProvRG").style.display = "none"
|
|
document.getElementById("row-cotRO").style.display = "table-row"
|
|
document.getElementById("row-cotRG").style.display = "none"
|
|
}
|
|
} else {
|
|
if (rg == "demande") {
|
|
document.getElementById("row-tauxCotRG").style.display = "none"
|
|
document.getElementById("row-cotProvRO").style.display = "none"
|
|
document.getElementById("row-cotProvRG").style.display = "none"
|
|
document.getElementById("row-cotRO").style.display = "table-row"
|
|
document.getElementById("row-cotRG").style.display = "none"
|
|
} else if (rg == "auto") {
|
|
document.getElementById("row-tauxCotRG").style.display = "table-row"
|
|
document.getElementById("row-cotProvRO").style.display = "table-row"
|
|
document.getElementById("row-cotProvRG").style.display = "table-row"
|
|
document.getElementById("row-cotRO").style.display = "none"
|
|
document.getElementById("row-cotRG").style.display = "none"
|
|
}
|
|
}
|
|
document.getElementById("row-typeGarantieRG").style.display = rg == "auto" ? "block" : "none"
|
|
}
|
|
|
|
function toggleTypeContrat(element) { //Affiche/Desaffiche les options liées au type de déclaration
|
|
if (contrat.type !== "TEMPORAIRE") {
|
|
if (element.value == "avisAliments") {
|
|
document.getElementById("colTauxAjustement").style.display = "none"
|
|
document.getElementById("colDetailCot").style.display = "none"
|
|
document.getElementById("colCA").style.display = "none"
|
|
document.getElementById("colCotMini").style.display = "none"
|
|
} else if (element.value == "chiffreAffaires") {
|
|
document.getElementById("colTauxAjustement").style.display = "block"
|
|
document.getElementById("colDetailCot").style.display = "block"
|
|
document.getElementById("colCA").style.display = "block"
|
|
document.getElementById("colCotMini").style.display = "block"
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function toggleValeurAssuree(element) { //Affiche/desaffiche les options liées à la valeur assurées
|
|
document.getElementById("row-valeurAssureeBase").style.display = element.value == "derogation" ? "flex" : "none"
|
|
}
|
|
|
|
function afficherFAC() {
|
|
if (contrat.type == "AN") {
|
|
document.getElementById('row-rg-no').style.display = "none"
|
|
document.getElementById('row-detailsVoyage').style.display = "none"
|
|
document.getElementById('row-cotAnnuelle').style.display = "table-row"
|
|
document.getElementById('colTypeContrat').style.display = "block"
|
|
document.getElementById('col-valeurAssuree').style.display = "block"
|
|
document.getElementById('col-activite').style.display = "block"
|
|
} else if (contrat.type == "TEMPORAIRE") {
|
|
document.getElementById('row-zonesGeo').style.display = "none"
|
|
document.getElementById('row-TPPC').style.display = "none"
|
|
document.getElementById('row-rg-demande').style.display = "none"
|
|
document.getElementById('row-rg-no').style.display = "block"
|
|
document.getElementById('rg-demande').checked = false
|
|
document.getElementById('rg-auto').checked = true
|
|
document.getElementById('row-risqueTransport').style.display = "none"
|
|
document.getElementById('colTypeContrat').style.display = "none"
|
|
document.getElementById('row-fractionnement').style.display = "none"
|
|
document.getElementById('rowDateEcheance').style.display = "none"
|
|
document.getElementById('rowDateFin').style.display = "block"
|
|
document.getElementById('row-detailsVoyage').style.display = "block"
|
|
document.getElementById('row-programmeInternational').style.display = "none"
|
|
document.getElementById('row-participationResultats').style.display = "none"
|
|
document.getElementById('row-cotAnnuelle').style.display = "none"
|
|
document.getElementById('row-typeGarantieRG').style.display = "block"
|
|
document.getElementById('row-cotRO').style.display = "table-row"
|
|
document.getElementById('row-cotRG').style.display = "table-row"
|
|
document.getElementById('row-cotComptant').style.display = "table-row"
|
|
document.getElementById('row-capitalColis').style.display = "none"
|
|
document.getElementById('row-capitalExped').style.display = "none"
|
|
document.getElementById('colTauxAjustement').style.display = "none"
|
|
document.getElementById('colCA').style.display = "none"
|
|
document.getElementById('colCotMini').style.display = "none"
|
|
document.getElementById('col-activite').style.display = "none"
|
|
document.getElementById('activite').value = "not-null"
|
|
document.getElementById('col-valeurAssuree').style.display = "none"
|
|
} else if (contrat.type == "REMPLACEMENT") {
|
|
document.getElementById('row-rg-no').style.display = "none"
|
|
document.getElementById('row-detailsVoyage').style.display = "none"
|
|
document.getElementById('row-cotProvRO').style.display = "table-row"
|
|
document.getElementById('row-cotProvRG').style.display = "table-row"
|
|
document.getElementById('row-cotAnnuelle').style.display = "table-row"
|
|
document.getElementById('colTypeContrat').style.display = "block"
|
|
document.getElementById('col-valeurAssuree').style.display = "block"
|
|
document.getElementById('col-activite').style.display = "block"
|
|
}
|
|
}
|
|
|
|
function choixMultipleArray(name, select = false) {
|
|
if (select) {
|
|
return [...document.querySelectorAll('select[name="' + name + '"] option:checked:not([value="placeholder"])')].map((element) => element.value)
|
|
} else {
|
|
return [...document.querySelectorAll('input[name="' + name + '"]:checked')].map((element) => element.value)
|
|
}
|
|
}
|
|
|
|
function openModaleModif() {
|
|
const elem = document.getElementById('modalModif');
|
|
const instance = M.Modal.getInstance(elem);
|
|
instance.open();
|
|
}
|
|
|
|
async function redirectToTarif() {
|
|
if(await submitForm(false, false)){
|
|
window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=tarif`;
|
|
}
|
|
}
|
|
|
|
// Gérer la soumission du formulaire
|
|
async function submitForm(updateProjet = true, generateProject = true) {
|
|
const bodyProjet = {
|
|
// Activités
|
|
"valeurAssuree": contrat.type !== "TEMPORAIRE" ? document.querySelector('input[name="valeurAssuree"]:checked').value : "",
|
|
"valeurAssureeBase": document.getElementById('valeurAssuree-degoration').checked ? choixMultipleArray("valeurAssureeBase") : "",
|
|
"assureAdditionnel": extractAssureAdditionnel('empTableAdditionnel'),
|
|
|
|
//Infos Garanties
|
|
"typeTPPC": document.getElementById('TPPC').checked ? document.querySelector('input[name="typeTPPC"]:checked').value : "",
|
|
"risqueTransport": choixMultipleArray('risqueTransport', true),
|
|
"garOpt": choixMultipleArray('garantieOpt', true),
|
|
|
|
// Temporalités
|
|
"tempo": contrat.type !== "TEMPORAIRE" ? getTempo() : '',
|
|
"dateEffet": document.getElementById("dateEffet").value,
|
|
"dateEcheance": document.getElementById("dateEcheance").value,
|
|
"dateFin": document.getElementById("dateFin").value,
|
|
"coassurance": document.getElementById("coassurance").checked,
|
|
"programmeInternational": document.getElementById("programmeInternationale").checked,
|
|
"participationResultat": document.getElementById("participationResultat").checked,
|
|
"lieuDepart": document.getElementById("depart").value,
|
|
"lieuArrivee": document.getElementById("arrivee").value,
|
|
|
|
// Cotisations
|
|
"typeContrat": contrat.type !== "TEMPORAIRE" ? document.querySelector('input[name="typeContrat"]:checked').value : "",
|
|
"capitalMax": document.getElementById('capitalMax').value,
|
|
"capitalColis": document.getElementById('capitalColis').value,
|
|
"capitalExped": document.getElementById('capitalExped').value,
|
|
"franchiseTransport": document.getElementById('franchiseTransport').value,
|
|
'cotAnnuelleTTC': document.getElementById('cotAnnuelle').checkVisibility() ? document.getElementById('cotAnnuelle').value : "",
|
|
|
|
}
|
|
|
|
const response = await fetch(`/fac/createProjet`, {
|
|
method: 'POST',
|
|
body: JSON.stringify(bodyProjet),
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
|
|
const dataProjet = await response.json();
|
|
|
|
if (dataProjet.valid) {
|
|
const idProjet = dataProjet.fac.id
|
|
const idTarif = fac?.tarif ?? ""
|
|
const typeRG = fac?.typeRG ?? document.getElementById('rg-auto').checked ? document.querySelector('input[name="typeGarantieRG"]:checked').value : ""
|
|
|
|
if (updateProjet) {
|
|
var bodyFAC = {
|
|
projet: idProjet,
|
|
tarif: idTarif,
|
|
nbVehicExpo: document.getElementById('marchandise-exposition').checked ? document.getElementById('marExpo').value : "",
|
|
actAssuree: contrat.type !== "TEMPORAIRE" ? document.getElementById("activite").value : "",
|
|
typeMar: document.getElementById('typeMar').value,
|
|
ca: document.getElementById('CA').checkVisibility() ? document.getElementById('CA').value : "",
|
|
cotRO: document.getElementById('cotRO').checkVisibility() ? document.getElementById('cotRO').value : "",
|
|
cotRG: document.getElementById('cotRG').checkVisibility() ? document.getElementById('cotRG').value : "",
|
|
cotProvRO: document.getElementById('cotProvRO').checkVisibility() ? document.getElementById('cotProvRO').value : "",
|
|
cotProvRG: document.getElementById('cotProvRG').checkVisibility() ? document.getElementById('cotProvRG').value : "",
|
|
tauxCotRO: document.getElementById('tauxCotRO').checkVisibility() ? document.getElementById('tauxCotRO').value : "",
|
|
tauxCotRG: document.getElementById('tauxCotRG').checkVisibility() ? document.getElementById('tauxCotRG').value : "",
|
|
capitalTPPC: document.getElementById('capitalTPPC').checkVisibility() ? document.getElementById('capitalTPPC').value : "",
|
|
capitalExpo: document.getElementById('capitalExpo').checkVisibility() ? document.getElementById('capitalExpo').value : "",
|
|
franchiseExpo: document.getElementById('franchiseExpo').checkVisibility() ? document.getElementById('franchiseExpo').value : "",
|
|
franchiseTPPC: document.getElementById('franchiseTPPC').checkVisibility() ? document.getElementById('franchiseTPPC').value : "",
|
|
typeRG: typeRG,
|
|
zones: getZones(),
|
|
terrestre: document.querySelector('input[name="terrestre"]:checked')?.value ?? "",
|
|
maritime: document.querySelector('input[name="maritime"]:checked')?.value ?? "",
|
|
aerien: document.querySelector('input[name="aerien"]:checked')?.value ?? "",
|
|
postal: document.querySelector('input[name="postal"]:checked')?.value ?? "",
|
|
fluvial: document.querySelector('input[name="fluvial"]:checked')?.value ?? "",
|
|
multimodal: "",// A VOIR
|
|
|
|
tppc: document.getElementById('TPPC').checked,
|
|
rg: document.querySelector('input[name="risqueGuerre"]:checked').value,
|
|
primeHT: document.getElementById('cotAnnuelleHT').checkVisibility() ? document.getElementById('cotAnnuelleHT').value : "",
|
|
primeMini: document.getElementById('cotisationIrreductible').value
|
|
|
|
}
|
|
} else {
|
|
var bodyFAC = {
|
|
projet: idProjet,
|
|
tarif: idTarif,
|
|
nbVehicExpo: fac.nbVehicExpo,
|
|
actAssuree: fac.actAssuree,
|
|
typeMar: fac.typeMar,
|
|
ca: fac.ca,
|
|
cotRO: fac.cotRO,
|
|
cotRG: fac.cotRG,
|
|
cotProvRO: fac.cotProvRO,
|
|
cotProvRG: fac.cotProvRG,
|
|
tauxCotRO: fac.tauxCotRO,
|
|
tauxCotRG: fac.tauxCotRG,
|
|
capitalTPPC: fac.capitalTPPC,
|
|
capitalExpo: fac.capitalExpo,
|
|
franchiseExpo: fac.franchiseExpo,
|
|
franchiseTPPC: fac.franchiseTPPC,
|
|
typeRG: fac.typeRG,
|
|
zones: fac.zones,
|
|
terrestre: fac.terrestre,
|
|
maritime: fac.maritime,
|
|
aerien: fac.aerien,
|
|
postal: fac.postal,
|
|
fluvial: fac.fluvial,
|
|
multimodal: fac.multimodal,
|
|
tppc: fac.tppc,
|
|
rg: fac.rg,
|
|
primeHT: fac.primeHT,
|
|
primeMini: fac.primeMini
|
|
}
|
|
}
|
|
|
|
const responseFAC = await fetch(`/fac/create`, {
|
|
method: 'POST',
|
|
body: JSON.stringify(bodyFAC), headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
const dataFAC = await responseFAC.json();
|
|
if (dataFAC.valid) {
|
|
const idFAC = dataFAC.fac.id;
|
|
|
|
// Mettre à jour le champ "fac" dans le contrat avec l'ID de la nouvelle saisie
|
|
const responseContratEnCours = await fetch(`/contrat/update/${contrat.produit}/${contrat.id}/${idFAC}`, {
|
|
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,
|
|
"projet": "FAC",
|
|
"id": idFAC,
|
|
"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 (generateProject) {
|
|
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/fac/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 {
|
|
return dataHistoriqueUpdate.valid
|
|
}
|
|
} else {
|
|
console.log('Echec lors de la mise à jour du champ "enCours" dans le contrat :', dataContratEnCours.message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Exposer init globalement pour y accéder depuis l'extérieur
|
|
window.initSubmenuForm = init;
|
|
})(); |