Calculer la date de fin du mois en cours ou suivant
Envoyé par: Aéroclub Béziers ()
Date: mercredi 25 mars 2015 11:09:30

Bonjour,

Nous venons de mettre en place la cotisation mensuelle.
Elle fait partie des validités que le membre doit posséder pour voler seul.
J'ai bien vu dans le wiki la formule qui permet de trouver la fin de l'année :
-------------------------------------
Formule calculant la fin de l'année suivante de la date d'expiration de la validité ou si l'utilisateur ne possède pas la validité, la fin de l'année courante
formatDate('yyyy-12-31', hasValidity(%USER_ID, 33) ? changeTime( getValidityExpiredDate(%USER_ID, 33), '+1', 0, 0 ) : %NOW_DATE )
-------------------------------------
Quelqu'un a t il une idée sur comment écrire la formule pour calculer la fin du mois suivant de la date d'expiration de la validité ou si l'utilisateur ne possède pas la validité, la fin du mois en cours. Tous les mois n'ont pas 31 jours et après décembre on change d'année....

Faute de mieux j'ai pensé faire un validité qui marche au 1er du mois comme ceci :
formatDate('2015-MM-01', hasValidity(%USER_ID, 33) ? changeTime( getValidityExpiredDate(%USER_ID, 33), 0, '+1', 0 ) : %NOW_DATE ).
Je ne l'ai pas testée mais que ce passerra t il en décembre ? ça va bloquer, le mois 13 n'existe pas.............????...........

Merci à tous

Rodolphe Deverdun
AC de Béziers

Options: RépondreCiter
Re: Calculer la date de fin du mois en cours ou suivant
Envoyé par: claratte ()
Date: lundi 18 mai 2015 17:41:02

Bonjour,

Je ne comprends pas le besoin, du coup, j'ai du mal à proposer une solution.

Pourriez-vous décrire ce que vous souhaitez en terme de comportement ?

Cordialement,

Christophe LARATTE
OpenFlyers manager

Options: RépondreCiter
Re: Calculer la date de fin du mois en cours ou suivant
Envoyé par: Aéroclub Béziers ()
Date: vendredi 2 février 2018 11:12:44

Bjr,
Oulala ça fait un bail que je ne suis pas venu ici !

Nous gérons pour le moment la question de façon manuelle, nous entrons manuellement la fin d'une validité mensuelle.

Pour répondre à la question :
1ère étape : Quelqu'un achète une validité à vendre qui à une périodicité de 1 mois. Nous souhaitons que OF prenne la date du dernier jour du mois suivant.
exemple 1 : nous sommes le 15 janvier, la fin de validité doit automatique se mettre au 28 février ou 29 (si bissextile)
exemple 2 : nous sommes le 20 mars, le fin de validité doit automatique se mettre au 30 avril.

2eme étape : cette même personne décide de renouveler cette même validité en cliquant sur la fléche ronde 'renouveler".
La nouvelle date de validité doit se calculer en fonction de l'échéance en cours, à laquelle est rajouté un mois.
example 3 : reprenons le cas donné en exemple 2 de l'étape 1. Nous sommes le 25 mars, la fin de validité est le 30 avril. en cliquant sur renouveler la nouvelle date de validité devient le 31 mai. S'iI clique une nouvelle fois, la fin de validité devient le 30 juin et ainsi de suite.

3ème étape : la validité est périmée. OF doit se comporter comme si le titulaire n'avait pas de validité en cours. c'est à dire comme à l'étape 1.

Je pense avoir fait le tour des différents cas.
En fin de compte c'est une gestion "automatique" d'une validité ayant une périodicité de 1 mois, contrairement à l'adhésion annuelle ou l'adhésion à le FFA.

Merci bien

Rodolphe Deverdun
AC de Béziers

Options: RépondreCiter
Re: Calculer la date de fin du mois en cours ou suivant
Envoyé par: claratte ()
Date: jeudi 8 février 2018 11:09:02

Bonjour,

Ok, j'ai bien compris. Je pense que pour les étapes 2 et 3 on a toutes les briques qu'il faut.

Ainsi, pour savoir si une validité est périmée ou pas, il existe hasValidity :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#hasValidity('user-id',-'validity-type-id',-'check-only-holding')

Il existe aussi getValidity qui en plus permet de connaitre l'échéance :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#getValidityExpiredDate('person-id',-'validity-type-id')

Après, il faut construire les étapes avec des tests ( .. ) ? cas vrai : cas faux

Cf. l'utilisation des opérateurs :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#Opérateurs

Le plus problématique, c'est plus pour obtenir la date de la fin du mois, qui varie en fonction des mois voir même des années !

En fait, il y a une astuce : au lieu de se poser la question "quel est le dernier jour du mois ?" on prend le 1er jour du mois suivant (qui tombe toujours le 1er) et on lui retranche 1 jour.

Pour enlever un jour il y a changeTime :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#changeTime('date',-'année',-'mois',-'jour',-'minute')

Pour aller chercher le 1er jour du mois, il y a formatDate :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#formatDate('patron',-'date')

Voila, avec tous ces briques, vous devriez arriver à la solution.

Comme toujours, il faut procéder petit pas par petit pas. Car il n'y a pas de débogueur de formule : il faut donc construire la formule étape par étape et vérifier que chaque étape fonctionne.

Et à la fin, il faut nous donner la formule pour qu'on la mette sur le wiki et que tout le monde en profite ;-)

On la mettra ici :

https://openflyers.com/fr/doc/of4/Formules-de-calcul#Date-d'expiration

Cordialement,

Christophe LARATTE
OpenFlyers manager

Options: RépondreCiter


Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.
This forum powered by Phorum.