Configuration des réservations externes: Difference between revisions

From Documentation de la solution web de gestion OpenFlyers
Jump to navigation Jump to search
imported>Claratte
imported>Lelhidam
Line 40: Line 40:


L'interface des réservations externes ('''Planning > Planning > Réservations externes'''). Devrait désormais afficher un calendrier (vide)
L'interface des réservations externes ('''Planning > Planning > Réservations externes'''). Devrait désormais afficher un calendrier (vide)
==Affecter la référence du bon d'achat à la réservation externe==
Il est possible d'affecter le code de la référence du bon d'achat à la réservation externe en fonction de paramètre attribué dans un champ métier réservation.
Voici un exemple de paramétrage permettant d'ajouter le champ métier dédié au stockage de la référence du bon d'achat :
*Aller dans '''Admin > Structure > Variables > Champs métiers'''
Sur la dernier ligne :
*Colonne '''Nom de variable''', renseigner "reference"
*Colonne '''Intitulé''', renseigner "Référence d'achat"
*Colonne '''Catégorie''', sélectionner ''Réservation''
*Colonne '''Type de valeur''', sélectionner ''Chaîne textuelle''
*Cliquer sur le bouton '''Ajouter'''
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Champ '''Enregistrer la référence transmise en paramètre GET en tant que''' : sélectionner le champ préalablement créé '''Référence d'achat (reference)'''
*Cliquer sur le bouton '''Enregistrer'''
Cela permet de capturer le code associé au paramètre GET '''reference''' passé dans l'URL permettant d'afficher l'interface de réservations externes et de le stocker dans le champ métier '''Référence d'achat''' lors de l'enregistrement de la réservation.
Exemple :
<pre>https://localhost/4.0/externalBooking.php?reference=AZERTY</pre>
Permet d'attribuer le code de référence d'achat ''AZERTY'' à la réservation en cours.
==Ajouter des ressources==
*Aller dans '''Gestion > Ressources > Actives'''.
*Choisir la ressource à ajouter et cliquer sur l'icône '''modifier'''.
*Cocher '''Peut être utilisé pour les réservations externes''' dans la colonne '''Champs métier'''.
*Valider en appuyant sur le bouton '''Enregistrer'''.
==Ajouter des utilisateurs==
*Aller dans '''Gestion > Utilisateurs > Utilisateurs > Actifs'''
*Choisir un utilisateur à ajouter et cliquer sur l'icône '''modifier'''
*Dans la liste '''profil''' sélectionner le profil indiquant que l'utilisateur peut être sur des réservations externes
*Valider en appuyant sur le bouton '''Enregistrer'''
*Aller dans '''Planning > Données > (In)disponibilités''' et indiquer les disponibilités de l'utilisateur
== Ajouter un champ métier pour les réservations externes ==
*Aller vers la page '''Structure › Variables › Champs métiers'''.
*Déterminer les détails du nouveau champ métier à ajouter :
** '''Nom du champ''' : Choisir un identifiant unique pour le champ. Il est recommandé d'ajouter le préfixe 'external' au début du nom pour marquer son origine en tant que champ métier externe.
** '''Intitulé''' : Décider du nom qui apparaîtra dans l'interface utilisateur.
** '''Catégorie''' : Sélectionner le champ 'réservation externe' comme catégorie.
** '''Type de valeur''' : Définir le type de données que ce champ contiendra (par exemple, texte, nombre, date).
** '''Formule''' : Si le champ nécessite une valeur calculée, entrer la formule appropriée.
** '''Remplissage obligatoire''' : Cocher cette case si le champ doit être complété par l'utilisateur.
** '''Catégorie liée''' : Lier le champ métier à la catégorie correspondante (Utilisateur / Réservation).
** '''Champ à lier''' : Lier le champ au champ métier (si le champ métier n'existe pas, il faut le créer. Cette partie du paramétrage est facultative et s'applique lorsqu'on souhaite récupérer une valeur demandée à l'utilisateur effectuant une réservation externe) ou au champ original de la catégorie liée, dans lequel la valeur entrée par le client externe sera enregistrée.
** '''Valeur par défaut''' : Définir une valeur par défaut si applicable.
'''NB''': Il est obligatoire d'ajouter les champs métiers suivants de '''Catégorie''' réservation externe afin d'éviter tout problème imprévu :
{| class="wikitable"
|-
! Nom de variable
! Intitulé
! Catégorie
! Type de valeur
! Remplissage obligatoire
! Catégorie liée
! Champ à lier
|-
| externalLastName
| Nom
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| last_name
|-
| externalFirstName
| Prénom
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| first_name
|-
| externalCellPhone
| Téléphone portable
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| cell_phone
|-
| externalEmail
| E-mail
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| email
|}
==Ajouter une règle pour les réservations externes==
Aller dans '''Admin > Structure > Paramétrage > Réservations internes'''.
Dans '''Régles de saisie XML''' ajouter une règle de la forme suivante :
<xml><rule>
    <activityTypeList>
        <activityType><!-- ID de l'activité "baptême de l'air" --></activityType>
    </activityTypeList>
    <resourceTypeList minQty="1" maxQty="1">
        <resourceType>*</resourceType>
    </resourceTypeList>
    <placeList>
        <place index="0" minQty="1" maxQty="1" status="4">
            <profile><!-- ID du profil des clients externes --></profile>
        </place>
        <place index="1" minQty="1" maxQty="1" status="4">
            <profile><!-- ID du profil des pilotes pouvant faire des baptême de l'air --></profile>
        </place>
    </placeList>
</rule></xml>
==Coloriser les créneaux disponibles en fonction de la 1ère ressource disponible==
Le paramètrage suivant permet de définir la couleur de fond en fonction de la couleur de la première ressource disponible dans le tableau des créneaux disponibles des réservations externes:
*[[Gestion-des-ressources#Changer-la-couleur-de-la-ligne-du-planing-de-la-ressource|Changer la couleur de la ligne du planing de la ressource]]
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Champ '''Utiliser la couleur de la 1ère ressource disponible pour chaque créneau''' : activer l'interrupteur
==Créer un profil pour les clients externes==
Aller dans '''Admin > Utilisateurs > Profils''', puis :
*Créer un profil pour les clients externes. Le profil ne doit avoir aucun droit. Il doit être configuré pour être affecté automatiquement aux clients externes (cf. [[#Activer-et-paramétrer-le-module-des-réservations-externes|Activer et paramétrer le module des réservations externes]]).
==Créer un profil pour les utilisateurs effectuant les activités liées aux réservations externes==
Aller dans '''Admin > Utilisateurs > Profils''', puis :
*Créer un profil pour les utilisateurs effectuant les activités liées aux réservations externes
Ce profil doit avoir les droits suivants afin qu'il soit possible de gérer les disponibilités des personnes concernées :
*'''Réservations > Planning personnel'''
*'''Réservations > Planning individuel visible pour les autres'''
Aller dans '''Admin > Utilisateurs > Profils plus''', colonne '''Profils visibles''', cocher le profil précédemment créé pour les profils qui doivent pouvoir voir les lignes de réservations de ces utilisateurs ou modifier les disponibilités de ces utilisateurs.
==Créer un type d'activité==
Si ce n'est pas déjà fait, créer un type d'activité pour les réservations externes en allant dans '''Admin > Types d'activités > Actifs'''. Le nom du type d'activité apparaitra sur le bon de commande. Afin qu'il s'intègre correctement dans le reste de l'interface (sans créer de faute d'orthographe), le nom du type d'activité doit être un groupe nominal masculin.
Exemples :
* Baptême de l'air
* Vol découverte
Déconseillé :
* Balade découverte
==Créer un type de validité pour les bons d'achats (facultatif)==
Il est possible de donner la possibilité aux clients de fournir un bon de réduction. Ce bon de réduction sera ensuite stocké dans une validité. Pour ce faire :
*Aller dans '''Admin > Utilisateurs > Types de validités'''.
*Cliquer sur le bouton '''Ajouter un type de validité'''.
*Lui donner un nom comme "Bon d'achat" et cocher '''Associer un document'''.
*Valider en cliquant sur '''Enregistrer'''.
*Aller dans '''Admin > Utilisateurs > Profils plus'''.
*Vérifier que les profils pouvant gérer cette validité ont bien la validité en question dans la liste '''Types de validités que l'utilisateur peut gérer et certifier'''.
==Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles==
Il est possible de restreindre les utilisateurs et/ou les ressources en fonction de paramètres attribués dans un champ métier utilisateur/ressource
Voici un exemple de paramétrage permettant de prendre en compte les utilisateurs en fonction de leur base géographique d'affectation :
*Aller dans '''Admin > Structure > Variables > Champs métiers'''
Sur la dernier ligne :
*Colonne '''Nom de variable''', renseigner "locationPerson"
*Colonne '''Intitulé''', renseigner "Base géographique"
*Colonne '''Catégorie''', sélectionner ''Utilisateur''
*Colonne '''Type de valeur''', sélectionner ''dbObject:Location''
*Cliquer sur le bouton '''Ajouter'''
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Champ '''Filtrer les utilisateurs avec le champ métier''' : sélectionner le champ préalablement créé '''Base géographique (locationPerson)'''
*Cliquer sur le bouton '''Enregistrer'''
Cela permet de ne prendre en compte que les utilisateurs pour lesquels le champ métier ''Base géographique'' correspond au paramètre GET locationPerson passé dans l'URL permettant d'afficher l'interface de réservations externes.
Exemple :
<pre>https://localhost/4.0/externalBooking.php?locationPerson=LFBD</pre>
Permet de ne prendre en compte que les utilisateurs disponibles ayant dans le champ '''Base géographique''' la valeur ''LFBD (BORDEAUX MERIGNAC)''.
==Gérer les places==
Aller dans '''Admin > Utilisateurs > Profils plus''', dans la colonne '''Attribution de place''' :
* S'assurer que le profil des clients externes puisse s'attribuer une place de pilote ('''place de gauche''') sur les types de ressources concernés par les baptêmes de l'air.
* S'assurer que le profil des pilotes pouvant effectuer un baptême puisse s'attribuer une place d'instructeur ('''place de droite''') sur les types de ressources concernés par les baptêmes de l'air.
==Interfacer les réservations externes avec un service web de gestion des codes de référence de vente==
OpenFlyers implémente un interfaçage vers une API REST tierce de gestion des codes qui permet de vérifier si le code de référence renseigné par l'utilisateur ou transmis via l'URL est valide ou non.
Les échanges se font au format JSON.
OpenFlyers renvoie à l'API la date de la réservation, le type de ressource et les coordonnées de la personne en charge de l'activité lors de la prise de réservation externe ou lors de son annulation.
Pour interfacer OpenFlyers avec l'API, il faut :
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Champ '''Synchronisation avec une API REST tierce''' : activer le '''toggle switch'''.
Renseigner les champs suivants avec les paramètres souhaités :
*'''URL de l'API REST tierce''' : Assigner le lien de base de l'API
*'''Jeton d'authentification''' : Assigner le Jeton d'authentification de l'API
Une fois que la configuration est faite par OpenFlyers, les opérations suivantes s'effectuent systématiquement :
*Vérification de la validité du code de référence via le lien '''externalBookingWebServiceURL/{code}''' avec la méthode '''GET''', auquel l'API doit répondre en transmettant un JSON sous le format suivant :
<javascript>{
  "validity": true,
  "code": "Code_De_Référence",
  "buyer_name": "Nom_Agence_web",
  "validity_date": "YYYY-MM-DD",
  "video": "true",
  "cancellable": "true",
  "activity_type": 4,
  "booking_duration": "45"
}</javascript>
NB:Le code est valide si la valeur de '''validity''' est '''true'''.
*Si la variable '''booking_duration''' est définie et contient une valeur multiple de '''15''', elle sera utilisée à la place du paramètre '''Durée d'une réservation externe'''.
*Si la variable '''activity_type''' est définie et correspond à l'id d'un type d'activité actif, la valeur sera utilisée à la place du paramètre ''' Type d'activité à affecter aux réservations'''.
*Notification à l'API tierce d'une nouvelle réservation via le lien '''externalBookingWebServiceURL/{code}/activate'''  avec la méthode '''PUT''', en passant les données de requête suivantes :
<javascript>{
    "date" : "2022-04-05T06:00:00Z", //date de la réservation en format ISO UTC
    "resource_type" : "le type de la ressource utilisée dans la réservation",
    "structure_person_name" : "le nom du pilote",
    "structure_person_email" : "l'email du pilote",
    "structure_person_phone" : "le numéro de téléphone du pilote"
}</javascript>
- En retour l'API doit répondre en cas de succès :
<javascript>{
  "status": true
}</javascript>
- En retour l'API doit répondre en cas d'échec :
<javascript>{
  "status": false,
  "error_msg": "le message d'erreur"
}</javascript>
*Notification à l'API tierce de l'annulation d'une réservation via le lien '''externalBookingWebServiceURL/{code}/release''' avec la méthode '''PUT'''
- En cas de la réussite de la notification, l'API répond :
<javascript>{
  "status": true
}</javascript>
- En cas d'échec l'API répond :
<javascript>{
  "status": false,
  "error_msg": "le message d'erreur"
}</javascript>
'''Exemple de la communication en PHP avec l'API:'''
<php>
// Prepare data to send by request
$requestData = array(
    'date'                  => "2022-04-05T06:00:00Z", //date de la réservation en format ISO UTC
    'resource_type'          => 'resource_type',
    'structure_person_name'  => 'pilot_full_name',
    'structure_person_email' => 'pilot_email',
    'structure_person_phone' => 'pilot_cell_phone',
);
// Initialize a curl session
$curl = curl_init();
// Set options
curl_setopt_array($curl, array(
                CURLOPT_URL            => 'externalBookingWebServiceURL/42E390B0D843561F/activate',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_CUSTOMREQUEST  => 'PUT',
                CURLOPT_HTTPHEADER    => array('Content-Type: application/json', 'Authorization: Bearer uqpsildfqtw5o2qq9o45guz3ydfceehb'),
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_POSTFIELDS    => json_encode($requestData),
));
// Execute the curl session
curl_exec($curl);
// Close curl session
curl_close($curl);
</php>


=Paramétrages facultatifs=
=Paramétrages facultatifs=

Revision as of 11:09, 23 August 2024

Présentation

Cette page présente le paramétrage du module de réservations externes.

Voir la page Utilisation des réservations externes pour la présentation et l'utilisation du module.

Configurer

Activer et paramétrer le module des réservations externes

  • Aller dans Admin > Structure > Paramétrage > Réservations externes
  • Activer le toggle-switch Réservations externes.
  • Cliquer sur Enregistrer

Renseigner les champs suivants avec les paramètres souhaités :

Si un type de validité pour les bons d'achat a été créé, le sélectionner dans la liste déroulante Demander une pièce jointe et l'enregistrer dans le type de validité suivant

Si un type de validité pour les bons d'achat a été sélectionné, il est possible de:

- Modifier le label associé au champ d'importation de la pièce jointe qui apparait dans l'interface de la saisie des coordonnées en éditant le champ Nom du champ pour la pièce jointe.

- Préciser si l'import de la pièce jointe est obligatoire ou facultative en sélectionnant l'une des deux options du champ Pièce jointe.

L'interface des réservations externes (Planning > Planning > Réservations externes). Devrait désormais afficher un calendrier (vide)

Paramétrages facultatifs

Templates d'email

Template e-mail d'annulation de réservation

  • Définir la template de l'e-mail dans le champ Template de l'e-mail d'annulation de réservation dans l'interface de paramétrage Réservations externes.

Exemple de template d'e-mail par défaut:

Madame, Monsieur %CLIENT_FULL_NAME,

Nous sommes au regret de vous informer de l'annulation de votre réservation sur l'appareil %RESOURCE_NAME le %DATE, de %START_TIME à %END_TIME
avec comme pilote %PILOT_FULL_NAME.

Cette opération a été effectuée par %AUTHENTICATION_LOGIN

Vous pouvez nous contacter par téléphone pour trouver un nouveau créneau disponible.

Annuler la réservation : %%BOOKING_CANCEL_URL

En vous remerciant par avance pour votre compréhension,

Cordialement,
  • Personnaliser l'objet de l'e-mail dans le champ Personnaliser l'objet de l'e-mail d'annulation de réservation dans l'interface de paramétrage Réservations externes.

Exemple de l'objet d'e-mail par défaut:

Annulation de votre réservation %STRUCTURE_NAME
  • L'e-mail est envoyé immédiatement après l'annulation de la réservation.

Template e-mail de confirmation de réservation

  • Définir la template de l'e-mail dans le champ Template de l'e-mail de confirmation de réservation dans l'interface de paramétrage Réservations externes.

Exemple de template d'e-mail par défaut:

Votre %ACTIVITY_TYPE_NAME a été réservé avec succès.


Numéro du bon de réservation: %BOOKING_ID
Réservé au nom de: %CLIENT_FULL_NAME
Date: %DATE, de %START_TIME à %END_TIME
Votre pilote: %PILOT_FULL_NAME
Son adresse e-mail: %PILOT_EMAIL
Son numéro de téléphone portable: %PILOT_CELL_PHONE
Votre appareil: %RESOURCE_NAME
Vous recevrez un email de confirmation ou d'annulation de la demande au plus tard %CANCEL_BOOKING_MIN_TIME avant le vol projeté.

Annuler la réservation:

Afin d'annuler votre réservation, veuillez cliquer sur le lien ci-dessous.
<a href="%BOOKING_CANCEL_URL" >Cliquez ici pour annuler.</a>

À bientôt!
  • L'e-mail est envoyé immédiatement après l'enregistrement de la réservation

Variables

Nom de la variable Valeur de la variable
%ACTIVITY_TYPE_NAME Le nom du type d'activité affecté aux réservations.
%AUTHENTICATION_LOGIN Le nom + prénom d'utilisateur connecté
%BOOKING_CANCEL_URL Lien pour annuler la réservation
%BOOKING_ID Le numéro de commande. / L'identifiant de la réservation.
%CLIENT_FULL_NAME Le nom + prénom du client.
%CANCEL_BOOKING_MIN_TIME Le délai minimum avant la réservation pour l'annuler.
%DATE La date de la réservation.
%END_TIME L'heure de fin de la réservation.
%EXTRAFIELDxx Permet de récupérer le contenu d'un champ métier. xx = numéro d'identifiant du champ métier. Exemple : %EXTRAFIELD35
%PILOT_EMAIL L'adresse email du pilote.
%PILOT_HOME_PHONE Le numéro de téléphone personnel du pilote.
%PILOT_WORK_PHONE Le numéro de téléphone professionnel du pilote.
%PILOT_CELL_PHONE Le numéro de téléphone portable du pilote.
%PILOT_FULL_NAME Le nom + prénom du pilote.
%RESOURCE_NAME Le nom de la ressource réservée.
%START_TIME L'heure de début de la réservation.
%STRUCTURE_NAME Le nom de la structure