Configuration des réservations externes: Difference between revisions

From Documentation de la solution web de gestion OpenFlyers
Jump to navigation Jump to search
imported>Lelhidam
 
(122 intermediate revisions by 6 users not shown)
Line 1: Line 1:
=Présentation=
=Présentation=
Cette page présente le paramétrage du module de réservations extérieures.
Cette page présente le paramétrage du module de réservations externes.


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


=Mise en place=
=Configurer la mise en place des réservations externes=
La procédure de configuration des réservations externes est découpée en 3 chapitres ci-dessous qu'il faut suivre dans l'ordre.


==Créer un profil pour les utilisateurs effectuant les activités liées aux réservations extérieures==
==Créer les champs métiers, les profils, le type d'activité et le type de validité==
Aller dans '''Admin > Utilisateurs > Profils''', puis :
;Ajouter les champs métiers pour les réservations externes
*Créer un profil pour les utilisateurs effectuant les activités liées aux réservations extérieures
*Aller dans '''Admin > Structure › Variables › Champs métiers'''
Ce profil doit avoir les droits suivants afin qu'il soit possible de gérer les disponibilités des personnes concernées :
*Pour chaque ligne du tableau ci-dessous :
*'''Réservations > Planning personnel'''
**Tout en bas du tableau, sur la dernière ligne renseigner les champs avec les valeurs indiquées dans la ligne correspondante
*'''Réservations > Planning individuel visible pour les autres'''
**Cliquer sur le bouton '''Ajouter'''
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 profil pour les clients extérieurs==
{| class="wikitable"
Aller dans '''Admin > Utilisateurs > Profils''', puis :
|-
*Créer un profil pour les clients extérieurs. Le profil ne doit avoir aucun droit. Il doit être configuré pour être affecté automatiquement aux clients extérieurs (cf. [[#Activer-et-paramétrer-le-module-des-réservations-extérieures|Activer et paramétrer le module des réservations extérieures]]).
! 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
|}


==Gérer les places==
Il est possible d'[[#Ajouter-les-champs-métiers-optionnels|ajouter d'autres champs métiers]] selon les besoins, afin d'enrichir le formulaire de réservation externe et de collecter ainsi davantage d'informations auprès des utilisateurs effectuant les réservations.
 
 
;Créer un profil pour les utilisateurs effectuant les activités liées aux réservations externes
*Aller dans '''Admin > Utilisateurs > Profils'''
*Cliquer sur le bouton '''Ajouter un profil'''
*Renseigner le champ '''Nom du profil''' avec le nom souhaité (exemple : "Pilote baptême")
*Cliquer sur le bouton '''Enregistrer'''
*Cliquer sur l'onglet '''Réservations'''
*Cliquer sur la case à cocher '''Planning personnel''' pour ce profil
*Cliquer sur la case à cocher '''Planning individuel visible pour les autres''' pour ce profil
*Aller dans '''Admin > Utilisateurs > Profils plus'''
Pour les profils qui doivent pouvoir voir les lignes de réservations de ces utilisateurs ou modifier les disponibilités de ces utilisateurs :
*colonne '''Profils visibles''', cocher le profil précédemment créé


Aller dans '''Admin > Utilisateurs > Profils plus''', dans la colonne '''Attribution de place''' :


* S'assurer que le profil des clients extérieurs puisse s'attribuer une place de pilote ('''place de gauche''') sur les types de ressources concernés par les baptêmes de l'air.
;Créer un profil pour les clients externes
* 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.
*Aller dans '''Admin > Utilisateurs > Profils'''
*Cliquer sur le bouton '''Ajouter un profil'''
*Renseigner le champ '''Nom du profil''' avec le nom souhaité (exemple : "Client baptême")
*Cliquer sur le bouton '''Enregistrer'''
''Note : Le profil ne doit avoir aucun droit''


==Créer un type d'activité==


Si ce n'est pas déjà fait, créer un type d'activité pour les réservations extérieures 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.
;Créer un type d'activité
Si nécessaire, il faut créer un type d'activité dédié aux réservations externes :
*Aller dans '''Admin > Types d'activités > Actifs'''
*Cliquer sur le bouton "+" en haut à droite du tableau '''Liste des types d'activités'''
*Renseigner le champ '''Nom''' avec le nom du type d'activité souhaité (exemple : "Baptême")
*Cliquer sur le bouton '''Enregistrer'''
'''Attention :''' le nom du type d'activité apparait sur l'interface de réservation externe. Afin qu'il s'intègre correctement, sans créer de faute d'orthographe, il doit être un groupe nominal masculin.


Exemples :
Exemples :
* Baptême de l'air
*Baptême de l'air
* Vol découverte
*Vol découverte


Déconseillé :
Déconseillé :
* Balade découverte
* 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'''.


==Ajouter une règle pour les réservations extérieures==
Il est possible de demander aux clients externes de téléverser un document permettant d'attester d'une commande effectuée par un autre biais et donnant le droit d'effectuer une réservation.
 
Ce document est alors stocké dans une validité.
 
Pour paramétrer cela, il faut suivre la procédure [[#Créer-un-type-de-validité-pour-stocker-une-preuve-d'achat|Créer un type de validité pour stocker une preuve d'achat]].
 
==Paramétrer le module de réservations externes==
;Activer et paramétrer le module des réservations externes
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Activer l'interrupteur '''Réservations externes'''
Renseigner les champs suivants avec les paramètres souhaités :
*'''Synchronisation avec une API REST tierce''' (facultatif, voir [[#Interfacer-les-réservations-externes-avec-un-service-web-de-gestion-des-codes-de-référence-de-vente|Interfacer les réservations externes avec un service web de gestion des codes de référence de vente]])
*'''Heure de début (fuseau X)'''
*'''Heure de fin (fuseau X)'''
*'''Durée d'une réservation externes'''
*'''Permettre de choisir la durée d'activité'''
*'''Utiliser la couleur de la 1ère ressource disponible pour chaque créneau''': permet d'activer [[#Coloriser-les-créneaux-disponibles-en-fonction-de-la-1ère-ressource-disponible|Colorisation des créneaux disponibles en fonction de la 1ère ressource disponible]]
*'''Interdire d'effectuer une réservation débutant dans moins de''' (la valeur minimale ne peut être inférieure à la valeur définie dans le [[Configuration-des-réservations-internes#Interdire-d'effectuer-une-réservation-débutant-dans-moins-de|Interdire d'effectuer une réservation débutant dans moins de]] du formulaire de configuration des réservations internes
*'''Interdire d'effectuer une réservation se terminant dans plus de'''
*'''Interdire d'annuler une réservation débutant dans moins de '''
*'''Limitation du nombre de réservations'''
*'''Autoriser uniquement les emails des utilisateurs actifs''': lorsque activé, permet de n'envoyer un email de demande de confirmation qu'aux adresses emails d'un utilisateur actif, c'est à dire pour une adresse email présente en base de données.
*'''Profil utilisateur partie prenante''' : sélectionner le profil créé précédemment ("Pilote baptême" dans l'exemple)
''Note : Si '''Aucun''' est sélectionné, les périodes disponibles pour une réservation externe sont déterminées uniquement en fonction de la disponibilité des ressources''
*'''Filtrer les utilisateurs avec le champ métier''' et '''Filtrer les ressources avec le champ métier''' (voir [[#Filtrer-les-utilisateurs/ressources-prises-en-compte-pour-les-créneaux-horaires-disponibles|Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles]])
*'''Profil à affecter aux clients''' : sélectionner le profil créé par précédemment ("Client baptême" dans l'exemple)
*'''Type d'activité à affecter aux réservations''' : sélectionner le type d'activité à affecter aux réservations externes. Exemple : "Baptême".
*'''Demander une pièce jointe et l'enregistrer dans le type de validité suivant ''' : si un type de validité pour stocker une preuve d'achat a été créé dans le paramétrage préliminaire, sélectionner la validité correspondante. Sinon, laisser vide
**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'''.
*'''Enregistrer la référence transmise en paramètre GET en tant que''' (voir [[#Affecter-la-référence-du-bon-d'achat-à-la-réservation-externes|Affecter la référence du bon d'achat à la réservation externes]])
*'''Template de l'e-mail de confirmation de réservation''' (voir l'exemple [[#Template-e-mail-de-confirmation-de-réservation|Template e-mail de confirmation de réservation]])
*'''Personnaliser l'objet de l'e-mail d'annulation de réservation''' (voir l'exemple [[#Template-e-mail-d'annulation-de-réservation|Template e-mail d'annulation de réservation]])
*Cliquer sur le bouton '''Enregistrer'''
*'''Template de l'e-mail d'annulation de réservation''' (voir l'exemple [[#Template-e-mail-d'annulation-de-réservation|Template e-mail d'annulation de réservation]]
*Cliquer sur le bouton '''Enregistrer'''
 
L'interface des réservations externes ('''Planning > Planning > Réservations externes'''). Devrait désormais afficher un calendrier (vide)
 
==Associer les ressources et les utilisateurs==
;Ajouter des ressources pouvant être utilisées pour les réservations externes
*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 pouvant être affectés à des réservations externes
*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
 
 
;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 (1ère place) 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 (2ème place) sur les types de ressources concernés par les baptêmes de l'air.
 
;Tester
Une fois l'ensemble de ce paramétrage effectué, il faut tester le module de réservation externe pour vérifier qu'il permet :
*de sélectionner un créneau disponible
*d'envoyer un email de demande de confirmation
*de confirmer
*de recevoir un email de confirmation
*d'annuler en cliquant sur le lien présent dans l'email de confirmation
*de valider la demande d'annulation
*de recevoir un nouvel email d'annulation
 
=Configurer la vente des produits externes=
;Présentation
Ce paramétrage permet d'activer la vente de produits externes. A l'heure actuelle, le module permet uniquement de coupler la vente d'un produit avec le module des réservations externes et de valider cette vente par paiement en ligne.
 
;Prérequis
*Avoir [[#Configurer|configuré les réservations externes]] et testé son fonctionnement
 
==Créer les champs métiers requis pour le processus de paiement==
*Aller dans '''Admin > Structure › Variables › Champs métiers'''
*Pour chaque ligne du tableau ci-dessous :
**Tout en bas du tableau, sur la dernière ligne renseigner les champs avec les valeurs indiquées dans la ligne correspondante
**Cliquer sur le bouton '''Ajouter'''
 
Ce tableau présente la liste des champs métiers à créer obligatoirement, en suivant la procédure ci-dessus.
 
{| class="wikitable"
|-
! Nom de variable
! Intitulé
! Catégorie
! Type de valeur
! Remplissage obligatoire
! Catégorie liée
! Champ à lier
|-
| externalAddress
| Adresse
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| address
|-
| externalCity
| Ville
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| city
|-
| externalZipCode
| Code postal
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| zipcode
|-
| externalCountry
| Pays
| Réservation externe
| Chaîne textuelle
| OUI
| Utilisateur
| country
|}
 
==Créer le produit, les comptes et les règles de ventilation comptables==
;Créer un produit externe
*Aller dans '''Admin > Ventes > Produits > Produits'''
En bas du tableau sur la dernière ligne vide :
*Renseigner le champ '''Nom''' avec le nom du produit qui apparaitra sur l'interface utilisateur (exemple : "Baptême de l'air")
*Cocher '''Produit externe'''
*Dans le champ '''Type de vente''', sélectionner ''Produit non stocké''
*Dans le champ '''Montant du tarif''' indiqué le tarif souhaité
*Cliquer sur le bouton '''Ajouter'''
 
 
;Créer un compte client externe devant être débité pour les ventes externes
*Aller dans '''Gestion > Comptes > Comptes > Clients'''
En bas du tableau sur la dernière ligne :
*Renseigner le champ '''Nom''' avec le nom du compte (exemple : "Client Baptême")
*Renseigner le champ '''Compte d'export''' avec le code comptable (exemple : 411000)
*Cocher la case '''Reçoit les paiements des clients extérieurs'''
*Cliquer sur le bouton symbolisant le signe plus
 
 
;Activer les ventes externes et définir le compte créé ci-dessus comme compte d'imputation pour les ventes externes
*Aller dans '''Admin > Structure > Paramétrage > Comptes'''
*Activer l'interrupteur '''Ventes externes'''
*Dans le champ '''Compte imputé pour les ventes externes''', sélectionner le compte défini précédemment
*Dans le champ '''Type d'encaissement par internet''', sélectionner le type de paiement correspondant à un TPE virtuel (exemple : ''Carte bancaire en ligne'')
*Dans le champ '''Comptabilité pour le format monétaire''', sélectionner la comptabilité à utiliser pour définir le format pour la mise en forme monétaire (exemple : ''Principale'')
*Cliquer sur le bouton '''Enregistrer'''
 
 
;Créer un compte produit devant être crédité pour les ventes externes
*Aller dans '''Gestion > Comptes > Comptes > Produits'''
En bas du tableau sur la dernière ligne :
*Renseigner le champ '''Nom''' avec le nom du compte (exemple : "Ventes externes")
*Renseigner le champ '''Compte d'export''' avec le code comptable (exemple : 706000)
*Cliquer sur le bouton symbolisant le signe plus
 


;Configurer les règles de facturations
*Aller dans '''Admin > Ventes > Facturation > Produits'''
*Vérifier que la première règle de facturation est intitulée "Tarification générale des produits" et que la cellule "Produit externe" contient une étoile, si ce n'est pas le cas :
**Cliquer sur le bouton '''Ajouter une ligne de facturation'''
**Renseigner le champ '''Nom''' avec l'intitulé : Tarification generale des produits
**Renseigner le champ '''Quantité / taux''' avec la formule : %PRODUCT_QUANTITY
**Renseigner le champ '''Prix unitaire hors-taxe / TVA''' avec la formule : %UNIT_PRICE_VALUE
**Renseigner le champ '''Formule''' avec la formule : %CURRENT_QUANTITY * %CURRENT_UNIT_PRICE
**Renseigner le champ '''Nom de variable associé à la formule''' avec l'intitulé : tarifGeneral
**Dans le champ '''Type de compte à débiter''', sélectionner ''Compte utilisateur / ventes externes''
**Dans le champ '''Compte utilisateur à débiter''', sélectionner le compte utilisateur par défaut (exemple ''Compte Pilote'')
**Dans le champ '''Type de compte à créditer''', sélectionner ''Compte produit''
**Dans le champ '''Compte produit à créditer''', sélectionner ''Boutique'' ou ''Ventes externes''
**Dans le champ '''Produits internes''', cocher '''Tous'''
**Dans le champ '''Produits externes''', cocher '''Tous'''
**Cliquer sur le bouton '''Enregistrer'''
*Cliquer sur le bouton '''Ajouter une ligne de facturation'''
*Renseigner le champ '''Nom''' avec l'intitulé souhaité (exemple : "Vente externe - baptêmes")
*Renseigner le champ '''Formule''' avec la formule suivante : @tarifGeneral
*Dans le champ '''Type de compte à débiter''', sélectionner ''Compte produit''
*Dans le champ '''Compte produit à débiter''', sélectionner le compte crédité par défaut à la première ligne des règles de facturation (exemple : "Boutique" ou "Ventes diverses")
*Dans le champ '''Type de compte à créditer''', sélectionner ''Compte produit''
*Dans le champ '''Compte produit à créditer''', sélectionner le nom du compte produit créé précédemment
*Dans le champ '''Produits externes''', cocher le ou les produit(s) externe(s) souhaités dans la liste (exemple : ''Tous'')
*Cliquer sur le bouton '''Enregistrer'''


Aller dans '''Admin > Structure > Paramétrage > Planning'''.
=Paramétrages facultatifs=
==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.
 
==[[Champs-métiers#Ajouter-un-champ-métier|Ajouter les champs métiers]] optionnels==
 
Il est possible d’ajouter d’autres champs métiers lors de l’utilisation du module de réservations externes, à condition de respecter les exigences suivantes lors de leur [[Champs-métiers#Ajouter-un-champ-métier|création]] :
 
* '''Nom du champ''' :  Ajouter le préfixe '''external''' au début du nom pour indiquer qu'il s'agit d'un champ métier externe.
* '''Catégorie''' : Sélectionner '''Réservation externe''' comme catégorie.
* '''Remplissage obligatoire''' : Cocher cette case si le champ doit être complété par l’utilisateur.
* '''Catégorie liée''' : Associer le champ métier à la catégorie correspondante ('''Utilisateur''' / '''Réservation''').
* '''Champ à lier''' : Associer le champ au '''champ métier''' (si celui-ci n'existe pas, il faut le créer) ou bien au '''champ original''' de la catégorie liée, ce champ lié indique l’endroit où la valeur saisie par le client externe est enregistrée.
 
==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 :
Dans '''Régles de saisie XML''' ajouter une règle de la forme suivante :


<xml><rule>
<syntaxhighlight lang="xml">
<rule>
     <activityTypeList>
     <activityTypeList>
         <activityType><!-- ID de l'activité "baptême de l'air" --></activityType>
         <activityType><!-- ID de l'activité "baptême de l'air" --></activityType>
Line 61: Line 337:
     <placeList>
     <placeList>
         <place index="0" minQty="1" maxQty="1" status="4">
         <place index="0" minQty="1" maxQty="1" status="4">
             <profile><!-- ID du profil des clients extérieurs --></profile>
             <profile><!-- ID du profil des clients externes --></profile>
         </place>
         </place>
         <place index="1" minQty="1" maxQty="1" status="4">
         <place index="1" minQty="1" maxQty="1" status="4">
Line 67: Line 343:
         </place>
         </place>
     </placeList>
     </placeList>
</rule></xml>
</rule>
</syntaxhighlight>


==Activer et paramétrer le module des réservations extérieures==
==Coloriser les créneaux disponibles en fonction de la 1ère ressource disponible==
*Aller dans '''Admin > Structure > Paramétrage > Réservations extérieures'''
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:
*Activer le toggle-switch '''Réservations extérieures'''.
*[[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]]
*Cliquer sur '''Enregistrer'''
*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


Renseigner les champs suivants avec les paramètres souhaités :
==Créer un type de validité pour stocker une preuve d'achat==
*'''Synchronisation avec une API REST tierce''' (voir [[#Interfacer-les-réservations-extérieures-avec-un-service-web-de-gestion-des-codes-de-référence-de-vente|Interfacer les réservations extérieures avec un service web de gestion des codes de référence de vente]])
;Prérequis
*'''Heure minimale (locale) de début de réservation d'une réservation extérieure'''
*Avoir [[#Configurer-la-mise-en-place-des-réservations-externes|configuré la mise en place des réservations externes]]
*'''Heure maximale (locale) de fin de réservation d'une réservation extérieure'''
*'''Durée d'une réservation extérieure'''
*'''Interdire d'effectuer une réservation débutant dans moins de'''
*'''Interdire d'effectuer une réservation se terminant dans plus de'''
*'''Interdire d'annuler une réservation débutant dans moins de '''
*'''Limitation du nombre de réservations'''
*'''Permettre de choisir la durée d'activité'''
*Champ '''Profil utilisateur partie prenante''' : sélectionner le profil créé par la procédure [[#Créer-un-profil-pour-les-utilisateurs-effectuant-les-activités-liées-aux-réservations-extérieures|Créer un profil pour les utilisateurs effectuant les activités liées aux réservations extérieures]]
**Si '''Aucun''' est sélectionné, les périodes disponibles pour une réservation externe sont déterminées uniquement en fonction de la disponibilité des ressources
*Champs: '''Filtrer les utilisateurs avec le champ métier''' et '''Filtrer les ressources avec le champ métier''' (voir [[#Filtrer-les-utilisateurs/ressources-prises-en-compte-pour-les-créneaux-horaires-disponibles|Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles]])
*Champ '''Profil à affecter aux clients''' : sélectionner le profil créé par la procédure [[#Créer-un-profil-pour-les-clients-extérieurs|Créer un profil pour les clients extérieurs]]
*Champ '''Type d'activité à affecter aux réservations''' : sélectionner le type d'activité à affecter aux réservations extérieures
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:
;Procédure
 
*Aller dans '''Admin > Utilisateurs > Types de validités'''
- 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'''.
*Cliquer sur le bouton '''Ajouter un type de validité'''
 
*Renseigner le champ '''Nom''' avec l'intitulé souhaité (exemple : "Bon d'achat")
- 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'''.
*Cocher '''Associer un document'''
*'''Enregistrer la référence transmise en paramètre GET en tant que''' (voir [[#Affecter-la-référence-du-bon-d'achat-à-la-réservation-extérieure|Affecter la référence du bon d'achat à la réservation extérieure]])
*Dans les champs '''Profils autorisés à gérer pour eux-mêmes''' et '''Profils autorisés à gérer/certifier pour les autres''' cocher les profils de gestion devant pouvoir accéder à cette validité
*'''Template de l'e-mail de confirmation de réservation''' (voir l'exemple [[#Template-e-mail-de-confirmation-de-réservation|Template e-mail de confirmation de réservation]])
*Cliquer sur le bouton '''Enregistrer'''
*'''Personnaliser l'objet de l'e-mail d'annulation de réservation''' (voir l'exemple [[#Template-e-mail-d'annulation-de-réservation|Template e-mail d'annulation de réservation]])
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Renseigner le champ '''Demander une pièce jointe et l'enregistrer dans le type de validité suivant''' avec le type de validité créé ci-dessus
*Cliquer sur le bouton '''Enregistrer'''
*Cliquer sur le bouton '''Enregistrer'''
L'interface des réservations extérieures ('''Planning > Planning > Réservations extérieures'''). Devrait désormais afficher un calendrier (vide)


==Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles==
==Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles==
Line 115: Line 379:
*Cliquer sur le bouton '''Ajouter'''
*Cliquer sur le bouton '''Ajouter'''


 
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Aller dans '''Admin > Structure > Paramétrage > Réservations extérieures'''
*Champ '''Filtrer les utilisateurs avec le champ métier''' : sélectionner le champ préalablement créé '''Base géographique (locationPerson)'''
*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'''
*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 extérieures.
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 :
Exemple :
Line 126: Line 389:
Permet de ne prendre en compte que les utilisateurs disponibles ayant dans le champ '''Base géographique''' la valeur ''LFBD (BORDEAUX MERIGNAC)''.
Permet de ne prendre en compte que les utilisateurs disponibles ayant dans le champ '''Base géographique''' la valeur ''LFBD (BORDEAUX MERIGNAC)''.


==Affecter la référence du bon d'achat à la réservation extérieure==
==Interfacer les réservations externes avec un service web de gestion des codes de référence de vente==
Il est possible d'affecter le code de la référence du bon d'achat à la réservation extérieure 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 extérieures'''
*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 extérieures 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.
 
==Interfacer les réservations extérieures 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.
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.
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 extérieure ou lors de son annulation.
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 :
Pour interfacer OpenFlyers avec l'API, il faut :
*Aller dans '''Admin > Structure > Paramétrage > Réservations extérieures'''
*Aller dans '''Admin > Structure > Paramétrage > Réservations externes'''
*Champ '''Synchronisation avec une API REST tierce''' : activer le '''toggle switch'''.
*Champ '''Synchronisation avec une API REST tierce''' : activer le '''toggle switch'''.


Line 166: Line 406:
Une fois que la configuration est faite par OpenFlyers, les opérations suivantes s'effectuent systématiquement :
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 :
*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>{
<syntaxhighlight lang="javascript">
{
   "validity": true,
   "validity": true,
   "code": "Code_De_Référence",
   "code": "Code_De_Référence",
Line 175: Line 416:
   "activity_type": 4,
   "activity_type": 4,
   "booking_duration": "45"
   "booking_duration": "45"
}</javascript>
}
</syntaxhighlight>


NB:Le code est valide si la valeur de '''validity''' est '''true'''.
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 extérieure'''.
*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'''.
*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 :
*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>{
<syntaxhighlight lang="javascript">
{
     "date" : "2022-04-05T06:00:00Z", //date de la réservation en format ISO UTC  
     "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",
     "resource_type" : "le type de la ressource utilisée dans la réservation",
Line 189: Line 432:
     "structure_person_email" : "l'email du pilote",
     "structure_person_email" : "l'email du pilote",
     "structure_person_phone" : "le numéro de téléphone du pilote"
     "structure_person_phone" : "le numéro de téléphone du pilote"
}</javascript>
}
</syntaxhighlight>
- En retour l'API doit répondre en cas de succès :
- En retour l'API doit répondre en cas de succès :
<javascript>{
<syntaxhighlight lang="javascript">
{
   "status": true
   "status": true
}</javascript>
}
</syntaxhighlight>
 
- En retour l'API doit répondre en cas d'échec :
- En retour l'API doit répondre en cas d'échec :
<javascript>{
<syntaxhighlight lang="javascript">
{
   "status": false,
   "status": false,
   "error_msg": "le message d'erreur"
   "error_msg": "le message d'erreur"
}</javascript>
}
</syntaxhighlight>
 


*Notification à l'API tierce de l'annulation d'une réservation via le lien '''externalBookingWebServiceURL/{code}/release''' avec la méthode '''PUT'''
*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 :
- En cas de la réussite de la notification, l'API répond :
<javascript>{
<syntaxhighlight lang="javascript">
{
   "status": true
   "status": true
}</javascript>
}
</syntaxhighlight>


- En cas d'échec l'API répond :
- En cas d'échec l'API répond :
<javascript>{
<syntaxhighlight lang="javascript">
{
   "status": false,
   "status": false,
   "error_msg": "le message d'erreur"
   "error_msg": "le message d'erreur"
}</javascript>
}
</syntaxhighlight>




'''Exemple de la communication en PHP avec l'API:'''
'''Exemple de la communication en PHP avec l'API:'''
<php>
<syntaxhighlight lang="php">
// Prepare data to send by request
// Prepare data to send by request
$requestData = array(
$requestData = array(
Line 240: Line 494:
// Close curl session
// Close curl session
curl_close($curl);
curl_close($curl);
</php>
</syntaxhighlight>
 
==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 extérieures
*Valider en appuyant sur le bouton '''Enregistrer'''
*Aller dans '''Planning > Données > (In)disponibilités''' et indiquer les disponibilités de l'utilisateur
 
==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 extérieures''' dans la colonne '''Champs métier'''.
*Valider en appuyant sur le bouton '''Enregistrer'''.
== 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 suffixe 'Ere' à la fin 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 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
|-
| lastNameExt
| Nom
| Réservation extérieure
| Chaîne textuelle
| OUI
| Utilisateur
| last_name
|-
| firstNameExt
| Prénom
| Réservation extérieure
| Chaîne textuelle
| OUI
| Utilisateur
| first_name
|-
| cellPhoneExt
| Téléphone portable
| Réservation extérieure
| Chaîne textuelle
| OUI
| Utilisateur
| cell_phone
|-
| emailExt
| E-mail
| Réservation extérieure
| Chaîne textuelle
| OUI
| Utilisateur
| email
|}


=Templates d'email=
=Templates d'email=
==Template e-mail d'annulation de réservation==
==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 extérieures'''.
* 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:
Exemple de template d'e-mail par défaut:
<pre>
<pre>
Line 334: Line 517:
</pre>
</pre>


* 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 extérieures'''.
* 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:
Exemple de l'objet d'e-mail par défaut:
<pre>Annulation de votre réservation %STRUCTURE_NAME</pre>
<pre>Annulation de votre réservation %STRUCTURE_NAME</pre>
Line 341: Line 524:


==Template e-mail de confirmation de 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 extérieures'''.
* 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:
Exemple de template d'e-mail par défaut:

Latest revision as of 07:03, 27 September 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 la mise en place des réservations externes

La procédure de configuration des réservations externes est découpée en 3 chapitres ci-dessous qu'il faut suivre dans l'ordre.

Créer les champs métiers, les profils, le type d'activité et le type de validité

Ajouter les champs métiers pour les réservations externes
  • Aller dans Admin > Structure › Variables › Champs métiers
  • Pour chaque ligne du tableau ci-dessous :
    • Tout en bas du tableau, sur la dernière ligne renseigner les champs avec les valeurs indiquées dans la ligne correspondante
    • Cliquer sur le bouton Ajouter
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

Il est possible d'ajouter d'autres champs métiers selon les besoins, afin d'enrichir le formulaire de réservation externe et de collecter ainsi davantage d'informations auprès des utilisateurs effectuant les réservations.


Créer un profil pour les utilisateurs effectuant les activités liées aux réservations externes
  • Aller dans Admin > Utilisateurs > Profils
  • Cliquer sur le bouton Ajouter un profil
  • Renseigner le champ Nom du profil avec le nom souhaité (exemple : "Pilote baptême")
  • Cliquer sur le bouton Enregistrer
  • Cliquer sur l'onglet Réservations
  • Cliquer sur la case à cocher Planning personnel pour ce profil
  • Cliquer sur la case à cocher Planning individuel visible pour les autres pour ce profil
  • Aller dans Admin > Utilisateurs > Profils plus

Pour les profils qui doivent pouvoir voir les lignes de réservations de ces utilisateurs ou modifier les disponibilités de ces utilisateurs :

  • colonne Profils visibles, cocher le profil précédemment créé


Créer un profil pour les clients externes
  • Aller dans Admin > Utilisateurs > Profils
  • Cliquer sur le bouton Ajouter un profil
  • Renseigner le champ Nom du profil avec le nom souhaité (exemple : "Client baptême")
  • Cliquer sur le bouton Enregistrer

Note : Le profil ne doit avoir aucun droit


Créer un type d'activité

Si nécessaire, il faut créer un type d'activité dédié aux réservations externes :

  • Aller dans Admin > Types d'activités > Actifs
  • Cliquer sur le bouton "+" en haut à droite du tableau Liste des types d'activités
  • Renseigner le champ Nom avec le nom du type d'activité souhaité (exemple : "Baptême")
  • Cliquer sur le bouton Enregistrer

Attention : le nom du type d'activité apparait sur l'interface de réservation externe. Afin qu'il s'intègre correctement, sans créer de faute d'orthographe, il doit être un groupe nominal masculin.

Exemples :

  • Baptême de l'air
  • Vol découverte

Déconseillé :

  • Balade découverte


Il est possible de demander aux clients externes de téléverser un document permettant d'attester d'une commande effectuée par un autre biais et donnant le droit d'effectuer une réservation.

Ce document est alors stocké dans une validité.

Pour paramétrer cela, il faut suivre la procédure Créer un type de validité pour stocker une preuve d'achat.

Paramétrer le module de réservations externes

Activer et paramétrer le module des réservations externes
  • Aller dans Admin > Structure > Paramétrage > Réservations externes
  • Activer l'interrupteur Réservations externes

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

  • Synchronisation avec une API REST tierce (facultatif, voir Interfacer les réservations externes avec un service web de gestion des codes de référence de vente)
  • Heure de début (fuseau X)
  • Heure de fin (fuseau X)
  • Durée d'une réservation externes
  • Permettre de choisir la durée d'activité
  • Utiliser la couleur de la 1ère ressource disponible pour chaque créneau: permet d'activer Colorisation des créneaux disponibles en fonction de la 1ère ressource disponible
  • Interdire d'effectuer une réservation débutant dans moins de (la valeur minimale ne peut être inférieure à la valeur définie dans le Interdire d'effectuer une réservation débutant dans moins de du formulaire de configuration des réservations internes
  • Interdire d'effectuer une réservation se terminant dans plus de
  • Interdire d'annuler une réservation débutant dans moins de
  • Limitation du nombre de réservations
  • Autoriser uniquement les emails des utilisateurs actifs: lorsque activé, permet de n'envoyer un email de demande de confirmation qu'aux adresses emails d'un utilisateur actif, c'est à dire pour une adresse email présente en base de données.
  • Profil utilisateur partie prenante : sélectionner le profil créé précédemment ("Pilote baptême" dans l'exemple)

Note : Si Aucun est sélectionné, les périodes disponibles pour une réservation externe sont déterminées uniquement en fonction de la disponibilité des ressources

  • Filtrer les utilisateurs avec le champ métier et Filtrer les ressources avec le champ métier (voir Filtrer les utilisateurs/ressources prises en compte pour les créneaux horaires disponibles)
  • Profil à affecter aux clients : sélectionner le profil créé par précédemment ("Client baptême" dans l'exemple)
  • Type d'activité à affecter aux réservations : sélectionner le type d'activité à affecter aux réservations externes. Exemple : "Baptême".
  • Demander une pièce jointe et l'enregistrer dans le type de validité suivant  : si un type de validité pour stocker une preuve d'achat a été créé dans le paramétrage préliminaire, sélectionner la validité correspondante. Sinon, laisser vide
    • 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.
  • Enregistrer la référence transmise en paramètre GET en tant que (voir Affecter la référence du bon d'achat à la réservation externes)
  • Template de l'e-mail de confirmation de réservation (voir l'exemple Template e-mail de confirmation de réservation)
  • Personnaliser l'objet de l'e-mail d'annulation de réservation (voir l'exemple Template e-mail d'annulation de réservation)
  • Cliquer sur le bouton Enregistrer
  • Template de l'e-mail d'annulation de réservation (voir l'exemple Template e-mail d'annulation de réservation
  • Cliquer sur le bouton Enregistrer

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

Associer les ressources et les utilisateurs

Ajouter des ressources pouvant être utilisées pour les réservations externes
  • 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 pouvant être affectés à des réservations externes
  • 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


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 (1ère place) 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 (2ème place) sur les types de ressources concernés par les baptêmes de l'air.
Tester

Une fois l'ensemble de ce paramétrage effectué, il faut tester le module de réservation externe pour vérifier qu'il permet :

  • de sélectionner un créneau disponible
  • d'envoyer un email de demande de confirmation
  • de confirmer
  • de recevoir un email de confirmation
  • d'annuler en cliquant sur le lien présent dans l'email de confirmation
  • de valider la demande d'annulation
  • de recevoir un nouvel email d'annulation

Configurer la vente des produits externes

Présentation

Ce paramétrage permet d'activer la vente de produits externes. A l'heure actuelle, le module permet uniquement de coupler la vente d'un produit avec le module des réservations externes et de valider cette vente par paiement en ligne.

Prérequis

Créer les champs métiers requis pour le processus de paiement

  • Aller dans Admin > Structure › Variables › Champs métiers
  • Pour chaque ligne du tableau ci-dessous :
    • Tout en bas du tableau, sur la dernière ligne renseigner les champs avec les valeurs indiquées dans la ligne correspondante
    • Cliquer sur le bouton Ajouter

Ce tableau présente la liste des champs métiers à créer obligatoirement, en suivant la procédure ci-dessus.

Nom de variable Intitulé Catégorie Type de valeur Remplissage obligatoire Catégorie liée Champ à lier
externalAddress Adresse Réservation externe Chaîne textuelle OUI Utilisateur address
externalCity Ville Réservation externe Chaîne textuelle OUI Utilisateur city
externalZipCode Code postal Réservation externe Chaîne textuelle OUI Utilisateur zipcode
externalCountry Pays Réservation externe Chaîne textuelle OUI Utilisateur country

Créer le produit, les comptes et les règles de ventilation comptables

Créer un produit externe
  • Aller dans Admin > Ventes > Produits > Produits

En bas du tableau sur la dernière ligne vide :

  • Renseigner le champ Nom avec le nom du produit qui apparaitra sur l'interface utilisateur (exemple : "Baptême de l'air")
  • Cocher Produit externe
  • Dans le champ Type de vente, sélectionner Produit non stocké
  • Dans le champ Montant du tarif indiqué le tarif souhaité
  • Cliquer sur le bouton Ajouter


Créer un compte client externe devant être débité pour les ventes externes
  • Aller dans Gestion > Comptes > Comptes > Clients

En bas du tableau sur la dernière ligne :

  • Renseigner le champ Nom avec le nom du compte (exemple : "Client Baptême")
  • Renseigner le champ Compte d'export avec le code comptable (exemple : 411000)
  • Cocher la case Reçoit les paiements des clients extérieurs
  • Cliquer sur le bouton symbolisant le signe plus


Activer les ventes externes et définir le compte créé ci-dessus comme compte d'imputation pour les ventes externes
  • Aller dans Admin > Structure > Paramétrage > Comptes
  • Activer l'interrupteur Ventes externes
  • Dans le champ Compte imputé pour les ventes externes, sélectionner le compte défini précédemment
  • Dans le champ Type d'encaissement par internet, sélectionner le type de paiement correspondant à un TPE virtuel (exemple : Carte bancaire en ligne)
  • Dans le champ Comptabilité pour le format monétaire, sélectionner la comptabilité à utiliser pour définir le format pour la mise en forme monétaire (exemple : Principale)
  • Cliquer sur le bouton Enregistrer


Créer un compte produit devant être crédité pour les ventes externes
  • Aller dans Gestion > Comptes > Comptes > Produits

En bas du tableau sur la dernière ligne :

  • Renseigner le champ Nom avec le nom du compte (exemple : "Ventes externes")
  • Renseigner le champ Compte d'export avec le code comptable (exemple : 706000)
  • Cliquer sur le bouton symbolisant le signe plus


Configurer les règles de facturations
  • Aller dans Admin > Ventes > Facturation > Produits
  • Vérifier que la première règle de facturation est intitulée "Tarification générale des produits" et que la cellule "Produit externe" contient une étoile, si ce n'est pas le cas :
    • Cliquer sur le bouton Ajouter une ligne de facturation
    • Renseigner le champ Nom avec l'intitulé : Tarification generale des produits
    • Renseigner le champ Quantité / taux avec la formule : %PRODUCT_QUANTITY
    • Renseigner le champ Prix unitaire hors-taxe / TVA avec la formule : %UNIT_PRICE_VALUE
    • Renseigner le champ Formule avec la formule : %CURRENT_QUANTITY * %CURRENT_UNIT_PRICE
    • Renseigner le champ Nom de variable associé à la formule avec l'intitulé : tarifGeneral
    • Dans le champ Type de compte à débiter, sélectionner Compte utilisateur / ventes externes
    • Dans le champ Compte utilisateur à débiter, sélectionner le compte utilisateur par défaut (exemple Compte Pilote)
    • Dans le champ Type de compte à créditer, sélectionner Compte produit
    • Dans le champ Compte produit à créditer, sélectionner Boutique ou Ventes externes
    • Dans le champ Produits internes, cocher Tous
    • Dans le champ Produits externes, cocher Tous
    • Cliquer sur le bouton Enregistrer
  • Cliquer sur le bouton Ajouter une ligne de facturation
  • Renseigner le champ Nom avec l'intitulé souhaité (exemple : "Vente externe - baptêmes")
  • Renseigner le champ Formule avec la formule suivante : @tarifGeneral
  • Dans le champ Type de compte à débiter, sélectionner Compte produit
  • Dans le champ Compte produit à débiter, sélectionner le compte crédité par défaut à la première ligne des règles de facturation (exemple : "Boutique" ou "Ventes diverses")
  • Dans le champ Type de compte à créditer, sélectionner Compte produit
  • Dans le champ Compte produit à créditer, sélectionner le nom du compte produit créé précédemment
  • Dans le champ Produits externes, cocher le ou les produit(s) externe(s) souhaités dans la liste (exemple : Tous)
  • Cliquer sur le bouton Enregistrer

Paramétrages facultatifs

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 :

https://localhost/4.0/externalBooking.php?reference=AZERTY

Permet d'attribuer le code de référence d'achat AZERTY à la réservation en cours.

Ajouter les champs métiers optionnels

Il est possible d’ajouter d’autres champs métiers lors de l’utilisation du module de réservations externes, à condition de respecter les exigences suivantes lors de leur création :

  • Nom du champ : Ajouter le préfixe external au début du nom pour indiquer qu'il s'agit d'un champ métier externe.
  • Catégorie : Sélectionner Réservation externe comme catégorie.
  • Remplissage obligatoire : Cocher cette case si le champ doit être complété par l’utilisateur.
  • Catégorie liée : Associer le champ métier à la catégorie correspondante (Utilisateur / Réservation).
  • Champ à lier : Associer le champ au champ métier (si celui-ci n'existe pas, il faut le créer) ou bien au champ original de la catégorie liée, ce champ lié indique l’endroit où la valeur saisie par le client externe est enregistrée.

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 :

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

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:

Créer un type de validité pour stocker une preuve d'achat

Prérequis
Procédure
  • Aller dans Admin > Utilisateurs > Types de validités
  • Cliquer sur le bouton Ajouter un type de validité
  • Renseigner le champ Nom avec l'intitulé souhaité (exemple : "Bon d'achat")
  • Cocher Associer un document
  • Dans les champs Profils autorisés à gérer pour eux-mêmes et Profils autorisés à gérer/certifier pour les autres cocher les profils de gestion devant pouvoir accéder à cette validité
  • Cliquer sur le bouton Enregistrer
  • Aller dans Admin > Structure > Paramétrage > Réservations externes
  • Renseigner le champ Demander une pièce jointe et l'enregistrer dans le type de validité suivant avec le type de validité créé ci-dessus
  • Cliquer sur le bouton Enregistrer

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 :

https://localhost/4.0/externalBooking.php?locationPerson=LFBD

Permet de ne prendre en compte que les utilisateurs disponibles ayant dans le champ Base géographique la valeur LFBD (BORDEAUX MERIGNAC).

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 :
{
  "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"
}

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 :
{
    "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"
}

- En retour l'API doit répondre en cas de succès :

{
  "status": true
}

- En retour l'API doit répondre en cas d'échec :

{
  "status": false,
  "error_msg": "le message d'erreur"
}


  • 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 :

{
  "status": true
}

- En cas d'échec l'API répond :

{
  "status": false,
  "error_msg": "le message d'erreur"
}


Exemple de la communication en PHP avec l'API:

// 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);

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