Projet

Général

Profil

Development #44159

Annulation d’une réservation

Ajouté par Frédéric Péters il y a presque 4 ans. Mis à jour il y a plus de 3 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

On devrait pouvoir depuis chrono annuler une réservation, individuelle sur un événement, ou d'un rendez-vous. (ou globalement pour un événement, #44157).

Ça devrait pouvoir déclencher le nécessaire du côté de la demande : on aurait passé au moment de la réservation une URL où faire un POST (plutôt que magiquement tenter de déterminer ça), genre ...formulaire/12/jump/trigger/cancel, et le workflow y serait configuré pour gérer ça, comme le workflow de paiement gère un trigger "paid".


Fichiers

Révisions associées

Révision 10caec88 (diff)
Ajouté par Valentin Deniaud il y a plus de 3 ans

utils: add signature tools (#44159)

Révision 1864d746 (diff)
Ajouté par Valentin Deniaud il y a plus de 3 ans

manager: add booking cancellation (#44159)

Historique

#1

Mis à jour par Valentin Deniaud il y a presque 4 ans

  • Assigné à mis à Valentin Deniaud
#2

Mis à jour par Valentin Deniaud il y a presque 4 ans

Frédéric Péters a écrit :

comme le workflow de paiement gère un trigger "paid"

Et le code qui permet de signer une telle requête vers w.c.s. est dans combo, je pense que c'est la seule brique qui avait ce besoin. Je le bouge dans hobo, et je l'importe avec le try/except qui va bien pour ne pas introduire de dépendance trop forte ?

#3

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

Une copie de plus (il est déjà aussi dans hobo et passerelle).

#4

Mis à jour par Valentin Deniaud il y a presque 4 ans

0001 qui ajoute le nécessaire pour signer est donc un simple cp depuis combo.

À discuter :
  • Pour l'instant il est nécessaire d'être manager de l'agenda pour pouvoir supprimer des résas, à voir si ça ne correspond pas mieux aux usages d'autoriser aussi le rôle de visualisation
  • Les résas sur les évènements sont présentées sous forme de listes d'objets, gadjo me laisse donc ajouter une croix à côté de manière classique, par contre pour les rdv c'est mort, je me contente d'un bouton « Annuler »
  • Si l'URL pour rappeler wcs n'a pas été passée à la réservation, j'affiche un warning sur la page de confirmation de l'annulation. Problème gadjo là encore, le div warningnotice ne s'affiche pas dans la popup (ok en pleine page), il faut trouver quelque chose d'autre ou patcher gadjo.
#5

Mis à jour par Thomas Noël il y a presque 4 ans

Sur 0001 : copie aussi les tests... question de couverture, et puis parce que les tests c'est bien. Et modifie aussi les copyrights (combo->chrono, 2018->2020)

#6

Mis à jour par Thomas Noël il y a presque 4 ans

Sur 0002 : je dirais qu'il faut d'abord tenter le POST sur l'URL et si ça ne répond pas OK afficher un message qui indique le pépin et demande une sur-validation pour vraiment supprimer.

#7

Mis à jour par Valentin Deniaud il y a presque 4 ans

Thomas Noël a écrit :

Sur 0002 : je dirais qu'il faut d'abord tenter le POST sur l'URL et si ça ne répond pas OK afficher un message qui indique le pépin et demande une sur-validation pour vraiment supprimer.

OK pour rattraper le raise_for_status dans la vue et afficher autre chose qu'une 500, par contre je n'arrive pas à imaginer un parcours intelligible de sur-validation. Tu cliques, on te dit que ça marche pas, et que tu peux recliquer. Mais est-ce que le reclic tente quand même à nouveau l'appel ws ? Donc à la fin peut-être que ça a marché, peut-être pas ? Ou est-ce qu'il ne retente pas, à ce moment là il faut dire à l'agent « si tu veux retenter, ne reclique pas, rafraichit la page »...

(et puis ça fait sortir le code des sentiers battus, il faut mettre un flag en session ou fortement triturer le formulaire, bref je serais pour ne pas permettre l'annulation si l'appel foire, de toute façon il faudra faire une action globale qui rattrape le coup pour mettre dans le statut annulé côté demande, l'appel à l'API cancel de chrono pourra se faire là)

#8

Mis à jour par Thomas Noël il y a presque 4 ans

Valentin Deniaud a écrit :

OK pour rattraper le raise_for_status dans la vue et afficher autre chose qu'une 500, par contre je n'arrive pas à imaginer un parcours intelligible de sur-validation. (...)

Dans mes faibles connaissance Django ça se gère via le form_valid qui va tenter le POST et déclarer un form_invalid si ça ne marche pas, et dans ce cas on réaffiche le form avec une case à cocher "supprimer de toute façon" ...?

(et puis ça fait sortir le code des sentiers battus, il faut mettre un flag en session ou fortement triturer le formulaire, bref je serais pour ne pas permettre l'annulation si l'appel foire, de toute façon il faudra faire une action globale qui rattrape le coup pour mettre dans le statut annulé côté demande, l'appel à l'API cancel de chrono pourra se faire là)

Le problème classique sera que la démarche correspondante n'existe plus, donc, non, faut pouvoir "forcer".

#10

Mis à jour par Valentin Deniaud il y a presque 4 ans

Valentin Deniaud a écrit :

  • Si l'URL pour rappeler wcs n'a pas été passée à la réservation, j'affiche un warning sur la page de confirmation de l'annulation. Problème gadjo là encore, le div warningnotice ne s'affiche pas dans la popup (ok en pleine page), il faut trouver quelque chose d'autre ou patcher gadjo.

Trouvé la parade, il faut mettre le div à l'intérieur de la balise form.

#11

Mis à jour par Frédéric Péters il y a plus de 3 ans

Pour l'instant il est nécessaire d'être manager de l'agenda pour pouvoir supprimer des résas, à voir si ça ne correspond pas mieux aux usages d'autoriser aussi le rôle de visualisation

Je viens de me poser la question et je pense que ce serait plus adapté de permettre ça aux agents qui peuvent consulter l'agenda (le "manage" étant plutôt de l'ordre de la gestion du paramétrage de l'agenda).

Si l'URL pour rappeler wcs n'a pas été passée à la réservation, j'affiche un warning sur la page de confirmation de l'annulation.

Sur ce point j'hésite pas mal mais je serais presque à ne pas permettre l'annulation depuis chrono s'il y a backoffice_url mais pas cancel_callback_url, sous-entendu ça se gère depuis la démarche, dans la popup afficher que ça se gère depuis la demande avec en lien backoffice_url.

#13

Mis à jour par Frédéric Péters il y a plus de 3 ans

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

Ok pour moi.

#14

Mis à jour par Valentin Deniaud il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 1864d7466d342d11ad8a3c7a6281112b17513a20
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Jul 8 16:10:53 2020 +0200

    manager: add booking cancellation (#44159)

commit 10caec88f6f57912e85b5562df7d823ea721e533
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Jul 8 16:07:55 2020 +0200

    utils: add signature tools (#44159)
#15

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF