Accueil > Forum > > > > calcul 45 jours fin de mois
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
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|