Création d'une fonction partie 2.
Publié : 16 mai 2024 16:37
Bonjour !
Je fais suite à un premier post du 24 avril 2024 dont l'objectif était de créer un tableau permettant de calculer la TPV (taxe sur plus-value) sur un produit X. Afin de calculer cette taxe, il existe un tableau dégressif qui permet de connaitre la TPV exact suivant l'année de détention du produit X.
Cliquer sur ce lien pour voir l'ancien sujet ---> viewtopic.php?p=966#p966
Aujourd'hui je viens avec l'espoir d'obtenir à nouveau votre aide. Je souhaite dorénavant que ma fonction calcul le taux de TPV non pas uniquement en fonction de l'année mais aussi du jour et du mois de l'achat. Sauf qu'avec le script que j'ai tenté de créer, la modification du taux de TPV se fait toujours en fonction de l'année.
Voici mon code actuelle avec mes tentatives pour ajouter cette particularité :
/**
* Rempli automatiquement le taux de TPV en fonction de l'année de détention et la date du jour
* @customfunction
*/
// Fonction pour calculer le taux en fonction de la différence entre les années, mois et jours
function TPVtest(dateAchat) {
var dateActuelle = new Date();
var dateAchat = new Date(dateAchat);
var differenceAnnees, differenceMois, differenceJours;
try {
differenceAnnees = dateActuelle.getFullYear() - dateAchat.getFullYear();
differenceMois = dateActuelle.getMonth() - dateAchat.getMonth();
differenceJours = dateActuelle.getDate() - dateAchat.getDate();
// Ajustement si le mois actuel est avant le mois d'achat ou s'il est le même mais le jour actuel est avant le jour d'achat
if (differenceMois < 0 || (differenceMois === 0 && differenceJours < 0)) {
differenceAnnees--;
}
} catch (e) {
console.error('Problème lors du calcul entre les deux dates', e);
return;
}
var tauxDegressifs = {
1: 0.3620,
2: 0.3620,
3: 0.3439,
4: 0.3258,
5: 0.3077,
6: 0.2896,
7: 0.2715,
8: 0.2534,
9: 0.2353,
10: 0.2172,
11: 0.1991,
12: 0.1810,
13: 0.1629,
14: 0.1448,
15: 0.1267,
16: 0.1086,
17: 0.0905,
18: 0.0724,
19: 0.0543,
20: 0.0362,
21: 0.0181,
22: 0.0000
};
if (differenceAnnees >= Math.max(...Object.keys(tauxDegressifs))) {
return tauxDegressifs[Math.max(...Object.keys(tauxDegressifs))];
} else if (differenceAnnees <= 0) {
return tauxDegressifs[1]; // Considérer que la première année est utilisée si la différence est négative ou nulle
} else {
return tauxDegressifs[differenceAnnees];
}
}
Pouvez-vous m'aider à trouver la solution s'il vous plaît ? Je continue mes recherches en parallèle et vous tiendrais informé si je l'ai trouvé.
En vous remerciant d'avance. 🕵
Je fais suite à un premier post du 24 avril 2024 dont l'objectif était de créer un tableau permettant de calculer la TPV (taxe sur plus-value) sur un produit X. Afin de calculer cette taxe, il existe un tableau dégressif qui permet de connaitre la TPV exact suivant l'année de détention du produit X.
Cliquer sur ce lien pour voir l'ancien sujet ---> viewtopic.php?p=966#p966
Aujourd'hui je viens avec l'espoir d'obtenir à nouveau votre aide. Je souhaite dorénavant que ma fonction calcul le taux de TPV non pas uniquement en fonction de l'année mais aussi du jour et du mois de l'achat. Sauf qu'avec le script que j'ai tenté de créer, la modification du taux de TPV se fait toujours en fonction de l'année.
Voici mon code actuelle avec mes tentatives pour ajouter cette particularité :
/**
* Rempli automatiquement le taux de TPV en fonction de l'année de détention et la date du jour
* @customfunction
*/
// Fonction pour calculer le taux en fonction de la différence entre les années, mois et jours
function TPVtest(dateAchat) {
var dateActuelle = new Date();
var dateAchat = new Date(dateAchat);
var differenceAnnees, differenceMois, differenceJours;
try {
differenceAnnees = dateActuelle.getFullYear() - dateAchat.getFullYear();
differenceMois = dateActuelle.getMonth() - dateAchat.getMonth();
differenceJours = dateActuelle.getDate() - dateAchat.getDate();
// Ajustement si le mois actuel est avant le mois d'achat ou s'il est le même mais le jour actuel est avant le jour d'achat
if (differenceMois < 0 || (differenceMois === 0 && differenceJours < 0)) {
differenceAnnees--;
}
} catch (e) {
console.error('Problème lors du calcul entre les deux dates', e);
return;
}
var tauxDegressifs = {
1: 0.3620,
2: 0.3620,
3: 0.3439,
4: 0.3258,
5: 0.3077,
6: 0.2896,
7: 0.2715,
8: 0.2534,
9: 0.2353,
10: 0.2172,
11: 0.1991,
12: 0.1810,
13: 0.1629,
14: 0.1448,
15: 0.1267,
16: 0.1086,
17: 0.0905,
18: 0.0724,
19: 0.0543,
20: 0.0362,
21: 0.0181,
22: 0.0000
};
if (differenceAnnees >= Math.max(...Object.keys(tauxDegressifs))) {
return tauxDegressifs[Math.max(...Object.keys(tauxDegressifs))];
} else if (differenceAnnees <= 0) {
return tauxDegressifs[1]; // Considérer que la première année est utilisée si la différence est négative ou nulle
} else {
return tauxDegressifs[differenceAnnees];
}
}
Pouvez-vous m'aider à trouver la solution s'il vous plaît ? Je continue mes recherches en parallèle et vous tiendrais informé si je l'ai trouvé.
En vous remerciant d'avance. 🕵