Development #40058
agendas virtuels : pouvoir définir des périodes d'absence
0%
Description
Qui viendraient s'ajouter à celle des agendas réels.
Fichiers
Révisions associées
manager: add excluded timeperiods management (#40058)
api: restrict slots with exluded timeperiods (#40058)
Historique
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Emmanuel Cazenave
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Sujet changé de agendas virtuels : pouvoir définir des exceptions temporelles à agendas virtuels : pouvoir définir des périodes d'absence
Dans mon esprit ce ticket pour répondre au point suivant :
- pour un agenda de type rendez-vous y définir ses propres zones d'absence, ainsi en frontoffice on taperait sur un méta-agenda avec une absence définie le vendredi, alors qu'en backoffice on taperait sur un autre méta-agenda, basé sur les mêmes agendas, mais sans absence particulière définie.
Dit autrement :
- J'ai parfois des RdV pris en urgence, des RdV surnuméraire qui ont lieu même si officiellement l'agenda est plein. Il faudrait pouvoir, en backoffice seulement, avoir une marge de manœuvre pour saisir ces RdV. Du genre en front on peut prendre les RdV que jusqu'à 17h alors qu'en back on peut le faire jusqu'à 19h ce qui permet de placer ces RdV surnuméraires.
Dans mon esprit toujours, on pouvait arriver à ça en permettant de définir des TimePeriodException sur les agendas virtuels. Mais elle n'ont aucun caractère récurrent, hors sujet.
Retour donc à la description initiale, permettre définir des zones d'absence.
Et là le plan "simple" me semble être de permettre de définir des TimePeriod sur les agendas virtuels, qui seraient interprétés comme des temps d'absence plutôt que comme des temps de présence.
Mis à jour par Pierre Cros il y a environ 4 ans
Juste pour info, parce que je pense qu'il n'y a rien de plus à faire, ça va aussi répondre au cas d'usage suivant :
Je souhaite importer les jours fériés français jusqu'en 2025 pour tous les agendas reliés par l'agenda virtuel, hop je le fais uniquement sur l'agenda virtuel.
Mis à jour par Frédéric Péters il y a environ 4 ans
Je souhaite importer les jours fériés français jusqu'en 2025 pour tous les agendas reliés par l'agenda virtuel, hop je le fais uniquement sur l'agenda virtuel.
Pour les jours fériés on aura #18904.
L'usage ici, pour prendre une version un peu simplifiée du commentaire d'Emmanuel, ce serait :
- l'agenda, réel, des agents,
- un agenda virtuel, où on définit les vendredis comme périodes d'absence.
On configure comme ça le frontoffice pour que les usagers passent par l'agenda virtuel, ne leur soient ainsi pas proposés de prendre de rendez-vous les vendredis. Et en backoffice pour la saisie par les agents, on pointe directement sur le vrai agenda agents, où ils ont comme ça accès aux créneaux du vendredi, "invisibles" du public.
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Fichier 0001-virtual-agendas-allow-direct-relation-from-agenda-to.patch 0001-virtual-agendas-allow-direct-relation-from-agenda-to.patch ajouté
- Fichier 0002-manager-add-excluded-timeperiods-management-40058.patch 0002-manager-add-excluded-timeperiods-management-40058.patch ajouté
- Fichier 0003-api-restrict-slots-with-exluded-timeperiods-40058.patch 0003-api-restrict-slots-with-exluded-timeperiods-40058.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Voilà donc avec la possibilité d'ajouter des TimePeriod sur les agendas virtuels, appelées sur ces écrans 'excluded periods', ces périodes d'exclusion s'appliquant à tous les guichets de tous les agendas réels inclus dans l'agenda virtuel.
Coté implémentation on calcule dynamiquement des périodes horaires effectives, périodes horaires des agendas réduites par les périodes exclues.
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Fichier 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch ajouté
- Fichier 0007-manager-add-excluded-timeperiods-management-40058.patch 0007-manager-add-excluded-timeperiods-management-40058.patch ajouté
- Fichier 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch ajouté
Il y a eu cette remarque :
+def compute_effective_timeperiods(effective_timeperiods, excluded_timeperiods):
J'y aurais plutôt vu une boucle qu'une récursion, mais ok.
Pas réussi à modéliser ça en boucle, soit mon cerveau percute pas soit c'est vraiment plus difficile.
Rebasé.
Mis à jour par Frédéric Péters il y a environ 4 ans
J'ai peut-être une lecture trop rapide, mais pour moi :
def compute_effective_timeperiods(effective_timeperiods, excluded_timeperiods): res = [] excluded_timeperiod = excluded_timeperiods[0] ... return compute_effective_timeperiods(res, excluded_timeperiods[1:])
me semblait revenir à :
def compute_effective_timeperiods(effective_timeperiods, excluded_timeperiods): res = [] for excluded_timeperiod in excluded_timeperiods: ... return res
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
Le problème c'est qu'une période d'exclusion peut couper en deux une période effective, et donc il faut comparer chaque période d'exclusion à toutes les périodes effectives calculées à l'itération d'avant, bref ça sent quand même la récursion à plein nez (ou alors c'est moi qui loupe un truc).
Mis à jour par Frédéric Péters il y a environ 4 ans
Ou je rate moi un truc,
def compute_effective_timeperiods(effective_timeperiods, excluded_timeperiods): for excluded_timeperiod in excluded_timeperiods: res = [] for effective_timeperiod in effective_timeperiods: ... (le même code que maintenant) effective_timeperiods = res return effective_timeperiods
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Fichier 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch ajouté
- Fichier 0007-manager-add-excluded-timeperiods-management-40058.patch 0007-manager-add-excluded-timeperiods-management-40058.patch ajouté
- Fichier 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch ajouté
Effectivement, voilà.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
virtual agendas: allow direct relation from agenda to timeperiod (#40058)