Project

General

Profile

Development #40058

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

Added by Emmanuel Cazenave about 2 months ago. Updated 18 days ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
20 Feb 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

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

0001-virtual-agendas-allow-direct-relation-from-agenda-to.patch View (2.79 KB) Emmanuel Cazenave, 26 Feb 2020 06:30 PM

0002-manager-add-excluded-timeperiods-management-40058.patch View (11.9 KB) Emmanuel Cazenave, 26 Feb 2020 06:30 PM

0003-api-restrict-slots-with-exluded-timeperiods-40058.patch View (15.4 KB) Emmanuel Cazenave, 26 Feb 2020 06:30 PM

0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch View (2.79 KB) Emmanuel Cazenave, 16 Mar 2020 05:56 PM

0007-manager-add-excluded-timeperiods-management-40058.patch View (11.9 KB) Emmanuel Cazenave, 16 Mar 2020 05:56 PM

0008-api-restrict-slots-with-exluded-timeperiods-40058.patch View (15.4 KB) Emmanuel Cazenave, 16 Mar 2020 05:56 PM

0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch View (2.79 KB) Emmanuel Cazenave, 16 Mar 2020 07:21 PM

0007-manager-add-excluded-timeperiods-management-40058.patch View (11.9 KB) Emmanuel Cazenave, 16 Mar 2020 07:21 PM

0008-api-restrict-slots-with-exluded-timeperiods-40058.patch View (15.3 KB) Emmanuel Cazenave, 16 Mar 2020 07:21 PM

Associated revisions

Revision 3aba16e8 (diff)
Added by Emmanuel Cazenave 18 days ago

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

Revision aec5b30f (diff)
Added by Emmanuel Cazenave 18 days ago

manager: add excluded timeperiods management (#40058)

Revision ec474b46 (diff)
Added by Emmanuel Cazenave 18 days ago

api: restrict slots with exluded timeperiods (#40058)

History

#1 Updated by Emmanuel Cazenave about 1 month ago

  • Assignee set to Emmanuel Cazenave
  • Status changed from Nouveau to En cours

#2 Updated by Emmanuel Cazenave about 1 month ago

  • Subject changed from agendas virtuels : pouvoir définir des exceptions temporelles to 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 Updated by Pierre Cros about 1 month ago

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 Updated by Frédéric Péters about 1 month ago

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 Updated by Emmanuel Cazenave about 1 month ago

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 Updated by Emmanuel Cazenave 22 days ago

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 Updated by Frédéric Péters 22 days ago

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 Updated by Emmanuel Cazenave 22 days ago

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 Updated by Frédéric Péters 22 days ago

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 Updated by Frédéric Péters 18 days ago

  • Status changed from Solution proposée to Solution validée

#12 Updated by Frédéric Péters 18 days ago

  • Status changed from Solution validée to Résolu (à déployer)

#13 Updated by Frédéric Péters 18 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF