Development #33489
API : lors de la création d'une réservation, permettre d'en annuler une autre
0%
Description
D'un mail : "ce que j'imaginais,
côté API, c'est que l'appel à 'fillslot' puisse prendre en paramètre
un identifiant de réservation existant, et que dans ce cas, le créneau
qui était attaché à la réservation se libère en même temps que le
nouveau est réservé."
Fichiers
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Partis pris peut-être peu éclairé d'ignorer le problème si la réservation qu'on cherche à annuler n'existe pas ou est déjà annulée.
Mis à jour par Frédéric Péters il y a presque 5 ans
Partis pris peut-être peu éclairé d'ignorer le problème si la réservation qu'on cherche à annuler n'existe pas ou est déjà annulée.
Retourner une erreur dans ces situations.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Echéance changé de 12 juin 2019 à 05 juin 2019
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch ajouté
Voilà.
Mis à jour par Frédéric Péters il y a presque 5 ans
Je me dis que ça pourrait être monté plus haut, histoire de ne pas avoir à calculer les créneaux dispos si la réservation ne peut de toute façon pas se faire.
Aussi, vérifier count, et là, au choix, soit obliger que ça soit nécessairement 1, soit prêter attention au primary_booking, et assurer que le count corresponde à celui qui avait servi à la réservation.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
Flash : manque aussi d'encapsuler tout ça dans une transaction.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch ajouté
Avec le patch.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
Je me dis soudainement qu'on a besoin d'être plus subtil sur le calcul du nombre de places restantes : un événement pourrait être vu comme plein et la réservation refusée parce qu'on ne prends pas en compte les places libérées par l'annulation dans ce calcul.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
Emmanuel Cazenave a écrit :
Je me dis soudainement qu'on a besoin d'être plus subtil sur le calcul du nombre de places restantes : un événement pourrait être vu comme plein et la réservation refusée parce qu'on ne prends pas en compte les places libérées par l'annulation dans ce calcul.
Ça n'a aucun sens.
Mis à jour par Thomas Noël il y a presque 5 ans
Dans la réponse, s'il y a eu un cancel, je serais pour le dire, genre « response['cancelled'] = payload.get('cancel_booking_id') » dans l'idée que wcs stockera ça dans son retour, et on ainsi savoir que la réservation en a aussi annulé une autre (et le dire à l'usager, avec juste un "if response_data_cancelled" dans le mail, ce genre de truc). Je suis d'accord qu'on le sait déjà car on a fait l'appel webservice pour, mais il peut avoir un workflow avec différentes branches, etc...
Aussi, en fait, au lieu de juste faire « if 'cancel_booking_id' in payload » on devrait plutôt faire un « if payload.get('cancel_booking_id'): » dans l'idée qu'un appel webservice avec un cancel_booking_id vide, c'est acceptable, ça veut juste dire "y'a rien à annuler". Ca simplifiera l'appel via les workflows -- bon, j'imagine que le « cancel_booking_id = serializers.IntegerField() » va nous faire chier.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Statut changé de Solution proposée à Information nécessaire
- Assigné à changé de Emmanuel Cazenave à Pierre Cros
Thomas Noël a écrit :
Dans la réponse, s'il y a eu un cancel, je serais pour le dire, genre « response['cancelled'] = payload.get('cancel_booking_id') » dans l'idée que wcs stockera ..
Pris en compte, j'ai mis cancelled_booking_id
.
Aussi, en fait, au lieu de juste faire « if 'cancel_booking_id' in payload » on devrait plutôt faire un « if payload.get('cancel_booking_id'): » ...
Ça ouvre quand même en grand la porte à des annulations qui ne se font pas parce que paramétrage de l'action d'appel webservice foirée et pas de remontée d'erreur.
Input needed : Pierre, est-ce que dans l'utilisation que tu imagines tu as besoin que la même action d'appel webservice fasse tantôt une annulation tantôt n'en fasse pas ? (ça nous rassurerait que dans un appel donné, si le paramètre cancel_booking_id est passé, on n'autorise pas que la valeur en fasse soit vide)
Mis à jour par Thomas Noël il y a presque 5 ans
Emmanuel Cazenave a écrit :
Aussi, en fait, au lieu de juste faire « if 'cancel_booking_id' in payload » on devrait plutôt faire un « if payload.get('cancel_booking_id'): » ...
Ça ouvre quand même en grand la porte à des annulations qui ne se font pas parce que paramétrage de l'action d'appel webservice foirée et pas de remontée d'erreur.
Effectivement, laissons tomber pour l'instant. On verra si c'est vraiment utile pour remplacer par quelque chose comme -1 ou 0... (oui, je sais, c'est moche)
Tu rajoutes un test qui faile avec params={'cancel_booking_id': ''} ? (pour le jour où ça changera) (oui, j'aime être pénible)
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch 0001-api-cancel-a-booking-when-making-a-new-one-33489.patch ajouté
- Statut changé de Information nécessaire à Solution proposée
Thomas Noël a écrit :
Tu rajoutes un test qui faile avec params={'cancel_booking_id': ''} ? (pour le jour où ça changera) (oui, j'aime être pénible)
Voilà (tout à la fin du test).
Mis à jour par Thomas Noël il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
- Assigné à changé de Pierre Cros à Emmanuel Cazenave
Mis à jour par Pierre Cros il y a presque 5 ans
Si je comprends correctement, tu peux committer Manu ? Je testerai après déploiement sur la recette.
Mis à jour par Pierre Cros il y a presque 5 ans
Un peu tardivement je vois la question sur les événements mais je comprends pas l'utilité de déplacer dans un événement, pour moi c'est un truc limité au RdV.
Mais c'est peut-être qu'on peut déplacer d'un événement à un autre ce que je n'avais pas compris.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Pierre Cros a écrit :
Mais c'est peut-être qu'on peut déplacer d'un événement à un autre ce que je n'avais pas compris.
Oui pas de restrictions sur rdv/évennement.
Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Tue May 28 16:32:30 2019 +0200 api: cancel a booking when making a new one (#33489)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: cancel a booking when making a new one (#33489)