Paramétrage des activités and Configuration des réservations internes: Difference between pages

From Documentation de la solution web de gestion OpenFlyers
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
=Présentation=
=Présentation=
L'objet de cette page est de présenter le paramétrage du module de gestion des activités.
Cette page présente le paramétrage du module de réservations interne.


Il existe également des pages qui traitent de :
=Gestion du planning (Admin > Structure > Paramétrage > Réservations internes)=
*La [[gestion des types d'activités]]
[[Image:014_parametrage_gestion_reservation.png|1500px|center|gestion des réservations]]
*La [[gestion des activités]]


Le paramétrage des activités s'effectue dans '''Admin > Structure > Paramétrage > Activités'''.
==Mode de réservation==
===Réservations standards===
Cette option permet de faire des réservations classiques, c'est-à-dire que l'on réserve directement une ressource en fonction de son nom (exemple : son immatriculation), cela ne diffère en rien des réservations "papier".


Pour activer la gestion des activités, il faut activer l'interrupteur '''Activité'''.
===Réservation par type de ressource===
La réservation par type permet non pas de choisir une ressource particulière mais un type de ressource. Dans les structures aéronautiques possédant plusieurs aéronefs d'une même famille (plusieurs DR400/120 par exemple) on choisit alors de réserver un DR400/120 parmi ceux de la flotte. Le programme choisira l'immatriculation en fonction de la disponibilité des appareils (entretien mécanique par exemple).


Lorsque la gestion des activités est activée, un formulaire s'affiche permettant de configurer le module de gestion des activités.
La réservation par type comporte un double intérêt :
*pouvoir donner la priorité à une ressource par rapport à une autre et ainsi pousser telle ou telle ressource à être plus utilisée en fonction des souhaits de programmation (pour les opérations de maintenance par exemple) ;
*créer une ressource fictive supplémentaire pour mettre en place le surbooking.


=Général=
Si des ressources de même type sont indisponibles, que ce soit parce qu'elles sont réservées ou immobilisées, alors c'est la 1ère ressource disponible qui est choisie par OpenFlyers.
==Mode==
Permet de choisir entre les [[Introduction#Modes_de_saisie_ouverture+fermeture_ou_fermeture_seule|modes ouverture+fermeture et fermeture seulement]].


Le mode "fermeture seulement" est sélectionné par défaut.
Il est possible de modifier l'ordre de tri des ressources à n'importe quel moment.


==Gestion des potentiels==
De même, pour les utilisateurs disposant du droit "Surpasser la réservation par type", il est possible de forcer une réservation sur une ressource donnée.
Permet d'activer le [[Suivi-de-maintenance#Module-de-suivi-du-potentiel-restant|Module de suivi du potentiel restant]] et ainsi de suivre le potentiel restant avant la prochaine échéance calendaire ou horaire d'une ressource.


==Redirection à la fermeture d'une activité==
'''Attention :''' dans le cas où la structure exploite plusieurs ressources d'un même type mais qu'elle souhaite séparer la gestion des réservations pour chaque ressource, il faut créer autant de type de ressource que de ressources. Exemple : une structure aéronautique dispose de 2 avions de type DR420. Si les 2 avions sont identifiés avec un même type "DR420" alors les réservations seront faite toujours en priorité sur le DR420 du plus forte priorité. Si ce comportement n'est pas souhaité, il faut créer 2 types (DR420-1 et DR420-2 par exemple) et associer un avion au type DR420-1 et l'autre avion au type DR420-2.
Cette fonctionnalité permet de poser une question à l'utilisateur après la saisie avec succès d'une [[Gestion-des-activités#Saisir-une-activité|fermeture d'activité]]. Si la réponse est oui à la question, OpenFlyers ouvre un nouvel onglet avec comme URL le lien renseigné dans le paramétrage.


Pour activer cette fonctionnalité il faut :
==Code couleur==
*Cliquer sur '''OUI'''
Permet de définir quelle code couleur doit être utilisée pour l'affichage des réservations :
*Champ '''Question''' : renseigner la question à poser à l'utilisateur après qu'il ait saisie une activité
*Par utilisateur
*Champ '''URL''' : indiquer l'URL complète
:deux champs de sélection s'affichent :
*Cliquer sur le bouton '''Enregistrer'''
:*'''Couleur par défaut pour les réservations qui ne concernent pas l'utilisateur'''
::Il s'agit d'une paire de couleurs [Couleur claire (réservation en solo) / couleur foncée (réservation en instruction)] utilisé pour afficher les réservations qui ne concernent pas l'utilisateur connecté.
:*'''Couleur par défaut pour les réservations qui concernent l'utilisateur'''
::Il s'agit d'une paire de couleurs [Couleur claire (réservation en solo) / couleur foncée (réservation en instruction)] utilisé pour afficher les réservations qui concernent l'utilisateur connecté.
:Il est possible de configurer [[Gestion-des-utilisateurs#Changer-la-couleur-d'affichage-des-réservations-d'un-utilisateur|une paire de couleurs par utilisateur]].
*[[Gestion-des-types-d'activités#Affecter-une-couleur-à-un-type-d'activité|Par type d'activité]]


Exemple de paramétrage pour demander à un utilisateur s'il veut déclarer un évènement REX FFA :
==Affichage possible des activités réalisées dans le planning==
*Champ '''Question''' : ''Voulez-vous déclarer un Rex ?''
Permet aux utilisateurs disposant du droit [[Gestion-des-profils#Voir-les-activités-de-tous|Voir les activités de tous]] d'activer le module d'[[Utilisation-des-réservations-internes-sur-l%27interface-web#Affichage-des-activités-réalisées|Affichage des activités réalisées]] sur la page de réservation.
*Champ '''URL''' : ''https://rexffa.fr/Connection/LogOnStructureAccess/XXXXXXXXXX'' où il faut remplacer les XXXXXXXXXX par le numéro communiqué par la FFA.


=Facturation=
==Réservation multi-ressources==
===Regrouper les activités en une facture lors de la validation===
Cette fonctionnalité permet d'autoriser à un utilisateur de réserver plusieurs ressources sur des créneaux horaires qui se chevauchent.
Cette option est visible à condition que la [[#Gestion-des-comptes|gestion des comptes]] soit activée.


Lorsque cette option est activée, lors de la [[Gestion-des-activités#Valider-une-activité|validation de plusieurs activités]] celles-ci sont [[Facturation-des-clients#Regrouper-les-ventes-par-client|regroupées en une seule facture par client]].
'''Attention :''' cette fonctionnalité n'est pas conçue pour les formateurs/instructeurs et entraine des bugs d'affichage sur le planning de réservation. La version 4 d'OpenFlyers corrigera ce défaut.


==Envoyer un [[Facturation-des-clients#Envoi-automatique-de-chaque-facture-client|email pour chaque facture]]==
==Affichage du nom des ressources dans le planning==
Cette option est visible à condition que la [[#Gestion-des-comptes|gestion des comptes]] soit activée.
Ce paramétrage permet d'afficher ou cacher le nom des ressources dans le planning. Cela permet de diminuer la taille verticale des lignes du planning et de cacher ces noms lorsqu'ils ne sont pas nécessaires.


Lorsque cette option est activée, à la suite de la [[Gestion-des-activités#Valider-une-activité|validation d'une activité]] ou d'une vente, la facture PDF sera générée dans la minute qui suit et un [[Facturation-des-clients#Envoi-automatique-de-chaque-facture-client|email sera automatiquement envoyé à l'utilisateur]] avec en pièce-jointe la facture PDF.
==Afficher les alertes non bloquantes lors des glisser-déposer==
Ce paramétrage permet d'afficher les alertes non bloquantes lors des [[Utilisation-des-réservations-internes-sur-l%27interface-web#Glisser-déposer-des-réservations|glisser-déposer des réservations]] sur le planning.


Si l'option est désactivée, l'utilisateur peut toutefois activer pour lui [[Fiche-personnelle#Recevoir-un-e-mail-pour-chaque-facture|l'envoi automatique de chaque facture]].
==Heure de début et fin (useau X) d'activité==
Permet de définir la plage horaire du planning de réservation dans le fuseau horaire de la structure.


==Autoriser les utilisateurs à choisir de recevoir ou non un email pour chaque facture==
==Interdire d'effectuer une réservation débutant dans moins de==
Cette option est visible à condition que l'option [[#Envoyer-un-email-pour-chaque-facture|Envoyer un email pour chaque facture]] soit activée.
Permet d'empêcher d'effectuer une réservation débutant dans moins de X temps. Cette fonctionnalité est notamment utile en réservation par type lorsque la distribution des ressources réelles par ligne de planning est faite le matin pour la journée. Elle est également utile lorsque la facturation se fait la veille au vu des réservations du lendemain.


Par défaut un utilisateur va recevoir un [[Facturation-des-clients#Envoi-automatique-de-chaque-facture-client|email pour chaque facture]]. Cette option permet à un utilisateur depuis sa fiche personnelle de désactiver ou activer l'envoi d'un email pour chaque facture.
==Limitation dans le temps des réservations==
Permet de limiter dans le temps les réservations.


=Prise en compte des validités requises=
==Limitation du nombre de réservations==
==Pour un type d'activité donné==
Permet de limiter le nombre de réservations par utilisateur.


==Pour un type de ressource donné==
==Saisie de la destination (si champ lieu d'arrivée coché)==
Permet de demander à l'utilisateur d'indiquer sa destination et ce en fonction de la durée de sa réservation.


=Seconde personne à bord=
==Durée minimale d'une réservation==
==Type d'activité requis==
Permet de définir la durée minimale d'une réservation.
Permet de définir quel type d'activité doit être obligatoirement sélectionné lors de la présence d'un second pilote à bord. Usuellement utilisé pour éviter les erreurs ou oublis en cas de vol d'instruction.


==Demander au moins 2 types d'activités==
La durée maximale d'une réservation peut se définir pour chaque type de ressource.


=Auto-compléter=
==Durée par défaut d'une réservation==
==Terrain d'arrivée égal au terrain de départ, lorsque l'une des activités suivantes est sélectionnée==
Permet de définir la durée par défaut.
Cette option définit les types d'activités qui associent automatiquement le terrain de départ d'un vol et son terrain d'arrivée.


Les types d'activités choisis lors du paramétrage se retrouvent dans la page de [[Gestion-des-activités#Saisir-une-activité|saisie d'activité]]. Si l'un des types d'activités est alors sélectionné lors de la [[Gestion-des-activités#Saisir-une-activité|saisie d'une activité]], le terrain d'arrivée et le terrain de départ sont de la même valeur.
==Afficher ces champs==
Permet de définir les champs visibles dans le formulaire de réservation :
*Même jour
*Places à disposition
*Lieu de départ
*Lieu d'arrivée


=Champs visibles=
Les lieux cochés sont ainsi définis avec une valeur par défaut lorsqu'un vol est entré à partir d'une réservation.
==Heures totales après activité==
Ce champ existe uniquement en fermeture d'activité


Lorsqu'il est coché, il apparait, en lecture seulement, dans le formulaire de saisie d'activité. Il calcule automatiquement et affiche le total des heures de la ressource avec la durée saisie dans ce formulaire.
==[[Paramétrage-des-validités#Paramétrer-globalement-le-contrôle-des-validités-pour-les-réservations|Paramétrer globalement le contrôle des validités pour les réservations]]==


=Export=
==Type d'activité par défaut==
==Gesasso==
Permet de définir le type d'activité à cocher par défaut :
Pour réaliser l'[[Interfaçage-OpenFlyers-et-Gesasso|interfaçage de Gesasso avec OpenFlyers]], les informations suivantes doivent être précisées :
* lors d'une nouvelle réservation ou lorsqu'on sélectionne une personne en première place sur le [[Utilisation-des-réservations-internes-sur-l%27interface-web#Formulaire-de-réservation|formulaire de réservation de l'ancienne interface]]
*Gesasso login : permet de définir le login utilisé pour l'authentification auprès de Gesasso
* lors d'une nouvelle réservation sur le [[Utilisation-des-réservations-internes-sur-l%27appli-mobile#Tutoriel-vidéo|planning de la nouvelle interface]]
*Gesasso password : permet de définir le mot de passe utilisé pour l'authentification auprès de Gesasso


=Import=
Pour définir le type :
==Charterware==
* Aller dans '''Admin > Structure > Paramétrage > Planning'''
Pour réaliser l'[[Interfaçage-OpenFlyers-et-Charterware|interfaçage de Charterware avec OpenFlyers]]:
* Champ '''Type d'activité par défaut''' : Sélectionner le type d'activité
*Activer l'interrupteur '''Charterware''' dans la colonne '''Import'''. [[#Vérification-de-l'abonnement-d'interconnexion-avec-boitier-GPS/GSM|Une vérification de l'abonnement]] est effectuée.
* Cliquer sur '''Enregistrer'''
Si l'interrupteur est activé, les informations suivantes doivent être précisées :
*Nom de la plateforme dans Charterware : permet de définir le nom utilisé dans Charterware**Formule date de début du vol Charterware : permet de définir la formule de calcul de la date de début par rapport aux données transmises par Charterware
*Formule durée du vol Charterware : permet de définir la formule de calcul de la durée par rapport aux données transmises par Charterware
*Formule temps en l'air Charterware : permet de définir la formule de calcul du temps passé en l'air par rapport aux données transmises par Charterware
*Règle d'arrondi horaire Charterware : concernant les horaires de vols Charterware a une précision à la seconde contrairement à OpenFlyers qui a une précision à la minute. Il est donc nécessaire de définir comment les secondes seront arrondies.
*Type d'activité par défaut pour un pilote dans Charterware : permet de définir l'activité qui sera choisi si le vol Charterware ne peut être associé à une réservation.
*Type d'activité par défaut pour deux pilotes dans Charterware : permet de définir l'activité qui sera choisi si le vol Charterware ne peut être associé à une réservation.
*Récupération des traces de vols Charterare sur messagerie électronique : permet d'activer ou non la récupération des traces de vols crée par Charterware.
*E-mail : adresse email recevant les vols Charterware.
*Mot de passe : mot de passe correspondant à l'adresse email.
*Adresse du serveur : nom de domaine Internet ou une adresse IP de serveur.
*Port : numéro de port TCP.
*Option serveur : options lié au serveur.


Il existe trois règles d'arrondi possibles :
==Type d'activité par défaut pour la seconde place (ancienne interface)==
*Arrondi classique
Permet de définir le type d'activité à cocher par défaut lorsqu'on sélectionne une personne en seconde place sur le [[Utilisation-des-réservations-internes-sur-l%27interface-web#Formulaire-de-réservation|formulaire de réservation de l'ancienne interface]].
*Arrondi au supérieur
*Arrondi à l'inférieur


==ClickAndTakeoff==
Pour réaliser l'[[Interfaçage-OpenFlyers-et-ClickAndTakeoff|interfaçage de ClickAndTakeoff avec OpenFlyers]] :
*Activer l'interrupteur '''ClickAndTakeoff''' dans la colonne '''Import'''. [[#Vérification-de-l'abonnement-d'interconnexion-avec-boitier-GPS/GSM|Une vérification de l'abonnement]] est effectuée.
Si l'interrupteur est activé, les informations suivantes doivent être précisées :
*Nom de la plateforme dans ClickAndTakeoff : permet de définir le nom utilisé dans ClickAndTakeoff
*Formule date de début du vol ClickAndTakeoff : permet de définir la formule de calcul de la date de début par rapport aux données transmises par ClickAndTakeoff
*Formule durée du vol ClickAndTakeoff : permet de définir la formule de calcul de la durée par rapport aux données transmises par ClickAndTakeoff
*Formule temps en l'air ClickAndTakeoff : permet de définir la formule de calcul du temps passé en l'air par rapport aux données transmises par ClickAndTakeoff
*Type d'activité par défaut pour un pilote dans ClickAndTakeoff : permet de définir l'activité qui sera choisi si le vol ClickAndTakeoff ne peut être associé à une réservation.
*Type d'activité par défaut pour deux pilotes dans ClickAndTakeoff : permet de définir l'activité qui sera choisi si le vol ClickAndTakeoff ne peut être associé à une réservation.
*Le jeton d'accès du ClickAndTakeoff : permet de définir le token utilisé pour l'authentification auprès de ClickAndTakeoff


==Teltonika==
Pour définir le type :
Pour réaliser l'[[Interfaçage-OpenFlyers-et-Teltonika|interfaçage de Teltonika avec OpenFlyers]]:
* Aller dans '''Admin > Structure > Paramétrage > Planning'''
*Activer l'interrupteur '''Teltonika''' dans la colonne '''Import'''. [[#Vérification-de-l'abonnement-d'interconnexion-avec-boitier-GPS/GSM|Une vérification de l'abonnement]] est effectuée.
* Champ '''Type d'activité par défaut pour la seconde place (ancienne interface)''' : Sélectionner le type d'activité
Si l'interrupteur est activé, les informations suivantes doivent être précisées :
* Cliquer sur '''Enregistrer'''
* Nom d'utilisateur pour la plateforme dans Teltonika : permet de définir le nom utilisé dans Teltonika
* Mot de passe du Teltonika : permet de l'authentification auprès de Teltonika
* Formule date de début du vol Teltonika : permet de définir la formule de calcul de la date de début par rapport aux données transmises par Teltonika
* Formule durée du vol Teltonika : permet de définir la formule de calcul de la durée par rapport aux données transmises par Teltonika
* Formule temps en l'air Teltonika : permet de définir la formule de calcul du temps passé en l'air par rapport aux données transmises par Teltonika


=[[Paramétrage-des-validités#Paramétrer-le-contrôle-des-validités-pour-les-activités-ou-les-réservations|Paramétrage général du contrôle des validités pour la saisie des vols]]=
==Règles de saisies XML==
Permet d'éditer les [[#Règles-de-saisies|Règles de saisie]] qui s'appliquent, pour le moment, uniquement pour le planning.


=Vérification de l'abonnement d'interconnexion avec boitier GPS/GSM=
=Règles de saisies=
Pour synchroniser OpenFlyers avec l'un des boîtiers GPS/GSM ([[#Gestion-de-Charterware|Charterware]], [[#Gestion-de-ClickAndTakeoff|ClickAndTakeOff]], [[#Gestion-de-Teltonika|Teltonika]]), la plateforme doit disposer d'un abonnement d'interconnexion valide. Si cet abonnement n'est pas payé, un message d'erreur apparaître lors de l'activation de l'interrupteur, indiquant que la synchronisation avec le boîtier n'est pas possible. Pour activer l'interfaçage, il est nécessaire de souscrire à l'abonnement d'interconnexion.
Les règles de saisie sont utilisées uniquement par le moteur de réservation pour construire l'affichage des champs du formulaire de réservation et pour vérifier, après la saisie d'une réservation, que les données saisies respectent bien les règles de saisie.


=Gestion [[Contrôle-des-accès|armoire à clés]]=
Elles sont écrites en [[Wikipedia-fr:Extensible_Markup_Language|XML]]. cf. l'[[#Exemple|exemple de règles de saisie]].


Active le [[Interfaçage-OpenFlyers-et-armoire-à-clés#Activation-et-configuration-de-la-gestion-des-armoires-à-clé|contrôle d'une armoire à clés]].
Le moteur de vérification des règles s'enclenche dès qu'une réservation n'est plus "nue", c'est à dire lorsqu'au moins un élément est renseigné (activité, ressource, etc.). Alors il vérifie quelles sont les règles compatibles et en déduit les contenus possibles dans les champs de saisie de l'interface utilisateur.


====Gestion des clés====
La compatibilité d'une règle se détermine '''par restriction''' en vérifiant dans cet ordre les informations suivantes :
#Activités
#Ressources
#Profils
#Places


Active l'[[Interfaçage-OpenFlyers-et-armoire-à-clés#Attribution-des-clés-aux-ressources/aéronefs|attribution de clés aux ressources]].
Pour chaque information, le moteur regarde si elle est renseignée. Si ce n'est pas le cas alors il passe à l'information suivante. Par exemple s'il n'y a pas encore d'activité de saisie alors il ne vérifie pas ce point-là dans la règle.


====Nombre de clés====
Pour les activités et les ressources, il regarde les règles qui acceptent celles renseignées. S'il y a des règles qui pose problème alors elles sont rejetées.


Permet de définir le nombre de clés que l'armoire peut accueillir.
Pour les profils ce sont les personnes qui sont étudiées et ce de deux manières différentes selon si sur la saisie il y a une ressource de renseignée ou non.
*Lorsqu'il y a une ressource de renseignée, le fonctionnement est similaire aux autres informations. le moteur regarde pour toutes les personnes renseignées si sur la place où elles sont, elles ont au moins un profil valide. Si une personne n'a aucun profil pour la place où il est alors la règle est rejetée.
*Lorsqu'il n'y a pas de ressource le fonctionnement est différent. Au lieu de faire par restriction, le moteur va faire '''par ajout'''. C'est-à-dire qu'au lieu de dire "il ne faut que des pilotes", il va dire "je veux au moins un pilote". Pour ce faire il va regarder les profils de chaque personne. S'il trouve une personne avec un profil valide, il accepte la règle. Si aucune des personnes ne correspond, il va faire une seconde vérification au niveau des places. Si pour cette règle l'une des places n'est pas définie, il considère que les personnes présentes vont potentiellement aller sur cette place et il ne rejette pas la règle. Par contre, si toutes les places sont définies et qu'aucune des personnes ne correspond alors la règle est rejetée.


====Logiciel de contrôle de l'armoire à clés====
Pour les places, il vérifie qu'il n'y a pas trop de monde. Comme pour les profils il y a deux manières de les étudier en fonction de s'il y a une ressource ou non.
*Lorsqu'il y a une ressource, il va regarder pour chaque place si le nombre de personnes autorisées n'est pas dépassé. Si sur l'une des places le nombre est dépassé alors la règle est rejetée. Cependant, si le nombre est atteint mais pas dépassé alors la règle n'est pas rejetée.
*Lorsqu'il n'y a pas de ressource, il va parcourir chaque place pour compter le nombre total de personnes autorisées pour cette règle. Si le nombre est dépassé alors la règle est rejetée. Comme précédemment si le nombre est simplement atteint alors la règle n'est pas rejetée.


Permet de définir le logiciel à utiliser pour le contrôle de l'armoire à clés :
Si pour chaque information saisie, la règle est compatible alors elle est conservée.
*'''OF_GetFlogBoxFile.exe''' permet de contrôler les [[Contrôle-des-accès#Armoires-à-clés-FlogBox-anciennement-commercialisées-par-Francelog|armoires à clés FlogBox anciennement commercialisées par Francelog]]
 
*'''OF_GetKeyGuardFile.exe''' permet de contrôler les [[Contrôle-des-accès#Armoires-à-clés-KeyGuard-anciennement-commercialisées-par-BKS-électronique|armoires à clés KeyGuard anciennement commercialisées par BKS électronique]]
Pour qu'une saisie soit valide, il faut qu'il existe au moins une règle de conservée, c'est à dire de compatible.
*'''OpenKey''', '''PyOpenKey''' et '''PyOpenKey2''' permettent de contrôler les [[Contrôle-des-accès#Armoires-à-clés-Deister-commercialisées-par-OpenFlyers|armoires à clés Deister commercialisées par OpenFlyers]]. Si l'une de ces options est sélectionnée alors des champs supplémentaires pour [[Installation-armoire-à-clés#Paramétrage-OpenFlyers|configurer le logiciel de contrôle]] apparaissent.
 
;Exemple
<syntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<ruleList>
    <rule>
        <!-- Liste des activités autorisées et requises -->
        <activityTypeList needs="bookAlone">
            <activityType>1</activityType> <!-- Local -->
        </activityTypeList>
        <!-- Liste des ressources autorisées -->
        <resourceList minQty="1" maxQty="1">
            <resourceType>1</resourceType> <!-- F-001 -->
            <resourceType>2</resourceType> <!-- F-002 -->
        </resourceList>
        <!-- Définition des places -->
        <placeList>
            <place index="0"  minQty="1" maxQty="1" status="1" needs="bookAnyone"> <!-- Pilote -->
                <!-- Liste des profils autorisés -->
                <profile>2</profile> <!-- Pilote -->
            </place>
        </placeList>
    </rule>
    <rule>
        <!-- Liste des activités autorisées et requises -->
        <activityTypeList needs="*(bookAlone)(bookWithInstr)">
            <activityType>1</activityType> <!-- Local -->
            <activityType>2</activityType> <!-- Instruction -->
        </activityTypeList>
        <!-- Liste des ressources autorisées -->
        <resourceList minQty="1" maxQty="1">
            <resourceType>*</resourceType> <!-- F-001, F-002, F-00X -->
        </resourceList>
        <!-- Définition des places -->
        <placeList>
            <place index="0"  minQty="1" maxQty="1" status="1"> <!-- Pilote-->
                <!-- Liste des profils autorisés -->
                <profile>1</profile> <!-- Elève -->
                <profile>2</profile> <!-- Pilote -->
            </place>
            <place index="1" minQty="1" maxQty="1" status="2"> <!-- Instructeur -->
                <!-- Liste des profils autorisés -->
                <profile>4</profile> <!-- Instructeur -->
            </place>
        </placeList>
    </rule>
    <rule>...</rule>
</ruleList>
</syntaxhighlight>
 
==attribut needs==
L'attribut needs peut être utilisé pour les éléments :
*activityTypeList
*place
 
Il contient un ou plusieurs droits qui sont requis par l'utilisateur effectuant la saisie pour que la règle puisse s'appliquer.
 
Lorsqu'il n'y a qu'un droit de requis, il faut écrire ''needs="nomDuDroit"''.
 
Lorsqu'il y a plusieurs droits possibles, un seul étant requis, il faut commencer par le signe * puis lister chaque droit en l'entourant de parenthèses : ''needs="*(bookAlone)(bookWithInstr)''.
 
==ruleList==
Élément racine de la structure XML ne peut contenir comme élément enfant que des éléments "rule" qui correspondent, chacun, à une règle.
 
Il n'y pas d'attribut possible.
 
===rule===
Définit une règle.
 
Les éléments possibles sont :
*formulaList
*activityTypeList
*resourceList
*placeList
 
Il n'y a pas d'attribut possible.
 
Chaque règle définit les types d'activités, types de ressources et places qui la rendent compatible.
 
L'exemple suivant définit une règle qui autorise une saisie pour le type d'activité ''Local'', les types de ressources ''F-001'' ou ''F-002'' et pour laquelle il faut exactement 1 utilisateur avec le profil ''Pilote'' à la place 0. Le statut attribué sera celui de numéro 1. De plus, La personne qui fait la réservation doit avoir le droit "bookAlone" et si elle dispose du droit "bookAnyone" alors elle verra en plus la liste des utilisateurs compatibles avec cette règle pour lui permettre d'en choisir une :
<xml><rule>
        <!-- Liste des activités autorisées et requises -->
        <activityTypeList needs="bookAlone">
            <activityType>1</activityType> <!-- Local -->
        </activityTypeList>
        <!-- Liste des ressources autorisées -->
        <resourceList minQty="1" maxQty="1">
            <resourceType>1</resourceType> <!-- F-001 -->
            <resourceType>2</resourceType> <!-- F-002 -->
        </resourceList>
        <!-- Définition des places -->
        <placeList>
            <place index="0"  minQty="1" maxQty="1" status="1" needs="bookAnyone"> <!-- Pilote -->
                <!-- Liste des profils autorisés -->
                <profile>2</profile> <!-- Pilote -->
            </place>
        </placeList>
    </rule></xml>
 
====formulaList====
Contient la liste des formules que la règle doit respecter au travers des éléments ''formula''.
 
=====formula=====
Doit contenir les attributs :
*''action'' : indique l'action concernée pour la vérification de la formule. Si l'action effectuée par l'utilisateur n'est pas celle de la formule, alors la formule n'est pas vérifiée. Par contre, la règle peut quand être compatible. Il est possible de remplacer le nom d'une action par * pour indiquer que la formule doit être vérifiée quelque soit l'action.
*''title'' : pour indiquer le message d'alerte devant s'afficher lorsque la formule n'est pas respectée
 
Le contenu de l'élément ''formula'' est une formule qui est testée lors de la saisie.
 
'''Attention :''' dans la formule, pour les signes de comparaison supérieur ou inférieur, il faut saisir leur équivalent HTML :
* > doit être remplacé par <code>&amp;gt;</code>
* < doit être remplacé par <code>&amp;lt;</code>
* >= doit être remplacé <code>&amp;gt;=</code>
* <= doit être remplacé <code>&amp;lt;=</code>
 
Exemple :
<xml><!-- Durée maximum : 30min -->
<formula action="update" title="Vous ne pouvez pas faire de réservation ayant une durée supérieure à 30 minutes.">(%DURATION &lt;= 300)</formula></xml>
 
====activityTypeList====
Contient la liste des types d'activités qui sont compatibles avec la règle.
 
Peut contenir l'attribut [[#attribut-needs|needs]].
=====activityType=====
Contient l'identifiant d'un type d'activité.
 
====resourceList====
Contient la liste des types de ressources qui sont compatibles avec la règle.
 
Peut contenir les attributs ''maxQty'' et ''minQty'' pour définir le nombre de ressources maximum et minimum.
 
====placeList====
Contient la liste définissant les places.
 
=====place=====
Contient la définition de chaque place.
 
Peut contenir des éléments ''profile'' pour indiquer un profil requis parmi plusieurs pour qu'un utilisateur puisse occuper la place.
 
Doit contenir l'attribut index pour numéroter la place définie.
 
Peut contenir les attributs ''maxQty'', ''minQty'', ''needs'' et ''status''.
 
L'attribut ''needs'' permet de définir le droit requis pour l'utilisateur effectuant la saisie afin qu'il puisse choisir l'utilisateur dans la liste des utilisateurs compatibles. typiquement, cet attribut est utilisé ainsi : ''needs="bookAnyone"''.
 
L'attribut ''status'' permet de définir le statut de la personne à laquelle on attribut la place. Cette définition se fait en utilisant l'identifiant du statut. Exemple : ''status="1"''.
 
======profile======
Contient l'identifiant du profile requis.
 
==Wildcard==
Le caractère * peut être utilisé dans les éléments '''resourceType'''. Il indique que la règle s'applique à tous les types de ressources existants de la plateforme.
 
Exemple avec wildcard :
<xml><resourceTypeList minQty="1" maxQty="1">
    <resourceType>*</resourceType>
</resourceTypeList></xml>
 
Exemple sans wildcard :
<xml><resourceTypeList minQty="1" maxQty="1">
    <resourceType>1</resourceType>
    <resourceType>2</resourceType>
    <resourceType>3</resourceType>
</resourceTypeList></xml>

Revision as of 10:17, 20 January 2025

Présentation

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

Gestion du planning (Admin > Structure > Paramétrage > Réservations internes)

gestion des réservations

Mode de réservation

Réservations standards

Cette option permet de faire des réservations classiques, c'est-à-dire que l'on réserve directement une ressource en fonction de son nom (exemple : son immatriculation), cela ne diffère en rien des réservations "papier".

Réservation par type de ressource

La réservation par type permet non pas de choisir une ressource particulière mais un type de ressource. Dans les structures aéronautiques possédant plusieurs aéronefs d'une même famille (plusieurs DR400/120 par exemple) on choisit alors de réserver un DR400/120 parmi ceux de la flotte. Le programme choisira l'immatriculation en fonction de la disponibilité des appareils (entretien mécanique par exemple).

La réservation par type comporte un double intérêt :

  • pouvoir donner la priorité à une ressource par rapport à une autre et ainsi pousser telle ou telle ressource à être plus utilisée en fonction des souhaits de programmation (pour les opérations de maintenance par exemple) ;
  • créer une ressource fictive supplémentaire pour mettre en place le surbooking.

Si des ressources de même type sont indisponibles, que ce soit parce qu'elles sont réservées ou immobilisées, alors c'est la 1ère ressource disponible qui est choisie par OpenFlyers.

Il est possible de modifier l'ordre de tri des ressources à n'importe quel moment.

De même, pour les utilisateurs disposant du droit "Surpasser la réservation par type", il est possible de forcer une réservation sur une ressource donnée.

Attention : dans le cas où la structure exploite plusieurs ressources d'un même type mais qu'elle souhaite séparer la gestion des réservations pour chaque ressource, il faut créer autant de type de ressource que de ressources. Exemple : une structure aéronautique dispose de 2 avions de type DR420. Si les 2 avions sont identifiés avec un même type "DR420" alors les réservations seront faite toujours en priorité sur le DR420 du plus forte priorité. Si ce comportement n'est pas souhaité, il faut créer 2 types (DR420-1 et DR420-2 par exemple) et associer un avion au type DR420-1 et l'autre avion au type DR420-2.

Code couleur

Permet de définir quelle code couleur doit être utilisée pour l'affichage des réservations :

  • Par utilisateur
deux champs de sélection s'affichent :
  • Couleur par défaut pour les réservations qui ne concernent pas l'utilisateur
Il s'agit d'une paire de couleurs [Couleur claire (réservation en solo) / couleur foncée (réservation en instruction)] utilisé pour afficher les réservations qui ne concernent pas l'utilisateur connecté.
  • Couleur par défaut pour les réservations qui concernent l'utilisateur
Il s'agit d'une paire de couleurs [Couleur claire (réservation en solo) / couleur foncée (réservation en instruction)] utilisé pour afficher les réservations qui concernent l'utilisateur connecté.
Il est possible de configurer une paire de couleurs par utilisateur.

Affichage possible des activités réalisées dans le planning

Permet aux utilisateurs disposant du droit Voir les activités de tous d'activer le module d'Affichage des activités réalisées sur la page de réservation.

Réservation multi-ressources

Cette fonctionnalité permet d'autoriser à un utilisateur de réserver plusieurs ressources sur des créneaux horaires qui se chevauchent.

Attention : cette fonctionnalité n'est pas conçue pour les formateurs/instructeurs et entraine des bugs d'affichage sur le planning de réservation. La version 4 d'OpenFlyers corrigera ce défaut.

Affichage du nom des ressources dans le planning

Ce paramétrage permet d'afficher ou cacher le nom des ressources dans le planning. Cela permet de diminuer la taille verticale des lignes du planning et de cacher ces noms lorsqu'ils ne sont pas nécessaires.

Afficher les alertes non bloquantes lors des glisser-déposer

Ce paramétrage permet d'afficher les alertes non bloquantes lors des glisser-déposer des réservations sur le planning.

Heure de début et fin (useau X) d'activité

Permet de définir la plage horaire du planning de réservation dans le fuseau horaire de la structure.

Interdire d'effectuer une réservation débutant dans moins de

Permet d'empêcher d'effectuer une réservation débutant dans moins de X temps. Cette fonctionnalité est notamment utile en réservation par type lorsque la distribution des ressources réelles par ligne de planning est faite le matin pour la journée. Elle est également utile lorsque la facturation se fait la veille au vu des réservations du lendemain.

Limitation dans le temps des réservations

Permet de limiter dans le temps les réservations.

Limitation du nombre de réservations

Permet de limiter le nombre de réservations par utilisateur.

Saisie de la destination (si champ lieu d'arrivée coché)

Permet de demander à l'utilisateur d'indiquer sa destination et ce en fonction de la durée de sa réservation.

Durée minimale d'une réservation

Permet de définir la durée minimale d'une réservation.

La durée maximale d'une réservation peut se définir pour chaque type de ressource.

Durée par défaut d'une réservation

Permet de définir la durée par défaut.

Afficher ces champs

Permet de définir les champs visibles dans le formulaire de réservation :

  • Même jour
  • Places à disposition
  • Lieu de départ
  • Lieu d'arrivée

Les lieux cochés sont ainsi définis avec une valeur par défaut lorsqu'un vol est entré à partir d'une réservation.

Paramétrer globalement le contrôle des validités pour les réservations

Type d'activité par défaut

Permet de définir le type d'activité à cocher par défaut :

Pour définir le type :

  • Aller dans Admin > Structure > Paramétrage > Planning
  • Champ Type d'activité par défaut : Sélectionner le type d'activité
  • Cliquer sur Enregistrer

Type d'activité par défaut pour la seconde place (ancienne interface)

Permet de définir le type d'activité à cocher par défaut lorsqu'on sélectionne une personne en seconde place sur le formulaire de réservation de l'ancienne interface.


Pour définir le type :

  • Aller dans Admin > Structure > Paramétrage > Planning
  • Champ Type d'activité par défaut pour la seconde place (ancienne interface) : Sélectionner le type d'activité
  • Cliquer sur Enregistrer

Règles de saisies XML

Permet d'éditer les Règles de saisie qui s'appliquent, pour le moment, uniquement pour le planning.

Règles de saisies

Les règles de saisie sont utilisées uniquement par le moteur de réservation pour construire l'affichage des champs du formulaire de réservation et pour vérifier, après la saisie d'une réservation, que les données saisies respectent bien les règles de saisie.

Elles sont écrites en XML. cf. l'exemple de règles de saisie.

Le moteur de vérification des règles s'enclenche dès qu'une réservation n'est plus "nue", c'est à dire lorsqu'au moins un élément est renseigné (activité, ressource, etc.). Alors il vérifie quelles sont les règles compatibles et en déduit les contenus possibles dans les champs de saisie de l'interface utilisateur.

La compatibilité d'une règle se détermine par restriction en vérifiant dans cet ordre les informations suivantes :

  1. Activités
  2. Ressources
  3. Profils
  4. Places

Pour chaque information, le moteur regarde si elle est renseignée. Si ce n'est pas le cas alors il passe à l'information suivante. Par exemple s'il n'y a pas encore d'activité de saisie alors il ne vérifie pas ce point-là dans la règle.

Pour les activités et les ressources, il regarde les règles qui acceptent celles renseignées. S'il y a des règles qui pose problème alors elles sont rejetées.

Pour les profils ce sont les personnes qui sont étudiées et ce de deux manières différentes selon si sur la saisie il y a une ressource de renseignée ou non.

  • Lorsqu'il y a une ressource de renseignée, le fonctionnement est similaire aux autres informations. le moteur regarde pour toutes les personnes renseignées si sur la place où elles sont, elles ont au moins un profil valide. Si une personne n'a aucun profil pour la place où il est alors la règle est rejetée.
  • Lorsqu'il n'y a pas de ressource le fonctionnement est différent. Au lieu de faire par restriction, le moteur va faire par ajout. C'est-à-dire qu'au lieu de dire "il ne faut que des pilotes", il va dire "je veux au moins un pilote". Pour ce faire il va regarder les profils de chaque personne. S'il trouve une personne avec un profil valide, il accepte la règle. Si aucune des personnes ne correspond, il va faire une seconde vérification au niveau des places. Si pour cette règle l'une des places n'est pas définie, il considère que les personnes présentes vont potentiellement aller sur cette place et il ne rejette pas la règle. Par contre, si toutes les places sont définies et qu'aucune des personnes ne correspond alors la règle est rejetée.

Pour les places, il vérifie qu'il n'y a pas trop de monde. Comme pour les profils il y a deux manières de les étudier en fonction de s'il y a une ressource ou non.

  • Lorsqu'il y a une ressource, il va regarder pour chaque place si le nombre de personnes autorisées n'est pas dépassé. Si sur l'une des places le nombre est dépassé alors la règle est rejetée. Cependant, si le nombre est atteint mais pas dépassé alors la règle n'est pas rejetée.
  • Lorsqu'il n'y a pas de ressource, il va parcourir chaque place pour compter le nombre total de personnes autorisées pour cette règle. Si le nombre est dépassé alors la règle est rejetée. Comme précédemment si le nombre est simplement atteint alors la règle n'est pas rejetée.

Si pour chaque information saisie, la règle est compatible alors elle est conservée.

Pour qu'une saisie soit valide, il faut qu'il existe au moins une règle de conservée, c'est à dire de compatible.

Exemple
<?xml version="1.0" encoding="UTF-8"?>
<ruleList>
    <rule>
        <!-- Liste des activités autorisées et requises -->
        <activityTypeList needs="bookAlone">
            <activityType>1</activityType> <!-- Local -->
        </activityTypeList>
        <!-- Liste des ressources autorisées -->
        <resourceList minQty="1" maxQty="1">
            <resourceType>1</resourceType> <!-- F-001 -->
            <resourceType>2</resourceType> <!-- F-002 -->
        </resourceList>
        <!-- Définition des places -->
        <placeList>
            <place index="0"  minQty="1" maxQty="1" status="1" needs="bookAnyone"> <!-- Pilote -->
                <!-- Liste des profils autorisés -->
                <profile>2</profile> <!-- Pilote -->
            </place>
        </placeList>
    </rule>
    <rule>
        <!-- Liste des activités autorisées et requises -->
        <activityTypeList needs="*(bookAlone)(bookWithInstr)">
            <activityType>1</activityType> <!-- Local -->
            <activityType>2</activityType> <!-- Instruction -->
        </activityTypeList>
        <!-- Liste des ressources autorisées -->
        <resourceList minQty="1" maxQty="1">
            <resourceType>*</resourceType> <!-- F-001, F-002, F-00X -->
        </resourceList>
        <!-- Définition des places -->
        <placeList>
            <place index="0"  minQty="1" maxQty="1" status="1"> <!-- Pilote-->
                <!-- Liste des profils autorisés -->
                <profile>1</profile> <!-- Elève -->
                <profile>2</profile> <!-- Pilote -->
            </place>
            <place index="1" minQty="1" maxQty="1" status="2"> <!-- Instructeur -->
                <!-- Liste des profils autorisés -->
                <profile>4</profile> <!-- Instructeur -->
            </place>
        </placeList>
    </rule>
    <rule>...</rule>
</ruleList>

attribut needs

L'attribut needs peut être utilisé pour les éléments :

  • activityTypeList
  • place

Il contient un ou plusieurs droits qui sont requis par l'utilisateur effectuant la saisie pour que la règle puisse s'appliquer.

Lorsqu'il n'y a qu'un droit de requis, il faut écrire needs="nomDuDroit".

Lorsqu'il y a plusieurs droits possibles, un seul étant requis, il faut commencer par le signe * puis lister chaque droit en l'entourant de parenthèses : needs="*(bookAlone)(bookWithInstr).

ruleList

Élément racine de la structure XML ne peut contenir comme élément enfant que des éléments "rule" qui correspondent, chacun, à une règle.

Il n'y pas d'attribut possible.

rule

Définit une règle.

Les éléments possibles sont :

  • formulaList
  • activityTypeList
  • resourceList
  • placeList

Il n'y a pas d'attribut possible.

Chaque règle définit les types d'activités, types de ressources et places qui la rendent compatible.

L'exemple suivant définit une règle qui autorise une saisie pour le type d'activité Local, les types de ressources F-001 ou F-002 et pour laquelle il faut exactement 1 utilisateur avec le profil Pilote à la place 0. Le statut attribué sera celui de numéro 1. De plus, La personne qui fait la réservation doit avoir le droit "bookAlone" et si elle dispose du droit "bookAnyone" alors elle verra en plus la liste des utilisateurs compatibles avec cette règle pour lui permettre d'en choisir une : <xml><rule>

       <activityTypeList needs="bookAlone">
           <activityType>1</activityType> 
       </activityTypeList>
       <resourceList minQty="1" maxQty="1">
           <resourceType>1</resourceType> 
           <resourceType>2</resourceType> 
       </resourceList>
       <placeList>
           <place index="0"  minQty="1" maxQty="1" status="1" needs="bookAnyone"> 
               <profile>2</profile> 
           </place>
       </placeList>
   </rule></xml>

formulaList

Contient la liste des formules que la règle doit respecter au travers des éléments formula.

formula

Doit contenir les attributs :

  • action : indique l'action concernée pour la vérification de la formule. Si l'action effectuée par l'utilisateur n'est pas celle de la formule, alors la formule n'est pas vérifiée. Par contre, la règle peut quand être compatible. Il est possible de remplacer le nom d'une action par * pour indiquer que la formule doit être vérifiée quelque soit l'action.
  • title : pour indiquer le message d'alerte devant s'afficher lorsque la formule n'est pas respectée

Le contenu de l'élément formula est une formule qui est testée lors de la saisie.

Attention : dans la formule, pour les signes de comparaison supérieur ou inférieur, il faut saisir leur équivalent HTML :

  • > doit être remplacé par &gt;
  • < doit être remplacé par &lt;
  • >= doit être remplacé &gt;=
  • <= doit être remplacé &lt;=

Exemple : <xml> <formula action="update" title="Vous ne pouvez pas faire de réservation ayant une durée supérieure à 30 minutes.">(%DURATION <= 300)</formula></xml>

activityTypeList

Contient la liste des types d'activités qui sont compatibles avec la règle.

Peut contenir l'attribut needs.

activityType

Contient l'identifiant d'un type d'activité.

resourceList

Contient la liste des types de ressources qui sont compatibles avec la règle.

Peut contenir les attributs maxQty et minQty pour définir le nombre de ressources maximum et minimum.

placeList

Contient la liste définissant les places.

place

Contient la définition de chaque place.

Peut contenir des éléments profile pour indiquer un profil requis parmi plusieurs pour qu'un utilisateur puisse occuper la place.

Doit contenir l'attribut index pour numéroter la place définie.

Peut contenir les attributs maxQty, minQty, needs et status.

L'attribut needs permet de définir le droit requis pour l'utilisateur effectuant la saisie afin qu'il puisse choisir l'utilisateur dans la liste des utilisateurs compatibles. typiquement, cet attribut est utilisé ainsi : needs="bookAnyone".

L'attribut status permet de définir le statut de la personne à laquelle on attribut la place. Cette définition se fait en utilisant l'identifiant du statut. Exemple : status="1".

profile

Contient l'identifiant du profile requis.

Wildcard

Le caractère * peut être utilisé dans les éléments resourceType. Il indique que la règle s'applique à tous les types de ressources existants de la plateforme.

Exemple avec wildcard : <xml><resourceTypeList minQty="1" maxQty="1">

   <resourceType>*</resourceType>

</resourceTypeList></xml>

Exemple sans wildcard : <xml><resourceTypeList minQty="1" maxQty="1">

   <resourceType>1</resourceType>
   <resourceType>2</resourceType>
   <resourceType>3</resourceType>

</resourceTypeList></xml>