[myBin] Améliorer les crons

Proposition d’amélioration des crons de l’équipement.

Actuellement : le cron représente la date de ramassage
Proposition : le cron représente une date relative à celle de ramassage

Il faudrait ajouter pour chaque cron 2 champs.

Champ binaire : Ajouter/retrancher
Champ numérique : nb de jours relatifs à la date de ramassage

Dernier vendredi du mois
cron → dernier vendredi du mois
binaire → pas d’importance
numérique → 0

Le mardi suivant le dernier vendredi du mois
cron → dernier vendredi du mois
binaire → ajouter
numérique → 4

La veille du dernier vendredi du mois
cron → dernier vendredi du mois
binaire → retrancher
numérique → 1

Les deux champs peuvent être remplacés par un seul avec des valeurs négatives et positives

Ba … c est pas plus simplement le dernier jeudi du mois !? :stuck_out_tongue_winking_eye:

Non, ce n’est pas la même chose.

Capture d’écran du 2021-03-20 13-32-01

Ok ok bien vu ! :+1:

1 « J'aime »

Ces scripts sont des palliatifs, il serait préférable d’agir sur le code du plugin.
J’avais fait ces propositions à @hugoKs3 (en début de ce sujet).
Pour 1 semaine sur N, on pourrait aussi imaginer que pour un cron donné et une date de départ, on supprime systématiquement N-1 occurrences de suite.

comment tu gères la différence entre :

  • le cron me permet de calculer des récurrences et sur chacune de ses récurrence j’y ajoute un nb de jour
    de
  • le cron calcule la prochaine, sur laquelle j’ajoute un nb de jour ; la prochaine occurrence ne dépend pas du cron mais de cette derniere date calculée

!?

lors de l’ajout, par un choix du type du « cron » ?

cron normal, pas d’argument
cron relatif, nb positif ou négatif
cron 1/N, date de départ, N (en jour)
cron …

ok, donc ya bien un élément supplémentaire à récupérer.
je ne voyais pas comment on pouvait le « deviner »

je vais y réfléchir …
mais ca veut aussi dire que pour certain on est obligé de potentiellement recalculer tout « l’historique » pour trouver la prochaine, ca peut peut etre faire bcp … à voir !

(et puis je te vois venir avec tes gros sabots là …!!! :slight_smile: )

1 « J'aime »

La formule est toute chaude.

$dernierRamassage = '11 may 2021';
$cycleRamassage = 3; // N en semaine
$timestamp = strtotime($dernierRamassage) + (intdiv(strtotime("now") - strtotime($dernierRamassage), 7 * 86400 * $cycleRamassage) + 1) * 7 * 86400 * $cycleRamassage;

Pour N en jour, cela doit être

$timestamp = strtotime($dernierRamassage) + (intdiv(strtotime("now") - strtotime($dernierRamassage), 86400 * $cycleRamassage) + 1) * 86400 * $cycleRamassage;

« dernier ramassage » est bien à mettre à jour systématiquement non !?

Non, j’ai mal nommé cette variable.
C’est la dernière connue au moment de la saisie, elle reste immuable.