[abonnements] 2 commits

spip-contrib-extensions/abonnements | 2 commits

Par Cerdic, le 6 mars 2026 à 10h38min :

fix: utiliser la fonction abonnement_calculer_echeance_next() pour calculer la prochaine echeance d’un abonnement et gerer proprement les echeances mensuelles sur les fin de mois (29, 30 et 31)

Modifié
action/editer_abonnement.php

Détails : fix: utiliser la fonction abonnement_calculer_echeance_next() pour calculer la... (1afe47bc) · Validations · spip-contrib-extensions / abonnements · GitLab

==============================
Par Cerdic, le 6 mars 2026 à 10h38min :

feat: une fonction abonnement_calculer_echeance_next() pour calculer la prochaine echeance en respectant le jour echeance de la date debut. Une echeance qui demarre le 29, 30 ou 31 doit toujours tomber le dernier jour du mois et non le début du mois suivant
La fonction supporte les periode heure/jour/mois/annee, mais elle ne fait des calculs compliques que si on a une periode mois (ou une periode annee avec un debut le 29/02) ET un jour de debut qui tombe le 29, 30 ou 31
La fonction propose un argument supplementaire recale_echeance qui permet de recaler une echeance qui a dérivé par rapport au jour de depart, même si celui-ci tombe un jour <29. A voir si on l’utilise pour recaler les abonnements en base, ou si on laisse comme ça l’existant en se contentant de bien gérer dans le futur

Cas pratiques :

Mensuelles :
D : 2026-01-31 12:00:00
1: 2026-02-28 12:00:00
2: 2026-03-31 12:00:00
3: 2026-04-30 12:00:00
4: 2026-05-31 12:00:00
5: 2026-06-30 12:00:00
6: 2026-07-31 12:00:00
7: 2026-08-31 12:00:00
8: 2026-09-30 12:00:00
9: 2026-10-31 12:00:00
10: 2026-11-30 12:00:00
11: 2026-12-31 12:00:00

D : 2026-01-30 12:00:00
1: 2026-02-28 12:00:00
2: 2026-03-30 12:00:00
3: 2026-04-30 12:00:00
4: 2026-05-30 12:00:00
5: 2026-06-30 12:00:00
6: 2026-07-30 12:00:00
7: 2026-08-30 12:00:00
8: 2026-09-30 12:00:00
9: 2026-10-30 12:00:00
10: 2026-11-30 12:00:00
11: 2026-12-30 12:00:00

D : 2026-01-29 12:00:00
1: 2026-02-28 12:00:00
2: 2026-03-29 12:00:00
3: 2026-04-29 12:00:00
4: 2026-05-29 12:00:00
5: 2026-06-29 12:00:00
6: 2026-07-29 12:00:00
7: 2026-08-29 12:00:00
8: 2026-09-29 12:00:00
9: 2026-10-29 12:00:00
10: 2026-11-29 12:00:00
11: 2026-12-29 12:00:00

Annuelles:
D : 2024-02-29 12:00:00
1: 2025-02-28 12:00:00
2: 2026-02-28 12:00:00
3: 2027-02-28 12:00:00
4: 2028-02-29 12:00:00
5: 2029-02-28 12:00:00
6: 2030-02-28 12:00:00
7: 2031-02-28 12:00:00
8: 2032-02-29 12:00:00

Modifié
action/editer_abonnement.php

Détails : feat: une fonction abonnement_calculer_echeance_next() pour calculer la... (b90123f3) · Validations · spip-contrib-extensions / abonnements · GitLab