Skip to content

Ajouter tâche CRON d'auto‑scellement des feuilles approuvées#133

Merged
mapiolca merged 9 commits intomainfrom
2026-01-14-add-scheduled-task-for-auto-sealing-timesheets
Jan 14, 2026
Merged

Ajouter tâche CRON d'auto‑scellement des feuilles approuvées#133
mapiolca merged 9 commits intomainfrom
2026-01-14-add-scheduled-task-for-auto-sealing-timesheets

Conversation

@mapiolca
Copy link
Copy Markdown
Owner

Motivation

  • Automatiser le scellement des feuilles d'heures approuvées après un délai configurable en réutilisant les mécanismes natifs Dolibarr (cronjobs, constantes, getEntity, dol_now, $db->idate, etc.).
  • Réutiliser la logique métier existante de scellement manuel afin d'éviter la duplication de règles et garantir un workflow identique.
  • Exposer les réglages (activation, délai en jours, utilisateur responsable) dans la page de configuration du module pour permettre une administration native.

Description

  • Ajout d'une déclaration de tâche planifiée dans le descripteur du module (core/modules/modTimesheetWeek.class.php) pour exécuter une méthode run quotidienne via la nouvelle classe cron class/timesheetweekautoseal.class.php.
  • Nouvelle classe cron class/timesheetweekautoseal.class.php qui lit les constantes via getDolGlobalInt, calcule le seuil dol_now() - delay*86400, sélectionne les feuilles avec status = TimesheetWeek::STATUS_APPROVED et date_validation <= threshold (filtre entity via getEntity(...)) puis appelle la méthode de scellement métier pour chaque feuille en passant l'utilisateur configuré.
  • Factorisation de la logique de scellement : signature modifiée de TimesheetWeek::seal en seal($user, $origin = 'manual') pour prendre en charge l'origine auto et ajouter une trace dans note (texte de type "Scellée automatiquement le YYYY-MM-DD par USERID"); les appels manuels ont été adaptés (timesheetweek_card.php, timesheetweek_list.php) pour appeler seal(..., 'manual').
  • Ajout des réglages et UI d'administration dans admin/setup.php (constantes TIMESHEETWEEK_AUTOSEAL_ENABLE, TIMESHEETWEEK_AUTOSEAL_DELAY_DAYS, TIMESHEETWEEK_AUTOSEAL_USERID avec form->select_dolusers(...)), valeurs par défaut et validation simple (si delay<=0 ou userid<=0 la tâche ne scelle rien).
  • Ajout des chaînes de traduction dans langs/*/timesheetweek.lang (FR/EN/DE/ES/IT) et mise à jour de la documentation (README.md, ChangeLog.md).

Testing

  • Aucun test automatisé n'a été exécuté dans le cadre de ce changement.

Codex Task

@mapiolca mapiolca merged commit 07bd908 into main Jan 14, 2026
1 check passed
@mapiolca mapiolca deleted the 2026-01-14-add-scheduled-task-for-auto-sealing-timesheets branch January 14, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant