126 lines
4.2 KiB
JavaScript
126 lines
4.2 KiB
JavaScript
// 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);
|
|
}
|