// activer/désactiver les champs passés en paramètres function toggleInputs(idcb, idfields) { const noamort = document.getElementById(idcb); for (let id of idfields) { const field = document.getElementById(id); if (noamort.checked) { field.setAttribute("disabled","disabled"); } else { field.removeAttribute("disabled"); } } } // fixer l'exercice des sélecteurs de compte function setAccountYear(button_names, id_year) { for (const name of button_names) { const button = document.querySelector("button[data-name=" + name + "]"); const b_value = button.value; const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); button.setAttribute('value', new_value); } } /** * renvoyer la valeur en secondes d'une date au format j/m/a * @param {string} date */ function str2sec(date) { const jma = date.split('/'); const dd = new Date(jma[2], jma[1]-1, jma[0]); return dd.getTime()/1000; } // renvoyer la valeur en secondes d'un champ date function getDate(idelem) { return str2sec(document.getElementById(idelem).value); } // désactiver les options du sélecteur qui ne sont pas dans un tableau de valeurs function disableOptions(idSelect, init, values) { for (let i = init; i < idSelect.options.length; ++i) { const choix = idSelect.options[i]; if (! values.includes(choix.value)) { choix.setAttribute('disabled', 'true'); choix.removeAttribute('selected'); } } } // afficher la date de fin de l'exercice choisi function setDateEnd(id_exercices, id_date, id_years) { const selected_year = document.getElementById(id_exercices).value; if (selected_year == '') { document.getElementById(id_date).value = ''; return; } const years_data = document.getElementById(id_years); for (const choix of years_data.options) { if (choix.value == selected_year) { const epox = choix.text.split(' '); const date_fin = new Date(epox[1] * 1000); document.getElementById(id_date).value = date_fin.toLocaleDateString(); break; } } } // renvoyer la valeur numérique d'un montant formaté en € function getNumber(text) { return Number(text.replace(/ /g, '').replace(/,/, '.').replace(/€/, '')); } // calculer le montant d'un amortissement // @param montant immo // @param durée immo (années) // @param somme amortissements // @param date début // @param date de fin // @result montant de l'amortissement function computeAmort(montant_immo, duree_immo, somme_amort, date_debut, date_fin) { const nbjours = 1 + (date_fin - date_debut) / (60*60*24); return Math.round(Math.min(montant_immo / duree_immo / 365 * nbjours, montant_immo - somme_amort)); } // calculer et afficher le montant de l'amortissement function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_montant, id_erreur, id_date=null) { document.getElementById(id_erreur).setAttribute('class', 'hidden'); let case_montant = document.getElementById(id_montant); const selected_year = document.getElementById(id_exercices).value; if (selected_year == '') { case_montant.value = ''; return; } const years_data = document.getElementById(id_years); let date_debut, date_fin; for (const choix of years_data.options) { if (choix.value == selected_year) { const epox = choix.text.split(' '); date_debut = epox[0]; date_fin = epox[1]; break; } } if (id_date != null) { const date_choisie = str2sec(document.getElementById(id_date).value); console.log("date_choisie = " + date_choisie + ", date_debut=" + date_debut + ", date_fin = " + date_fin); if (date_debut <= date_choisie && date_choisie <= date_fin) { date_fin = date_choisie; } else { document.getElementById(id_erreur).setAttribute('class', ''); } } const montant_immo = Number(document.getElementById(id_immo).value); const duree_immo = Number(document.getElementById(id_duree).value); const somme_amort = Number(document.getElementById(id_amort).value); const montant_amort = computeAmort(montant_immo, duree_immo, somme_amort, date_debut, date_fin); case_montant.value = montant_amort/100; case_montant.innerText = montant_amort; } function setSelectorYear(button_names, f_years_selector) { const selected_year = document.getElementById(f_years_selector).value; setAccountYear(button_names, selected_year); }