begin process at 2012 05 29 01:11:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

calcul 45 jours fin de mois


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

calcul 45 jours fin de mois

jeudi 7 avril 2011 à 01:39:07 | calcul 45 jours fin de mois

opbrun

bonjour,

j'utilise ms CRM 4.0 et tente d'utiliser java script pour personnaliser certains formulaires. voici mon problème :
onjour,

je cherche à rédiger un petit programme me permettant de faire le calcul, à partir d'une date d'émission de facture, de la date de règlement attendue selon que cette échéance de paiement est due :

- à 45 jours fin de mois (soit +45 jours par rapport à la date de l'émission de la facture, la date recherchée est ensuite celle correspondant au dernier jour du mois résultant de ce premier calcul - correspond à la fonction fin.mois sur XL)
- à 60 jours calendaires (soit +60 jours par rapport à la date d'émission de facture)
- à vue ( = la date d'émission de la facture)

on utilise un menu déroulant qui détermine le cas à utiliser (45j fdm, 60j ou à vue)
on utilise un premier champ qui contient la date d'emission de la facture
on affiche le résultat du calcul dans un deuxième champ

encore merci d'avance.


jeudi 7 avril 2011 à 14:39:14 | Re : calcul 45 jours fin de mois

007Julien

Réponse acceptée !

Même si le formalisme est un peu lourd, l'utilisation de l'objet Date facilite ce genre de calcul ici effectué à partir de la date d'ouverture de la page (tdy comme to day). Seule précaution retrancher -45 ou -60 jours pour être certain d'ajouter (javascript concatène souvent à mauvais escient)

Code Javascript :
var tdy=new Date();
var an=tdy.getFullYear(),mo=tdy.getMonth(),jr=tdy.getDate();

var tdy45=new Date(an,mo,jr-(-45));
var an45=tdy.getFullYear(),mo45=tdy45.getMonth(),jr45=tdy45.getDate();

var tdy60=new Date(an,mo,jr-(-60));
var an60=tdy.getFullYear(),mo60=tdy60.getMonth(),jr60=tdy60.getDate();

var ms='janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novemenbre,décenmbre'.split(/,/g);

function chnDte(a,m,j){
 return j+(j==1?'er ':' ')+ms[m]+' '+a
}
alert("Aujourd'hui "+chnDte(an,mo,jr)+'\n'+"à 45 jours "+chnDte(an45,mo45,jr45)+'\n'+"à 60 jours "+chnDte(an60,mo60,jr60))


S'il fallait écrire une fonction ajoutant un délai à une date donnée, celle-ci pourrait être la suivante

Code Javascript :
var ms='janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novemenbre,décenmbre'.split(/,/g);

function chnDtePls(a,m,j,d){
	var dt=new Date(a,m,j-(-d)),ad=dt.getFullYear(),md=dt.getMonth(),jd=dt.getDate();
	return jd+(jd==1?'er ':' ')+ms[md]+' '+ad
}
var j=14,m=6,a=2011;// attention les mois sont décalés en javascript m=0 janvier
alert(chnDte(a,m,j)+"\nà 45 jours "+chnDtePls(a,m,j,45)+"\nà 60 jours "+chnDtePls(a,m,j,60))
jeudi 7 avril 2011 à 14:53:18 | Re : calcul 45 jours fin de mois

007Julien



J'ai oublié le fin de mois ! « The last but not the least »

En javascript, le dernier jour du mois est le jour zéro du mois suivant. D'où une nouvelle fonction avec un 5ème argument (non nul) pour la fin de mois.

Code Javascript :
var ms='janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novemenbre,décenmbre'.split(/,/g);

function chnDtePls(a,m,j,d,f){
	var dt=new Date(a,m,j-(-d)),ad=dt.getFullYear(),md=dt.getMonth(),jd=dt.getDate();
	if (f) jd=new Date(a,md-(-1),0).getDate();
	return jd+(jd==1?'er ':' ')+ms[md]+' '+ad
}

var j=14,m=6,a=2011;// attention les mois sont décalés en javascript m=0 janvier
alert(chnDte(a,m,j)+"\nà 45 jours "+chnDtePls(a,m,j,45)+"\nà 45 jours fin de mois "+chnDtePls(a,m,j,45,1)+"\nà 60 jours "+chnDtePls(a,m,j,60))


lundi 11 avril 2011 à 01:31:41 | Re : calcul 45 jours fin de mois

opbrun

Bonsoir,

un tout grand merci pour votre réponse mais elle ne répond pas tout à fait à ma demande. Ainsi, j'ai un premier champ qui s'appelle "new_emissionfacture" qui contient la date de départ (celle de l'émission de ma facture).
j'ai un deuxième champ qui s'appelle "new_echeancedatereglement" qui est le champ objet du calcul.
je dois pouvoir choisir le cas (0, 30, 45j fdm ou 60)jours selon le cas à l'aide d'une liste déroulante qui s'appelle "paymenttermcode".

Pour le moment, je progresse pas à pas et la date d'emission de la facture + 45j s'affiche bien (dernière ligne du code joint)à l'aide de ce premier bout de code :

j'ai donc modifié comme suit le script :
var dateemission=crmForm.all.new_emissionfacture.DataValue;
var an=dateemission.getYear(),mo=dateemission.getMonth(),jr=dateemission.getDate();
var tdy45=new Date(an,mo,jr-(-45));
var an45=dateemission.getYear(),mo45=tdy45.getMonth(),jr45=tdy45.getDate();
var tdy60=new Date(an,mo,jr-(-60));
var an60=dateemission.getYear(),mo60=tdy60.getMonth(),jr60=tdy60.getDate();

crmForm.all.new_echeancedatereglement.DataValue=tdy45

Il me reste maintenant à trouver une méthode de calcul simple pour la fin du mois correspondant à la date retournée par tdy45 (je n'ai pas bien compris le coup de la fonction). Par exemple si tdy45 = 18/05/11, alors tdy45FDM doit retourner : 31/05/11 ou 1/6/11 ce qui est plus simple et revient au même.

en vous remerciant par avance (une nouvelle fois)

lundi 11 avril 2011 à 01:59:09 | Re : calcul 45 jours fin de mois

opbrun

J'ai à nouveau simplifié et ajouté la sélection du cas de figure correspondant avec la sélection du cas de figure en utilisant la liste déroulante, voici ce que cela donne, ça marche très bien. Il ne me manque plus maintenant que le calcul des 45 FDM (voir mon post précédent) :
var dateemission=crmForm.all.new_datedereglement.DataValue;
var an=dateemission.getYear(),mo=dateemission.getMonth(),jr=dateemission.getDate();
var tdy30=new Date(an,mo,jr-(-30));
var tdy45=new Date(an,mo,jr-(-45));
var tdy60=new Date(an,mo,jr-(-60));

switch(crmForm.all.paymenttermscode.DataValue) {

case "17":
crmForm.all.new_echeancedatereglement.DataValue=crmForm.all.new_datedereglement.DataValue;
break;
case "1":
crmForm.all.new_echeancedatereglement.DataValue=tdy30;
break;
case "4":
crmForm.all.new_echeancedatereglement.DataValue=tdy45;
break;
case "10":
crmForm.all.new_echeancedatereglement.DataValue=tdy60;
break;
}
mardi 12 avril 2011 à 18:44:40 | Re : calcul 45 jours fin de mois

007Julien

Réponse acceptée !

La méthode Date permet d'ajouter ou de retrancher des délais variables exprimés en années, en mois ou en jours à une date donnée. Elle est inutile pour trouver le premier jour du mois suivant un mois donné puisque le quantième et le mois sont alors connus.

Par contre, elle trouve toute son utilité pour trouver la veille, c'est-à-dire, le dernier jour du mois précédent dont le quantième peut varier entre 28, 29, 30 et 31.

Pour calculer la date 45 jours fin de mois, on effectue d'abord le calcul à 45 jours pour trouver l'échéance. Connaissant alors le mois et l'année d'échéance, on recherche alors le jour zéro du mois suivant (qui précédant algébriquement le 1 du mois suivant sera le dernier du mois d'échéance).

Code Javascript :
// Calcul à 45 jours
var tdy45=new Date(an,mo,jr-(-45));
var an45=tdy.getFullYear(),mo45=tdy45.getMonth(),jr45=tdy45.getDate();

// Calcul du dernier jour du mois mo45 de l'année an45
// Ajouter 1 au mois et fixer le quantième à zéro
// Pour trouver le quantième jd
jd=new Date(an45,mo45-(-1),0).getDate();

La fonction proposée chnDtePls(a,m,j,d,f), vise à éviter simplement de refaire les calcul avec différentes données, elle comporte 5 arguments (le dernier étant facultatif) qui sont l'année a, le mois m, le jour j et le délai d ainsi qu'un booléen f (qui lorsqu'il est présent et non nul calcule la date fin de mois) et retourne une chaîne de caractères décrivant en clair la date demandée. Différents appels de fonction sont donnés en exemple dans la chaîne proposée.

Code Javascript :
// Ainsi avec 
var j=14,m=6,a=2011;

var chnDt45=chnDte(a,m,j,45) //  donne la date à 45 jours
var chnDt45Fin=chnDtePls(a,m,j,45,1) // donne la date à 45 jours fin de mois 
var chnDt60=chnDte(a,m,j,60) //  donne la date à 60 jours
var chnDt60Fin=chnDtePls(a,m,j,60,1) // donne la date à 60 jours fin de mois 




mardi 12 avril 2011 à 20:55:24 | Re : calcul 45 jours fin de mois

opbrun

bonjour et merci pour toutes vos réponse, voici comment j'ai résolu mon problème :

var dateemission=crmForm.all.new_emissionfacture.DataValue;
var an=dateemission.getYear(),mo=dateemission.getMonth(),jr=dateemission.getDate();
var tdy30=new Date(an,mo,jr-(-30));
var tdy45=new Date(an,mo,jr-(-45));
var tdy60=new Date(an,mo,jr-(-60));

function LastDayOfMonth(Year, Month)
{
return new Date(Year, Month+1, 0).getDate();
}
var an45=tdy45.getYear(),mo45=tdy45.getMonth(), jr45=tdy45.getDate();
var tdy45fdm = new Date(an45,mo45, LastDayOfMonth(an45, mo45));

switch(crmForm.all.paymenttermscode.DataValue)
{
case "17":
crmForm.all.new_echeancedatereglement.DataValue=crmForm.all.new_emissionfacture.DataValue;
break;
case "1":
crmForm.all.new_echeancedatereglement.DataValue=tdy30;
break;
case "4":
crmForm.all.new_echeancedatereglement.DataValue=tdy45fdm;
break;
case "10":
crmForm.all.new_echeancedatereglement.DataValue=tdy60;
break;
}


Cette discussion est classée dans : date, facture, mois, calcul, jours


Répondre à ce message

Sujets en rapport avec ce message

calcul d'un nombre de jours entre deux dates [ par borisV ] Bonjour, je cherche à calculer (et afficher...) un nombre de jours en tapant une date d'arrivée et une date de départ.En fait, il faudrait peut-être s Calcul de date à +/- n mois [ par sblancho ] bonjour,je dois faire un calcul de date à + n mois par rapport à la date du jour.comment se depatouiller avec les controles sur les fin de mois ?quelq Calcul du dernier jour ouvré d'un mois [ par bugmenot1 ] Bonjour, j'aimerai créer une fonction en JS qui permet de retourner en unixtime le dernier jour ouvré du mois courant. MErci de votre aide. Probleme de date [ par kangoo75 ] bonjour !!!!J'ai une date en javascript sur genre : 10-02-1986 11:24:30Et j'aimerais savoir comment additioné automatiquement des heures, jours, semai Probleme de date [ par typher ] Bonjour,Alors voilà j'ai un petit soucis avec une date, j'ai un formulaire ou l'utilisateur saisie ses infos et dedans il dois précisez sa date d'arri Afficher date (mois, année) [ par theseif ] Bonjour à tous, j'utilise ce script http://www.javascriptfr.com//code.aspx?ID=34725 pour renseigner la date dans un formulaire que je récupère sous la Help: Date en javascript qui retourne une mauvaise date [ par dgfhierf ] Bonjour,Je voudrais ajouter 30 jours à une date et je ne pense pas me tromper en faisant : myDate = new Date(annee,mois,jour);  New_date = myDate; New Mois de Février non valide??? [ par momosan77 ] Bonjour, donc j'explique mon dernier problème sur mes dates...Tout marché bien jusqu'à que je m'en compte que le mois de février le 02 n'est pas une d Changer un champ [ par Perace ] Bonjour moi j'ai un pettit souci:ma requete sql m'a renvoyé une date sous le format année-mois-jourj'ai fais une fonction javascript change(date) qui Fonction recherche date [ par Eyeron ] Bonjour, Je souhaite rechercher dans ma bdd tous les enregistrements datant de x jours. Je m'explique: j'ai une base de données avec des valeurs qui


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales