Projet

Général

Profil

Development #40058

agendas virtuels : pouvoir définir des périodes d'absence

Ajouté par Emmanuel Cazenave il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
20 février 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Qui viendraient s'ajouter à celle des agendas réels.


Fichiers

0001-virtual-agendas-allow-direct-relation-from-agenda-to.patch (2,79 ko) 0001-virtual-agendas-allow-direct-relation-from-agenda-to.patch Emmanuel Cazenave, 26 février 2020 18:30
0002-manager-add-excluded-timeperiods-management-40058.patch (11,9 ko) 0002-manager-add-excluded-timeperiods-management-40058.patch Emmanuel Cazenave, 26 février 2020 18:30
0003-api-restrict-slots-with-exluded-timeperiods-40058.patch (15,4 ko) 0003-api-restrict-slots-with-exluded-timeperiods-40058.patch Emmanuel Cazenave, 26 février 2020 18:30
0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch (2,79 ko) 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch Emmanuel Cazenave, 16 mars 2020 17:56
0007-manager-add-excluded-timeperiods-management-40058.patch (11,9 ko) 0007-manager-add-excluded-timeperiods-management-40058.patch Emmanuel Cazenave, 16 mars 2020 17:56
0008-api-restrict-slots-with-exluded-timeperiods-40058.patch (15,4 ko) 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch Emmanuel Cazenave, 16 mars 2020 17:56
0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch (2,79 ko) 0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch Emmanuel Cazenave, 16 mars 2020 19:21
0007-manager-add-excluded-timeperiods-management-40058.patch (11,9 ko) 0007-manager-add-excluded-timeperiods-management-40058.patch Emmanuel Cazenave, 16 mars 2020 19:21
0008-api-restrict-slots-with-exluded-timeperiods-40058.patch (15,3 ko) 0008-api-restrict-slots-with-exluded-timeperiods-40058.patch Emmanuel Cazenave, 16 mars 2020 19:21

Révisions associées

Révision 3aba16e8 (diff)
Ajouté par Emmanuel Cazenave il y a environ 4 ans

virtual agendas: allow direct relation from agenda to timeperiod (#40058)

Révision aec5b30f (diff)
Ajouté par Emmanuel Cazenave il y a environ 4 ans

manager: add excluded timeperiods management (#40058)

Révision ec474b46 (diff)
Ajouté par Emmanuel Cazenave il y a environ 4 ans

api: restrict slots with exluded timeperiods (#40058)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Emmanuel Cazenave
#2

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.

#3

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.

#4

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.

#5

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

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.

#6

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

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é.

#7

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
#8

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).

#9

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
#11

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Solution proposée à Solution validée
#12

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
#13

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

Formats disponibles : Atom PDF